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