Commit b5a489a0986baa6bd399a9449ace8914ba129204
1 parent
fb7c8350
Exists in
master
and in
34 other branches
Handle .yaml plugins menu
Signed-off-by: Alexandre Barbosa <alexandreab@live.com> Signed-off-by: Gustavo Jaruga <darksshades@gmail.com>
Showing
1 changed file
with
27 additions
and
2 deletions
Show diff stats
colab/utils/conf.py
... | ... | @@ -49,12 +49,17 @@ def load_yaml_settings(): |
49 | 49 | |
50 | 50 | yaml_settings = _load_yaml_file(yaml_path) |
51 | 51 | |
52 | + parse_yml_menus(yaml_settings) | |
53 | + | |
52 | 54 | # Try to read settings from settings.d |
53 | 55 | if os.path.exists(settings_dir): |
54 | 56 | for file_name in os.listdir(settings_dir): |
55 | 57 | if file_name.endswith('.yaml') or file_name.endswith('yml'): |
56 | 58 | file_path = os.path.join(settings_dir, file_name) |
57 | 59 | yaml_settings_d = _load_yaml_file(file_path) |
60 | + | |
61 | + parse_yml_menus(yaml_settings_d) | |
62 | + | |
58 | 63 | yaml_settings.update(yaml_settings_d) |
59 | 64 | |
60 | 65 | return yaml_settings or {} |
... | ... | @@ -131,17 +136,37 @@ def load_colab_apps(): |
131 | 136 | fields = ['urls', 'menu', 'upstream', 'middlewares', |
132 | 137 | 'dependencies', 'context_processors'] |
133 | 138 | |
134 | - app_name = getattr(py_settings_d, 'name', None) | |
139 | + app_name = py_settings_d.get('name') | |
135 | 140 | if not app_name: |
136 | 141 | warnings.warn("Plugin missing name variable") |
137 | 142 | continue |
138 | 143 | |
139 | 144 | COLAB_APPS[app_name] = {} |
140 | 145 | for key in fields: |
141 | - value = getattr(py_settings_d, key, None) | |
146 | + value = py_settings_d.get(key) | |
142 | 147 | if value: |
143 | 148 | COLAB_APPS[app_name][key] = value |
144 | 149 | |
145 | 150 | sys.path.remove(plugins_dir) |
146 | 151 | |
147 | 152 | return {'COLAB_APPS': COLAB_APPS} |
153 | + | |
154 | + | |
155 | +def parse_yml_menus(yaml_settings): | |
156 | + if 'COLAB_APPS' in yaml_settings: | |
157 | + for key, plugin in yaml_settings['COLAB_APPS'].items(): | |
158 | + if 'menu' in plugin: | |
159 | + parse_yml_tuples(yaml_settings['COLAB_APPS'][key]['menu']) | |
160 | + | |
161 | + | |
162 | +def parse_yml_tuples(menu): | |
163 | + dict_links = menu['links'] | |
164 | + dict_auth_links = menu['auth_links'] | |
165 | + menu['links'] = tuple() | |
166 | + menu['auth_links'] = tuple() | |
167 | + | |
168 | + for key, value in dict_links.items(): | |
169 | + menu['links'] += ((key, value),) | |
170 | + | |
171 | + for key, value in dict_auth_links.items(): | |
172 | + menu['auth_links'] += ((key, value),) | ... | ... |