Esempio n. 1
0
 def enable(self):
     # Keep this code at the beginning to leave the settings unchanged
     # in case it raises an exception because INSTALLED_APPS is invalid.
     if 'INSTALLED_APPS' in self.options:
         try:
             apps.set_installed_apps(self.options['INSTALLED_APPS'])
         except Exception:
             apps.unset_installed_apps()
             raise
     override = UserSettingsHolder(settings._wrapped)
     for key, new_value in self.options.items():
         setattr(override, key, new_value)
     self.wrapped = settings._wrapped
     settings._wrapped = override
     for key, new_value in self.options.items():
         try:
             setting_changed.send(
                 sender=settings._wrapped.__class__,
                 setting=key,
                 value=new_value,
                 enter=True,
             )
         except Exception as exc:
             self.enable_exception = exc
             self.disable()
Esempio n. 2
0
 def disable(self):
     self.settings._wrapped = self.wrapped
     del self.wrapped
     for key in self.options:
         new_value = getattr(self.settings, key, None)
         setting_changed.send(sender=self.settings._wrapped.__class__,
                              setting=key, value=new_value, enter=False)
Esempio n. 3
0
 def enable(self):
     override = UserSettingsHolder(settings._wrapped)
     for key, new_value in self.options.items():
         setattr(override, key, new_value)
     settings._wrapped = override
     for key, new_value in self.options.items():
         setting_changed.send(sender=settings._wrapped.__class__, setting=key, value=new_value)
Esempio n. 4
0
 def disable(self):
     settings._wrapped = self.wrapped
     for key in self.options:
         new_value = getattr(settings, key, None)
         setting_changed.send(sender=settings._wrapped.__class__,
                              setting=key,
                              value=new_value)
Esempio n. 5
0
    def _pre_setup(self):
        """Performs any pre-test setup. This includes:

        * If the class has an 'available_apps' attribute, restricting the app
          registry to these applications, then firing post_migrate -- it must
          run with the correct set of applications for the test case.
        * If the class has a 'fixtures' attribute, installing these fixtures.
        """
        super(TransactionTestCase, self)._pre_setup()
        if self.available_apps is not None:
            apps.set_available_apps(self.available_apps)
            setting_changed.send(sender=settings._wrapped.__class__,
                                 setting='INSTALLED_APPS',
                                 value=self.available_apps,
                                 enter=True)
            for db_name in self._databases_names(include_mirrors=False):
                flush.Command.emit_post_migrate(verbosity=0, interactive=False, database=db_name)
        try:
            self._fixture_setup()
        except Exception:
            if self.available_apps is not None:
                apps.unset_available_apps()
                setting_changed.send(sender=settings._wrapped.__class__,
                                     setting='INSTALLED_APPS',
                                     value=settings.INSTALLED_APPS,
                                     enter=False)

            raise
Esempio n. 6
0
    def _post_teardown(self):
        """Performs any post-test things. This includes:

        * Flushing the contents of the database, to leave a clean slate. If
          the class has an 'available_apps' attribute, post_migrate isn't fired.
        * Force-closing the connection, so the next test gets a clean cursor.
        """
        try:
            self._fixture_teardown()
            super(TransactionTestCase, self)._post_teardown()
            # Some DB cursors include SQL statements as part of cursor
            # creation. If you have a test that does rollback, the effect of
            # these statements is lost, which can effect the operation of
            # tests (e.g., losing a timezone setting causing objects to be
            # created with the wrong time). To make sure this doesn't happen,
            # get a clean connection at the start of every test.
            for conn in connections.all():
                conn.close()
        finally:
            if self.available_apps is not None:
                apps.unset_available_apps()
                setting_changed.send(sender=settings._wrapped.__class__,
                                     setting='INSTALLED_APPS',
                                     value=settings.INSTALLED_APPS,
                                     enter=False)
Esempio n. 7
0
    def _pre_setup(self):
        """Performs any pre-test setup. This includes:

        * If the class has an 'available_apps' attribute, restricting the app
          registry to these applications, then firing post_migrate -- it must
          run with the correct set of applications for the test case.
        * If the class has a 'fixtures' attribute, installing these fixtures.
        """
        super(TransactionTestCase, self)._pre_setup()
        if self.available_apps is not None:
            apps.set_available_apps(self.available_apps)
            setting_changed.send(sender=settings._wrapped.__class__,
                                 setting='INSTALLED_APPS',
                                 value=self.available_apps,
                                 enter=True)
            for db_name in self._databases_names(include_mirrors=False):
                flush.Command.emit_post_migrate(verbosity=0, interactive=False, database=db_name)
        try:
            self._fixture_setup()
        except Exception:
            if self.available_apps is not None:
                apps.unset_available_apps()
                setting_changed.send(sender=settings._wrapped.__class__,
                                     setting='INSTALLED_APPS',
                                     value=settings.INSTALLED_APPS,
                                     enter=False)

            raise
