0001-settings-deployed-services-exposed-in-KNOWN_SERVICES.patch
hobo/multitenant/settings_loaders.py | ||
---|---|---|
1 | 1 |
import os |
2 | 2 |
import json |
3 | 3 |
import urlparse |
4 |
import hashlib |
|
4 | 5 |
from importlib import import_module |
5 | 6 | |
6 | 7 |
from django.conf import settings |
... | ... | |
31 | 32 |
raise NotImplemented |
32 | 33 | |
33 | 34 | |
35 |
class KnownServices(FileBaseSettingsLoader): |
|
36 |
FILENAME = 'hobo.json' |
|
37 | ||
38 |
def update_settings_from_path(self, tenant_settings, path): |
|
39 |
known_services = {} |
|
40 |
with file(path) as f: |
|
41 |
hobo_json = json.load(f) |
|
42 |
services = hobo_json.get('services') |
|
43 |
base_url, secret = [(s.get('base_url'), s.get('secret_key')) |
|
44 |
for s in services if s.get('this')][0] |
|
45 |
orig = urlparse.urlparse(base_url).netloc.split(':')[0] |
|
46 |
secret = hashlib.sha1(orig+secret).hexdigest() |
|
47 | ||
48 |
for service in services: |
|
49 |
service_id = service.get('service-id') |
|
50 | ||
51 |
service_data = { |
|
52 |
'url': service.get('base_url'), |
|
53 |
'title': service.get('title'), |
|
54 |
'orig': orig, |
|
55 |
'secret': secret, |
|
56 |
'variables': service.get('variables') |
|
57 |
} |
|
58 |
if service_id in known_services: |
|
59 |
known_services[service_id][service.get('slug')] = service_data |
|
60 |
else: |
|
61 |
known_services[service_id] = { |
|
62 |
service.get('slug'): service_data |
|
63 |
} |
|
64 | ||
65 |
tenant_settings.KNOWN_SERVICES = known_services |
|
66 | ||
67 | ||
34 | 68 |
class TemplateVars(FileBaseSettingsLoader): |
35 | 69 |
FILENAME = 'hobo.json' |
36 | 70 | |
37 |
- |