Projet

Général

Profil

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

Voir les différences:

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

This setting is filled by hobo's setting loader
 combo/apps/wcs/README    |  6 ++++--
 combo/apps/wcs/models.py | 26 ++++++++++++--------------
 combo/apps/wcs/utils.py  |  8 ++------
 combo/settings.py        |  3 +++
 debian/debian_config.py  |  4 ++++
 tests/settings.py        |  4 +++-
 tests/test_wcs.py        |  7 ++++---
 7 files changed, 32 insertions(+), 26 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 'wcs' in settings.KNOWN_SERVICES
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['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['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')
......
133 132
    is_enabled = classmethod(is_wcs_enabled)
134 133

  
135 134
    def get_blurp_renderer(self, context):
135
        wcs_sites = settings.KNOWN_SERVICES['wcs']
136 136
        if self.wcs_site:
137 137
            try:
138
                wcs_sites = {self.wcs_site: settings.COMBO_WCS_SITES[self.wcs_site]}
138
                wcs_sites = {self.wcs_site: wcs_sites[self.wcs_site]}
139 139
            except KeyError:
140 140
                # in case of the site disappeared from settings
141 141
                return cmsplugin_blurp.utils.create_renderer(self.variable_name, {
......
143 143
                    'template': ''
144 144
                })
145 145

  
146
        else:
147
            wcs_sites = settings.COMBO_WCS_SITES
148

  
149 146
        sources = []
150 147
        for slug, wcs_site in wcs_sites.items():
151 148
            url = wcs_site.get('url')
......
196 193
        abstract = True
197 194

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

  
308 305
    def get_default_form_class(self):
309
        if len(settings.COMBO_WCS_SITES) == 1:
306
        if len(settings.KNOWN_SERVICES['wcs']) == 1:
310 307
            return None
311
        combo_wcs_sites = [(x, y.get('title')) for x, y in settings.COMBO_WCS_SITES.items()]
308
        combo_wcs_sites = [(x, y.get('title')) for x, y in settings.KNOWN_SERVICES['wcs'].items()]
312 309
        return model_forms.modelform_factory(self.__class__,
313 310
                fields=['wcs_site'],
314 311
                widgets={'wcs_site': Select(choices=combo_wcs_sites)})
315 312

  
316 313
    def render(self, context):
317 314
        tmpl = template.loader.get_template(self.template_name)
315
        wcs_sites = settings.KNOWN_SERVICES['wcs']
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 = wcs_sites.keys()[0]
318
        context['url'] = wcs_sites.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:
41
                label = title
42
            else:
43
                label = '%s : %s' % (site_title, title)
39
            label = '%s : %s' % (site_title, title)
44 40
            reference = '%s:%s' % (wcs_key, slug)
45 41
            references.append((reference, label))
46 42
    references.sort(lambda x, y: cmp(x[1], y[1]))
combo/settings.py
196 196

  
197 197
MELLON_IDENTITY_PROVIDERS = []
198 198

  
199
# known deployed services
200
KNOWN_SERVICES = {}
201

  
199 202
local_settings_file = os.environ.get('COMBO_SETTINGS_FILE',
200 203
        os.path.join(os.path.dirname(__file__), 'local_settings.py'))
201 204
if os.path.exists(local_settings_file):
debian/debian_config.py
12 12
#
13 13
execfile('/usr/lib/hobo/debian_config_common.py')
14 14

  
15
TENANT_SETTINGS_LOADERS += (
16
    'hobo.multitenant.settings_loaders.KnownServices',
17
)
18

  
15 19
#
16 20
# local settings
17 21
#
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
-