Esempio n. 8
0
    def enable(self):
        # Keep this code at the beginning to leave the settings unchanged
        # in case it raises an exception because INSTALLED_APPS is invalid.
        if 'INSTALLED_APPS' in self.options:
            try:
                apps.set_installed_apps(self.options['INSTALLED_APPS'])
            except Exception:
                apps.unset_installed_apps()
                raise

        override = UserSettingsHolder(settings._wrapped)
        for key, new_value in self.options.items():
            setattr(override, key, new_value)

        # 保存原有的配置
        self.wrapped = settings._wrapped

        settings._wrapped = override

        for key, new_value in self.options.items():
            setting_changed.send(
                sender=settings._wrapped.__class__,
                setting=key,
                value=new_value,
                enter=True)
Esempio n. 9
0
    def _post_teardown(self):
        """Performs any post-test things. This includes:

        * Flushing the contents of the database, to leave a clean slate. If
          the class has an 'available_apps' attribute, post_migrate isn't fired.
        * Force-closing the connection, so the next test gets a clean cursor.
        """
        try:
            self._fixture_teardown()
            super(TransactionTestCase, self)._post_teardown()
            # Some DB cursors include SQL statements as part of cursor
            # creation. If you have a test that does rollback, the effect of
            # these statements is lost, which can effect the operation of
            # tests (e.g., losing a timezone setting causing objects to be
            # created with the wrong time). To make sure this doesn't happen,
            # get a clean connection at the start of every test.
            for conn in connections.all():
                conn.close()
        finally:
            if self.available_apps is not None:
                apps.unset_available_apps()
                setting_changed.send(sender=settings._wrapped.__class__,
                                     setting='INSTALLED_APPS',
                                     value=settings.INSTALLED_APPS,
                                     enter=False)
Esempio n. 10
0
    def __init__(self, prefix):
        """
        Loads our settings from django.conf.settings, applying defaults for any
        that are omitted.
        """
        self.prefix = prefix
        from django.conf import settings

        if hasattr(settings, 'CONCURRENCY_SANITY_CHECK'):
            warnings.warn(
                'Starting from concurrency 0.7 `CONCURRENCY_SANITY_CHECK` has no effect and will be removed in 0.8'
            )
        if hasattr(Model, '_do_update'):
            self.defaults['PROTOCOL'] = 2

        for name, default in self.defaults.items():
            if name != 'SANITY_CHECK':
                prefix_name = (self.prefix + '_' + name).upper()
                value = getattr(settings, prefix_name, default)
                self._set_attr(prefix_name, value)
                setattr(settings, prefix_name, value)
                setting_changed.send(self.__class__,
                                     setting=prefix_name,
                                     value=value,
                                     enter=True)

        setting_changed.connect(self._handler)
Esempio n. 11
0
 def disable(self):
     if "INSTALLED_APPS" in self.options:
         apps.unset_installed_apps()
     settings._wrapped = self.wrapped
     del self.wrapped
     for key in self.options:
         new_value = getattr(settings, key, None)
         setting_changed.send(sender=settings._wrapped.__class__, setting=key, value=new_value, enter=False)
Esempio n. 12
0
 def enable(self):
     override = UserSettingsHolder(settings._wrapped)
     for key, new_value in self.options.items():
         setattr(override, key, new_value)
     settings._wrapped = override
     for key, new_value in self.options.items():
         setting_changed.send(sender=settings._wrapped.__class__,
                              setting=key, value=new_value)
Esempio n. 13
0
 def disable(self):
     if 'INSTALLED_APPS' in self.options:
         apps.unset_installed_apps()
     settings._wrapped = self.wrapped
     del self.wrapped
     for key in self.options:
         new_value = getattr(settings, key, None)
         setting_changed.send(sender=settings._wrapped.__class__,
                              setting=key, value=new_value, enter=False)
Esempio n. 14
0
 def setUp(self):
     super(DiskCacheTests, self).setUp()
     self.dirname = tempfile.mkdtemp()
     # Cache location cannot be modified through override_settings / modify_settings,
     # hence settings are manipulated directly here and the setting_changed signal
     # is triggered manually.
     for cache_params in settings.CACHES.values():
         cache_params.update({'LOCATION': self.dirname})
     setting_changed.send(self.__class__, setting='CACHES', enter=False)
 def setUp(self):
     super(DiskCacheTests, self).setUp()
     self.dirname = tempfile.mkdtemp()
     # Cache location cannot be modified through override_settings / modify_settings,
     # hence settings are manipulated directly here and the setting_changed signal
     # is triggered manually.
     for cache_params in settings.CACHES.values():
         cache_params.update({'LOCATION': self.dirname})
     setting_changed.send(self.__class__, setting='CACHES', enter=False)
Esempio n. 16
0
    def add_test_template_dir(self, name='tests-templates'):
        template_dir = self.get_test_data_path(name)
        settings.TEMPLATES[0]['DIRS'].append(template_dir)
        setting_changed.send(sender=self.__class__, setting='TEMPLATES',
                             value=settings.TEMPLATES, enter=True)

        def cleanup_test_template_dir():
            settings.TEMPLATES[0]['DIRS'].remove(template_dir)
            setting_changed.send(sender=self.__class__, setting='TEMPLATES',
                                 value=settings.TEMPLATES, enter=False)

        self.addCleanup(cleanup_test_template_dir)
