Пример #1
0
    def test_email_send_action_no_sites(self):
        """
        Test re-sending of activation emails via admin action when
        ``django.contrib.sites`` is not installed; the fallback will
        be a ``RequestSite`` instance.

        """
        Site = get_site_model()
        Site._meta.installed = False
        admin_class = RegistrationAdmin(RegistrationProfile, admin.site)

        alice = self.backend.register(_mock_request(),
                                      email='*****@*****.**',
                                      password1='swordfish')

        admin_class.resend_activation_email(_mock_request(),
                                            RegistrationProfile.objects.all())
        self.assertEqual(len(
            mail.outbox), 2)  # One on registering, one more on the resend.

        RegistrationProfile.objects.filter(user=alice).update(
            activation_key=RegistrationProfile.ACTIVATED)
        admin_class.resend_activation_email(_mock_request(),
                                            RegistrationProfile.objects.all())
        self.assertEqual(len(
            mail.outbox), 2)  # No additional email because the account has activated.
        Site._meta.installed = True
Пример #2
0
        def fast_fixture_setup(instance):
            if not connections_support_transactions():
                return super(TestCase, instance)._fixture_setup()

            fixtures = getattr(instance, 'fixtures', [])

            loaddata = fixtures
            flush_db = True
            if len(self.currernt_fixtures) <= len(fixtures):
                if fixtures[:len(self.currernt_fixtures
                                 )] == self.currernt_fixtures:
                    # current fixtures are still OK
                    loaddata = fixtures[len(self.currernt_fixtures):]
                    self.fixtures_prevented += len(self.currernt_fixtures)
                    flush_db = False

            if flush_db:
                ContentType.objects.clear_cache()
                self.flushes += 1
                self.currernt_fixtures = []
                for db in connections:
                    call_command('flush',
                                 verbosity=0,
                                 interactive=False,
                                 database=db)

            if len(loaddata):
                self.fixtures += len(loaddata)
                self.fixtures_sets.append(self.currernt_fixtures + loaddata)
                for db in connections:
                    call_command(
                        'loaddata', *loaddata, **{
                            'verbosity': 0,
                            'commit': True,
                            'database': db
                        })
            self.currernt_fixtures = fixtures

            # If the test case has a multi_db=True flag, setup all databases.
            # Otherwise, just use default.
            if getattr(self, 'multi_db', False):
                databases = connections
            else:
                databases = [DEFAULT_DB_ALIAS]

            instance.atomics = {}

            for db in databases:
                instance.atomics[db] = transaction.atomic(using=db)
                instance.atomics[db].__enter__()
            disable_transaction_methods()

            from django.contrib.sites import get_site_model
            Site = get_site_model()
            Site.objects.clear_cache()
Пример #3
0
        def fast_fixture_setup(instance):
            if not connections_support_transactions():
                return super(TestCase, instance)._fixture_setup()

            fixtures = getattr(instance, "fixtures", [])

            loaddata = fixtures
            flush_db = True
            if len(self.currernt_fixtures) <= len(fixtures):
                if fixtures[: len(self.currernt_fixtures)] == self.currernt_fixtures:
                    # current fixtures are still OK
                    loaddata = fixtures[len(self.currernt_fixtures) :]
                    self.fixtures_prevented += len(self.currernt_fixtures)
                    flush_db = False

            if flush_db:
                ContentType.objects.clear_cache()
                self.flushes += 1
                self.currernt_fixtures = []
                for db in connections:
                    call_command("flush", verbosity=0, interactive=False, database=db)

            if len(loaddata):
                self.fixtures += len(loaddata)
                self.fixtures_sets.append(self.currernt_fixtures + loaddata)
                for db in connections:
                    call_command("loaddata", *loaddata, **{"verbosity": 0, "commit": True, "database": db})
            self.currernt_fixtures = fixtures

            # If the test case has a multi_db=True flag, setup all databases.
            # Otherwise, just use default.
            if getattr(self, "multi_db", False):
                databases = connections
            else:
                databases = [DEFAULT_DB_ALIAS]

            instance.atomics = {}

            for db in databases:
                instance.atomics[db] = transaction.atomic(using=db)
                instance.atomics[db].__enter__()
            disable_transaction_methods()

            from django.contrib.sites import get_site_model

            Site = get_site_model()
            Site.objects.clear_cache()
Пример #4
0
    def test_registration_no_sites(self):
        """
        Test that registration still functions properly when
        ``django.contrib.sites`` is not installed; the fallback will
        be a ``RequestSite`` instance.

        """
        Site = get_site_model()
        Site._meta.installed = False
        new_user = self.backend.register(_mock_request(),
                                         email='*****@*****.**',
                                         password1='secret')

        self.failUnless(new_user.check_password('secret'))
        self.assertEqual(new_user.email, '*****@*****.**')

        self.failIf(new_user.is_active)

        self.assertEqual(RegistrationProfile.objects.count(), 1)
        self.assertEqual(len(mail.outbox), 1)

        Site._meta.installed = True