예제 #1
0
 def to_settings(self, data, settings):
     from aldryn_addons.utils import djsenv as env
     if data['templates']:
         settings['DJANGOCMS_GOOGLEMAP_TEMPLATES'] = [
             (item, item) for item in split_and_strip(data['templates'])
         ]
     # We prefer the environment variables. But fallback to the form field.
     settings['DJANGOCMS_GOOGLEMAP_API_KEY'] = env(
         'DJANGOCMS_GOOGLEMAP_API_KEY',
         env(
             'GOOGLEMAP_API_KEY',
             data['api_key'],
         ))
     return settings
예제 #2
0
    def single_process_settings(self, env, settings):
        from multisite import SiteID
        settings['SITE_ID'] = SiteID(default=int(env('SITE_ID', 1)))
        settings['INSTALLED_APPS'].append('multisite')

        MIDDLEWARE_CLASSES = settings['MIDDLEWARE_CLASSES']

        # multisite.middleware.DynamicSiteMiddleware must be before
        # cms.middleware.utils.ApphookReloadMiddleware
        MIDDLEWARE_CLASSES.insert(
            MIDDLEWARE_CLASSES.index(
                'cms.middleware.utils.ApphookReloadMiddleware'),
            'django_multisite_plus.middlewares.DynamicSiteMiddleware',
        )

        # djangocms_multisite.middleware.CMSMultiSiteMiddleware must be after
        # cms.middleware.utils.ApphookReloadMiddleware
        MIDDLEWARE_CLASSES.insert(
            MIDDLEWARE_CLASSES.index(
                'cms.middleware.utils.ApphookReloadMiddleware') + 1,
            'django_multisite_plus.middlewares.CMSMultiSiteMiddleware',
        )

        # djangocms-multisite has it's own version of cms urls that cache
        # correctly. This will no longer be necessary for cms versions that
        # include https://github.com/divio/django-cms/pull/5832
        settings['ADDON_URLS_I18N_LAST'] = 'django_multisite_plus.cms_urls'
예제 #3
0
 def to_settings(self, data, settings):
     from aldryn_addons.utils import djsenv as env
     if data['templates']:
         settings['DJANGOCMS_GOOGLEMAP_TEMPLATES'] = [
             (item, item)
             for item in split_and_strip(data['templates'])
         ]
     # We prefer the environment variables. But fallback to the form field.
     settings['DJANGOCMS_GOOGLEMAP_API_KEY'] = env(
         'DJANGOCMS_GOOGLEMAP_API_KEY',
         env(
             'GOOGLEMAP_API_KEY',
             data['api_key'],
         )
     )
     return settings
예제 #4
0
    def to_settings(self, data, settings):
        # django-multisite annoyingly requires a working database and cache
        # at import time. So in "build" mode (used for collectstatic at build
        # time) we don't configure it.
        # Also if the CACHE_URL is locmem (used when calling
        # createcachetable) we ignore multisite.
        # TODO: find solutions upstream in django-multisite to prevent this
        #       awkward CACHE_URL "if" situation.
        from aldryn_addons.utils import djsenv as env, boolean_ish
        DJANGO_MODE = env('DJANGO_MODE')
        settings['INSTALLED_APPS'].append('django_multisite_plus')


        settings['DJANGO_MULTISITE_PLUS_REWRITE_DOMAINS'] = boolean_ish(env(
            'DJANGO_MULTISITE_PLUS_REWRITE_DOMAINS',
            data['rewrite_domains'],
        ))
        settings['DJANGO_MULTISITE_PLUS_REWRITE_DOMAIN_FORMAT'] = env(
            'DJANGO_MULTISITE_PLUS_REWRITE_DOMAIN_FORMAT',
            data['rewrite_domain_format'] or '{}.divio.me',
        )
        settings['DJANGO_MULTISITE_PLUS_AUTO_POPULATE_SITES'] = boolean_ish(env(
            'DJANGO_MULTISITE_PLUS_AUTO_POPULATE_SITES',
            data['auto_populate_sites'],
        ))
        settings['DJANGO_MULTISITE_PLUS_USE_REAL_DOMAIN'] = boolean_ish(env(
            'DJANGO_MULTISITE_PLUS_USE_REAL_DOMAIN',
            False,
        ))
        settings['DJANGO_MULTISITE_PLUS_SITES'] = env(
            'DJANGO_MULTISITE_PLUS_SITES',
            {},
        )

        mode = env('DJANGO_MULTISITE_PLUS_MODE', data['mode'])
        settings['DJANGO_MULTISITE_PLUS_MODE'] = mode
        if DJANGO_MODE == 'build' and settings['CACHE_URL'] == 'locmem://':
            return settings

        if mode == 'single-process':
            self.single_process_settings(env, settings)
        elif mode == 'multi-process':
            self.multi_process_settings(settings)
        else:
            raise RuntimeError(
                (
                    'DJANGO_MULTISITE_PLUS_MODE must be either single-process '
                    'or multi-process. Not {}'
                ).format(mode)
            )
        return settings