Esempio n. 17
0
 def enable(self):
     # Save previous value of djangocms_versioning_enabled and then set to False
     self._prev_versioning_enabled = self.navigation_config.djangocms_versioning_enabled
     self.navigation_config.djangocms_versioning_enabled = False
     # Make sure NAVIGATION_VERSIONING_ENABLED setting is False
     settings_override = UserSettingsHolder(settings._wrapped)
     settings_override.NAVIGATION_VERSIONING_ENABLED = False
     self.wrapped = settings._wrapped
     settings._wrapped = settings_override
     setting_changed.send(
         sender=settings._wrapped.__class__,
         setting='NAVIGATION_VERSIONING_ENABLED', value=False, enter=True)
     super().enable()
Esempio n. 18
0
    def __init__(self, prefix):
        """
        Loads our settings from django.conf.settings, applying defaults for any
        that are omitted.
        """
        self.prefix = prefix
        from django.conf import settings

        for name, default in self.defaults.items():
            prefix_name = (self.prefix + '_' + name).upper()
            value = getattr(settings, prefix_name, default)
            self._set_attr(prefix_name, value)
            setattr(settings, prefix_name, value)
            setting_changed.send(self.__class__, setting=prefix_name, value=value, enter=True)

        setting_changed.connect(self._handler)
Esempio n. 19
0
    def __init__(self, prefix):
        """
        Loads our settings from django.conf.settings, applying defaults for any
        that are omitted.
        """
        self.prefix = prefix
        from django.conf import settings

        for name, default in self.defaults.items():
            prefix_name = (self.prefix + '_' + name).upper()
            value = getattr(settings, prefix_name, default)
            self._set_attr(prefix_name, value)
            setattr(settings, prefix_name, value)
            setting_changed.send(self, setting=prefix_name, value=value)

        setting_changed.connect(self._handler)
Esempio n. 20
0
    def __init__(self, prefix):
        """
        Loads our settings from django.conf.settings, applying defaults for any
        that are omitted.
        """
        self.prefix = prefix
        from django.conf import settings

        for name, default in self.defaults.items():
            prefix_name = (self.prefix + '_' + name).upper()
            value = getattr(settings, prefix_name, default)
            self._set_attr(prefix_name, value)
            setattr(settings, prefix_name, value)
            setting_changed.send(self.__class__, setting=prefix_name, value=value, enter=True)

        setting_changed.connect(self._handler)
        if not os.path.isdir(self.CACHE):
            raise ImproperlyConfigured('%s is not a valid directory. Please change `settings.GEO_CACHE` value or create it', self.CACHE)
Esempio n. 21
0
    def __init__(self, prefix):
        """
        Loads our settings from django.conf.settings, applying defaults for any
        that are omitted.
        """
        self.prefix = prefix
        from django.conf import settings

        for name, default in self.defaults.items():
            prefix_name = (self.prefix + '_' + name).upper()
            value = getattr(settings, prefix_name, default)
            self._set_attr(prefix_name, value)
            setattr(settings, prefix_name, value)
            setting_changed.send(self.__class__,
                                 setting=prefix_name,
                                 value=value,
                                 enter=True)

        setting_changed.connect(self._handler)
        if not os.path.isdir(self.CACHE):
            raise ImproperlyConfigured(
                '%s is not a valid directory. Please change `settings.GEO_CACHE` value or create it',
                self.CACHE)
Esempio n. 22
0
    def __init__(self, prefix):
        """
        Loads our settings from django.conf.settings, applying defaults for any
        that are omitted.
        """
        self.prefix = prefix
        from django.conf import settings

        if hasattr(settings, 'CONCURRENCY_SANITY_CHECK'):
            warnings.warn(
                'Starting from concurrency 0.7 `CONCURRENCY_SANITY_CHECK` has no effect and will be removed in 0.8')
        if hasattr(Model, '_do_update'):
            self.defaults['PROTOCOL'] = 2

        for name, default in self.defaults.items():
            if name != 'SANITY_CHECK':
                prefix_name = (self.prefix + '_' + name).upper()
                value = getattr(settings, prefix_name, default)
                self._set_attr(prefix_name, value)
                setattr(settings, prefix_name, value)
                setting_changed.send(self.__class__, setting=prefix_name, value=value, enter=True)

        setting_changed.connect(self._handler)
Esempio n. 23
0
 def __setattr__(self, name, value):
     UserSettingsHolder.__setattr__(self, name, value)
     setting_changed.send(sender=self.__class__, setting=name, value=value)
Esempio n. 24
0
 def cleanup_test_template_dir():
     settings.TEMPLATES[0]['DIRS'].remove(template_dir)
     setting_changed.send(sender=self.__class__, setting='TEMPLATES',
                          value=settings.TEMPLATES, enter=False)
Esempio n. 25
0
import logging