0001-deployed-services-declared-in-KNOWN_SERVICES-setting.patch
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 |
- |