Projet

Général

Profil

0001-deployed-services-declared-in-KNOWN_SERVICES-setting.patch

Voir les différences:

Subject: [PATCH 1/2] deployed services declared in KNOWN_SERVICES setting
 (#6711)

 combo/apps/wcs/README    |  6 ++++--
 combo/apps/wcs/models.py | 24 +++++++++++-------------
 combo/apps/wcs/utils.py  |  5 ++---
 tests/settings.py        |  4 +++-
 tests/test_wcs.py        |  7 ++++---
 5 files changed, 24 insertions(+), 22 deletions(-)
combo/apps/wcs/README
3 3

  
4 4
INSTALLED_APPS += ('combo.apps.wcs',)
5 5

  
6
COMBO_WCS_SITES = {
7
        'default': {'title': 'wcs', 'url': 'http://wcs/'},
6
KNOWN_SERVICES = {
7
        'wcs': {
8
                'default': {'title': 'wcs', 'url': 'http://wcs/'},
9
        }
8 10
}
combo/apps/wcs/models.py
31 31

  
32 32
from .utils import get_wcs_json
33 33

  
34

  
35 34
def is_wcs_enabled(cls):
36
    return hasattr(settings, 'COMBO_WCS_SITES') and settings.COMBO_WCS_SITES
35
    return hasattr(settings, 'KNOWN_SERVICES') and settings.KNOWN_SERVICES.get('wcs')
37 36

  
38 37
@register_cell_class
39 38
class WcsFormCell(CellBase):
......
54 53
    def save(self, *args, **kwargs):
55 54
        if self.formdef_reference:
56 55
            wcs_key, form_slug = self.formdef_reference.split(':')
57
            wcs_site = settings.COMBO_WCS_SITES.get(wcs_key)
56
            wcs_site = settings.KNOWN_SERVICES.get('wcs', {}).get(wcs_key)
58 57
            forms_response_json = get_wcs_json(wcs_site.get('url') + 'json')
59 58
            for form in forms_response_json:
60 59
                slug = form.get('slug')
......
90 89
    def save(self, *args, **kwargs):
91 90
        if self.category_reference:
92 91
            wcs_key, category_slug = self.category_reference.split(':')
93
            wcs_site = settings.COMBO_WCS_SITES.get(wcs_key)
92
            wcs_site = settings.KNOWN_SERVICES.get('wcs', {}).get(wcs_key)
94 93
            categories_response_json = get_wcs_json(wcs_site.get('url') + 'categories')
95 94
            for category in categories_response_json.get('data'):
96 95
                slug = category.get('slug')
......
135 134
    def get_blurp_renderer(self, context):
136 135
        if self.wcs_site:
137 136
            try:
138
                wcs_sites = {self.wcs_site: settings.COMBO_WCS_SITES[self.wcs_site]}
137
                wcs_sites = {self.wcs_site: settings.KNOWN_SERVICES['wcs'][self.wcs_site]}
139 138
            except KeyError:
140 139
                # in case of the site disappeared from settings
141 140
                return cmsplugin_blurp.utils.create_renderer(self.variable_name, {
142 141
                    'class': 'cmsplugin_blurp.renderers.template.Renderer',
143 142
                    'template': ''
144 143
                })
145

  
146 144
        else:
147
            wcs_sites = settings.COMBO_WCS_SITES
145
            wcs_sites = settings.KNOWN_SERVICES['wcs']
148 146

  
149 147
        sources = []
150 148
        for slug, wcs_site in wcs_sites.items():
......
196 194
        abstract = True
197 195

  
198 196
    def get_default_form_class(self):
199
        if len(settings.COMBO_WCS_SITES) == 1:
197
        if len(settings.KNOWN_SERVICES.get('wcs')) == 1:
200 198
            return None
201 199
        combo_wcs_sites = [('', _('All'))]
202
        combo_wcs_sites.extend([(x, y.get('title')) for x, y in settings.COMBO_WCS_SITES.items()])
200
        combo_wcs_sites.extend([(x, y.get('title')) for x, y in settings.KNOWN_SERVICES.get('wcs', {}).items()])
203 201
        return model_forms.modelform_factory(self.__class__,
204 202
                fields=['wcs_site'],
205 203
                widgets={'wcs_site': Select(choices=combo_wcs_sites)})
......
306 304
        verbose_name = _('Tracking Code Input')
307 305

  
308 306
    def get_default_form_class(self):
309
        if len(settings.COMBO_WCS_SITES) == 1:
307
        if len(settings.KNOWN_SERVICES.get('wcs')) == 1:
310 308
            return None
311
        combo_wcs_sites = [(x, y.get('title')) for x, y in settings.COMBO_WCS_SITES.items()]
309
        combo_wcs_sites = [(x, y.get('title')) for x, y in settings.KNOWN_SERVICES.get('wcs', {}).items()]
312 310
        return model_forms.modelform_factory(self.__class__,
313 311
                fields=['wcs_site'],
314 312
                widgets={'wcs_site': Select(choices=combo_wcs_sites)})
......
316 314
    def render(self, context):
317 315
        tmpl = template.loader.get_template(self.template_name)
318 316
        if not self.wcs_site:
319
            self.wcs_site = settings.COMBO_WCS_SITES.keys()[0]
320
        context['url'] = settings.COMBO_WCS_SITES.get(self.wcs_site).get('url')
317
            self.wcs_site = settings.KNOWN_SERVICES['wcs'].keys()[0]
318
        context['url'] = settings.KNOWN_SERVICES['wcs'].get(self.wcs_site).get('url')
321 319
        return tmpl.render(context)
combo/apps/wcs/utils.py
28 28

  
29 29
def get_wcs_options(url):
30 30
    references = []
31
    for wcs_key in settings.COMBO_WCS_SITES:
32
        wcs_site = settings.COMBO_WCS_SITES.get(wcs_key)
31
    for wcs_key, wcs_site in settings.KNOWN_SERVICES.get('wcs', {}).iteritems():
33 32
        site_title = wcs_site.get('title')
34 33
        response_json = get_wcs_json(wcs_site.get('url') + url)
35 34
        if type(response_json) is dict:
......
37 36
        for element in response_json:
38 37
            slug = element.get('slug')
39 38
            title = element.get('title')
40
            if len(settings.COMBO_WCS_SITES) == 1:
39
            if len(settings.KNOWN_SERVICES['wcs']) == 1:
41 40
                label = title
42 41
            else:
43 42
                label = '%s : %s' % (site_title, title)
tests/settings.py
2 2

  
3 3
LANGUAGE_CODE = 'en-us'
4 4

  
5
COMBO_WCS_SITES = {
5
KNOWN_SERVICES = {
6
    'wcs': {
6 7
        'default': {'title': 'test', 'url': 'http://127.0.0.1:8999/',
7 8
            'secret': 'combo', 'orig': 'combo'},
8 9
        'other': {'title': 'test2', 'url': 'http://127.0.0.2:8999/',
9 10
            'secret': 'combo', 'orig': 'combo'},
11
    }
10 12
}
11 13

  
12 14
import tempfile
tests/test_wcs.py
223 223
    try:
224 224
        # check there is not wcs_site field if there's a single one defined in
225 225
        # the configuration
226
        temp_settings = settings.COMBO_WCS_SITES.copy()
227
        settings.COMBO_WCS_SITES = {'default': settings.COMBO_WCS_SITES['default']}
226
        temp_settings = settings.KNOWN_SERVICES.copy()
227
        default = settings.KNOWN_SERVICES['wcs']['default']
228
        settings.KNOWN_SERVICES = {'wcs': {'default': default}}
228 229
        form_class = cell.get_default_form_class()
229 230
        assert form_class is None
230 231
    finally:
231 232
        # restore original settings
232
        settings.COMBO_WCS_SITES = temp_settings
233
        settings.KNOWN_SERVICES = temp_settings
233 234

  
234 235
@wcsctl_present
235 236
def test_current_forms_cell_render():
236
-