Commit 1607da034dcfc8aec528c6cac0f8a16653e50a55
Committed by
Gust
1 parent
83dc32cc
Exists in
master
and in
6 other branches
Added support to install apps arbitrary apps
Now apps can be installed from settings.yml
Showing
5 changed files
with
33 additions
and
19 deletions
Show diff stats
| ... | ... | @@ -0,0 +1,21 @@ |
| 1 | + | |
| 2 | +from django.conf import settings | |
| 3 | +from django.conf.urls import patterns, url, include | |
| 4 | +from django.core.exceptions import ImproperlyConfigured | |
| 5 | + | |
| 6 | +undef_url_include_msg = (u'COLAB_APP with urls must define ' | |
| 7 | + 'the `include` attribute') | |
| 8 | + | |
| 9 | +urlpatterns = patterns('') | |
| 10 | + | |
| 11 | +for app_name, app in settings.COLAB_APPS.items(): | |
| 12 | + if not app or 'urls' not in app: | |
| 13 | + continue | |
| 14 | + | |
| 15 | + urls = app.get('urls') | |
| 16 | + if not urls.get('include'): | |
| 17 | + raise ImproperlyConfigured(undef_url_include_msg) | |
| 18 | + urlpatterns += patterns('', | |
| 19 | + url(urls.get('prefix', r''), include(urls['include'], | |
| 20 | + namespace=urls.get('namespace'))), | |
| 21 | + ) | ... | ... |
colab/settings.py
| ... | ... | @@ -50,7 +50,6 @@ INSTALLED_APPS = ( |
| 50 | 50 | 'hitcounter', |
| 51 | 51 | 'i18n_model', |
| 52 | 52 | 'mptt', |
| 53 | - 'dpaste', | |
| 54 | 53 | 'taggit', |
| 55 | 54 | |
| 56 | 55 | # Own apps |
| ... | ... | @@ -292,19 +291,6 @@ CONVERSEJS_SHOW_ONLY_ONLINE_USERS = True |
| 292 | 291 | # Tastypie settings |
| 293 | 292 | TASTYPIE_DEFAULT_FORMATS = ['json', ] |
| 294 | 293 | |
| 295 | -# Dpaste settings | |
| 296 | -DPASTE_EXPIRE_CHOICES = ( | |
| 297 | - ('onetime', _(u'One Time Snippet')), | |
| 298 | - (3600, _(u'In one hour')), | |
| 299 | - (3600 * 24 * 7, _(u'In one week')), | |
| 300 | - (3600 * 24 * 30, _(u'In one month')), | |
| 301 | - ('never', _(u'Never')), | |
| 302 | -) | |
| 303 | -DPASTE_EXPIRE_DEFAULT = DPASTE_EXPIRE_CHOICES[4][0] | |
| 304 | -DPASTE_DEFAULT_GIST_DESCRIPTION = 'Gist created from Colab DPaste' | |
| 305 | -DPASTE_DEFAULT_GIST_NAME = 'colab_paste' | |
| 306 | -DPASTE_LEXER_DEFAULT = 'text' | |
| 307 | - | |
| 308 | 294 | from .utils.conf import load_yaml_settings |
| 309 | 295 | locals().update(load_yaml_settings()) |
| 310 | 296 | |
| ... | ... | @@ -328,3 +314,8 @@ PROXIED_APPS = locals().get('PROXIED_APPS') or {} |
| 328 | 314 | |
| 329 | 315 | for app_label in PROXIED_APPS.keys(): |
| 330 | 316 | INSTALLED_APPS += ('colab.proxy.{}'.format(app_label),) |
| 317 | + | |
| 318 | +COLAB_APPS = locals().get('COLAB_APPS') or {} | |
| 319 | + | |
| 320 | +for app in COLAB_APPS: | |
| 321 | + INSTALLED_APPS += (app,) | ... | ... |
colab/urls.py
| ... | ... | @@ -7,8 +7,7 @@ from django.views.generic import RedirectView |
| 7 | 7 | |
| 8 | 8 | admin.autodiscover() |
| 9 | 9 | |
| 10 | -urlpatterns = patterns( | |
| 11 | - '', | |
| 10 | +urlpatterns = patterns('', | |
| 12 | 11 | url(r'^robots.txt$', 'colab.home.views.robots', name='robots'), |
| 13 | 12 | url(r'^dashboard$', 'colab.home.views.dashboard', name='dashboard'), |
| 14 | 13 | url(r'^$', RedirectView.as_view(url=settings.COLAB_HOME_URL), name='home'), |
| ... | ... | @@ -35,8 +34,6 @@ urlpatterns = patterns( |
| 35 | 34 | |
| 36 | 35 | url(r'^planet/', include('feedzilla.urls')), |
| 37 | 36 | |
| 38 | - url(r'paste/', include('dpaste.urls.dpaste')), | |
| 39 | - | |
| 40 | 37 | # Uncomment the next line to enable the admin: |
| 41 | 38 | url(r'^colab/admin/', include(admin.site.urls)), |
| 42 | 39 | |
| ... | ... | @@ -44,6 +41,8 @@ urlpatterns = patterns( |
| 44 | 41 | url(r'^gitlab/', include('colab.proxy.gitlab.urls')), |
| 45 | 42 | url(r'^social/', include('colab.proxy.noosfero.urls')), |
| 46 | 43 | url(r'^ci/', include('colab.proxy.jenkins.urls')), |
| 44 | + | |
| 45 | + url(r'', include('colab.plugins.urls')), | |
| 47 | 46 | ) |
| 48 | 47 | |
| 49 | 48 | if settings.DEBUG: | ... | ... |
colab/utils/conf.py
| ... | ... | @@ -2,6 +2,8 @@ |
| 2 | 2 | import os |
| 3 | 3 | import yaml |
| 4 | 4 | |
| 5 | +import yamlordereddictloader | |
| 6 | + | |
| 5 | 7 | from django.core.exceptions import ImproperlyConfigured |
| 6 | 8 | |
| 7 | 9 | |
| ... | ... | @@ -14,7 +16,8 @@ class InaccessibleYAMLSettings(ImproperlyConfigured): |
| 14 | 16 | def _load_yaml_file(yaml_path): |
| 15 | 17 | try: |
| 16 | 18 | with open(yaml_path) as yaml_file: |
| 17 | - yaml_settings = yaml.load(yaml_file.read()) | |
| 19 | + yaml_settings = yaml.load(yaml_file.read(), | |
| 20 | + yamlordereddictloader.Loader) | |
| 18 | 21 | except IOError: |
| 19 | 22 | msg = ('Could not open settings file {}. Please ' |
| 20 | 23 | 'check if the file exists and if user ' | ... | ... |