From f17f8010134b0a0277d802ac9205b8d8b197bebb Mon Sep 17 00:00:00 2001 From: Serghei Mihai Date: Tue, 12 May 2015 01:03:23 +0200 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(-) diff --git a/combo/apps/wcs/README b/combo/apps/wcs/README index b4b638f..5b9eec1 100644 --- a/combo/apps/wcs/README +++ b/combo/apps/wcs/README @@ -3,6 +3,8 @@ Combo/wcs integration INSTALLED_APPS += ('combo.apps.wcs',) -COMBO_WCS_SITES = { - 'default': {'title': 'wcs', 'url': 'http://wcs/'}, +KNOWN_SERVICES = { + 'wcs': { + 'default': {'title': 'wcs', 'url': 'http://wcs/'}, + } } diff --git a/combo/apps/wcs/models.py b/combo/apps/wcs/models.py index a63796d..dde1353 100644 --- a/combo/apps/wcs/models.py +++ b/combo/apps/wcs/models.py @@ -31,9 +31,8 @@ from combo.utils import NothingInCacheException from .utils import get_wcs_json - def is_wcs_enabled(cls): - return hasattr(settings, 'COMBO_WCS_SITES') and settings.COMBO_WCS_SITES + return 'wcs' in settings.KNOWN_SERVICES @register_cell_class class WcsFormCell(CellBase): @@ -54,7 +53,7 @@ class WcsFormCell(CellBase): def save(self, *args, **kwargs): if self.formdef_reference: wcs_key, form_slug = self.formdef_reference.split(':') - wcs_site = settings.COMBO_WCS_SITES.get(wcs_key) + wcs_site = settings.KNOWN_SERVICES['wcs'].get(wcs_key) forms_response_json = get_wcs_json(wcs_site.get('url') + 'json') for form in forms_response_json: slug = form.get('slug') @@ -90,7 +89,7 @@ class WcsCommonCategoryCell(CellBase): def save(self, *args, **kwargs): if self.category_reference: wcs_key, category_slug = self.category_reference.split(':') - wcs_site = settings.COMBO_WCS_SITES.get(wcs_key) + wcs_site = settings.KNOWN_SERVICES['wcs'].get(wcs_key) categories_response_json = get_wcs_json(wcs_site.get('url') + 'categories') for category in categories_response_json.get('data'): slug = category.get('slug') @@ -133,9 +132,10 @@ class WcsBlurpMixin(object): is_enabled = classmethod(is_wcs_enabled) def get_blurp_renderer(self, context): + wcs_sites = settings.KNOWN_SERVICES['wcs'] if self.wcs_site: try: - wcs_sites = {self.wcs_site: settings.COMBO_WCS_SITES[self.wcs_site]} + wcs_sites = {self.wcs_site: wcs_sites[self.wcs_site]} except KeyError: # in case of the site disappeared from settings return cmsplugin_blurp.utils.create_renderer(self.variable_name, { @@ -143,9 +143,6 @@ class WcsBlurpMixin(object): 'template': '' }) - else: - wcs_sites = settings.COMBO_WCS_SITES - sources = [] for slug, wcs_site in wcs_sites.items(): url = wcs_site.get('url') @@ -196,10 +193,10 @@ class WcsDataBaseCell(CellBase, WcsBlurpMixin): abstract = True def get_default_form_class(self): - if len(settings.COMBO_WCS_SITES) == 1: + if len(settings.KNOWN_SERVICES['wcs']) == 1: return None combo_wcs_sites = [('', _('All'))] - combo_wcs_sites.extend([(x, y.get('title')) for x, y in settings.COMBO_WCS_SITES.items()]) + combo_wcs_sites.extend([(x, y.get('title')) for x, y in settings.KNOWN_SERVICES['wcs'].items()]) return model_forms.modelform_factory(self.__class__, fields=['wcs_site'], widgets={'wcs_site': Select(choices=combo_wcs_sites)}) @@ -306,16 +303,17 @@ class TrackingCodeInputCell(CellBase): verbose_name = _('Tracking Code Input') def get_default_form_class(self): - if len(settings.COMBO_WCS_SITES) == 1: + if len(settings.KNOWN_SERVICES['wcs']) == 1: return None - combo_wcs_sites = [(x, y.get('title')) for x, y in settings.COMBO_WCS_SITES.items()] + combo_wcs_sites = [(x, y.get('title')) for x, y in settings.KNOWN_SERVICES['wcs'].items()] return model_forms.modelform_factory(self.__class__, fields=['wcs_site'], widgets={'wcs_site': Select(choices=combo_wcs_sites)}) def render(self, context): tmpl = template.loader.get_template(self.template_name) + wcs_sites = settings.KNOWN_SERVICES['wcs'] if not self.wcs_site: - self.wcs_site = settings.COMBO_WCS_SITES.keys()[0] - context['url'] = settings.COMBO_WCS_SITES.get(self.wcs_site).get('url') + self.wcs_site = wcs_sites.keys()[0] + context['url'] = wcs_sites.get(self.wcs_site).get('url') return tmpl.render(context) diff --git a/combo/apps/wcs/utils.py b/combo/apps/wcs/utils.py index d25aabf..15e544a 100644 --- a/combo/apps/wcs/utils.py +++ b/combo/apps/wcs/utils.py @@ -28,8 +28,7 @@ def get_wcs_json(url): def get_wcs_options(url): references = [] - for wcs_key in settings.COMBO_WCS_SITES: - wcs_site = settings.COMBO_WCS_SITES.get(wcs_key) + for wcs_key, wcs_site in settings.KNOWN_SERVICES.get('wcs', {}).iteritems(): site_title = wcs_site.get('title') response_json = get_wcs_json(wcs_site.get('url') + url) if type(response_json) is dict: @@ -37,10 +36,7 @@ def get_wcs_options(url): for element in response_json: slug = element.get('slug') title = element.get('title') - if len(settings.COMBO_WCS_SITES) == 1: - label = title - else: - label = '%s : %s' % (site_title, title) + label = '%s : %s' % (site_title, title) reference = '%s:%s' % (wcs_key, slug) references.append((reference, label)) references.sort(lambda x, y: cmp(x[1], y[1])) diff --git a/combo/settings.py b/combo/settings.py index 25e9bac..2d258df 100644 --- a/combo/settings.py +++ b/combo/settings.py @@ -196,6 +196,9 @@ MELLON_USERNAME_TEMPLATE = '{attributes[name_id_content]}' MELLON_IDENTITY_PROVIDERS = [] +# known deployed services +KNOWN_SERVICES = {} + local_settings_file = os.environ.get('COMBO_SETTINGS_FILE', os.path.join(os.path.dirname(__file__), 'local_settings.py')) if os.path.exists(local_settings_file): diff --git a/debian/debian_config.py b/debian/debian_config.py index 26dea7d..b11c6dd 100644 --- a/debian/debian_config.py +++ b/debian/debian_config.py @@ -12,6 +12,10 @@ INSTALLED_APPS += ('mellon',) # execfile('/usr/lib/hobo/debian_config_common.py') +TENANT_SETTINGS_LOADERS += ( + 'hobo.multitenant.settings_loaders.KnownServices', +) + # # local settings # diff --git a/tests/settings.py b/tests/settings.py index 8d3b71b..a4b49ac 100644 --- a/tests/settings.py +++ b/tests/settings.py @@ -2,11 +2,13 @@ INSTALLED_APPS += ('combo.apps.wcs',) LANGUAGE_CODE = 'en-us' -COMBO_WCS_SITES = { +KNOWN_SERVICES = { + 'wcs': { 'default': {'title': 'test', 'url': 'http://127.0.0.1:8999/', 'secret': 'combo', 'orig': 'combo'}, 'other': {'title': 'test2', 'url': 'http://127.0.0.2:8999/', 'secret': 'combo', 'orig': 'combo'}, + } } import tempfile diff --git a/tests/test_wcs.py b/tests/test_wcs.py index 8a08de5..38e7c10 100644 --- a/tests/test_wcs.py +++ b/tests/test_wcs.py @@ -223,13 +223,14 @@ def test_current_forms_cell_setup(): try: # check there is not wcs_site field if there's a single one defined in # the configuration - temp_settings = settings.COMBO_WCS_SITES.copy() - settings.COMBO_WCS_SITES = {'default': settings.COMBO_WCS_SITES['default']} + temp_settings = settings.KNOWN_SERVICES.copy() + default = settings.KNOWN_SERVICES['wcs']['default'] + settings.KNOWN_SERVICES = {'wcs': {'default': default}} form_class = cell.get_default_form_class() assert form_class is None finally: # restore original settings - settings.COMBO_WCS_SITES = temp_settings + settings.KNOWN_SERVICES = temp_settings @wcsctl_present def test_current_forms_cell_render(): -- 2.1.4