wcs: use a generic KNOWN_SERVICES setting instead of COMBO_WCS_SITES (#6711)

This commit is contained in:
Serghei Mihai 2015-05-12 01:03:23 +02:00
parent 4de32236f0
commit 8bbd58a7ab
5 changed files with 24 additions and 22 deletions

View File

@ -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/'},
}
}

View File

@ -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 hasattr(settings, 'KNOWN_SERVICES') and settings.KNOWN_SERVICES.get('wcs')
@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.get('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.get('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')
@ -136,16 +135,15 @@ class WcsBlurpMixin(object):
def get_blurp_renderer(self, context):
if self.wcs_site:
try:
wcs_sites = {self.wcs_site: settings.COMBO_WCS_SITES[self.wcs_site]}
wcs_sites = {self.wcs_site: settings.KNOWN_SERVICES['wcs'][self.wcs_site]}
except KeyError:
# in case of the site disappeared from settings
return cmsplugin_blurp.utils.create_renderer(self.variable_name, {
'class': 'cmsplugin_blurp.renderers.template.Renderer',
'template': ''
})
else:
wcs_sites = settings.COMBO_WCS_SITES
wcs_sites = settings.KNOWN_SERVICES['wcs']
sources = []
for slug, wcs_site in wcs_sites.items():
@ -197,10 +195,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.get('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.get('wcs', {}).items()])
return model_forms.modelform_factory(self.__class__,
fields=['wcs_site'],
widgets={'wcs_site': Select(choices=combo_wcs_sites)})
@ -307,9 +305,9 @@ 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.get('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.get('wcs', {}).items()]
return model_forms.modelform_factory(self.__class__,
fields=['wcs_site'],
widgets={'wcs_site': Select(choices=combo_wcs_sites)})
@ -317,6 +315,6 @@ class TrackingCodeInputCell(CellBase):
def render(self, context):
tmpl = template.loader.get_template(self.template_name)
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 = settings.KNOWN_SERVICES['wcs'].keys()[0]
context['url'] = settings.KNOWN_SERVICES['wcs'].get(self.wcs_site).get('url')
return tmpl.render(context)

View File

@ -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,7 +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:
if len(settings.KNOWN_SERVICES['wcs']) == 1:
label = title
else:
label = '%s : %s' % (site_title, title)

View File

@ -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

View File

@ -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():