Example #1
0
def uninstall_if_needed(setting, value, enter, **kwargs):
    """
    Undo the effects of PostgresConfig.ready() when django.contrib.postgres
    is "uninstalled" by override_settings().
    """
    if not enter and setting == 'INSTALLED_APPS' and 'django.contrib.postgres' not in set(
            value):
        connection_created.disconnect(register_type_handlers)
        CharField._unregister_lookup(Unaccent)
        TextField._unregister_lookup(Unaccent)
        CharField._unregister_lookup(SearchLookup)
        TextField._unregister_lookup(SearchLookup)
        CharField._unregister_lookup(TrigramSimilar)
        TextField._unregister_lookup(TrigramSimilar)
        CharField._unregister_lookup(TrigramWordSimilar)
        TextField._unregister_lookup(TrigramWordSimilar)
        # Disconnect this receiver until the next time this app is installed
        # and ready() connects it again to prevent unnecessary processing on
        # each setting change.
        setting_changed.disconnect(uninstall_if_needed)
        MigrationWriter.unregister_serializer(RANGE_TYPES)
Example #2
0
 def __del__(self):
     setting_changed.disconnect(self.reload_api_settings)        
Example #3
0
 def __del__(self):
     setting_changed.disconnect(dispatch_uid=self._dispatch_uid)
Example #4
0
from typing import Any
import uuid

import django.test.signals
from django.contrib.auth import authenticate, get_user_model
from django.contrib.auth.hashers import MD5PasswordHasher
from django.core.signals import setting_changed
from django.test import TestCase, override_settings

from fd_dj_accounts.auth_backends import AuthUserModelAuthBackend
from . import utils

# warning: this is critical for being able to mess with 'AUTH_USER_MODEL' in the tests.
setting_changed.disconnect(receiver=django.test.signals.user_model_swapped)
setting_changed.connect(receiver=utils.auth_user_model_swapped_receiver)


class CountingMD5PasswordHasher(MD5PasswordHasher):
    """Hasher that counts how many times it computes a hash."""

    calls = 0

    def encode(self, *args, **kwargs):  # type: ignore
        type(self).calls += 1
        return super().encode(*args, **kwargs)


class AuthUserModelAuthBackendTestMixin:
    """
    Base class for test cases of ``AuthUserModelAuthBackend``.