Remove `post_migrate` signal handler and multi db test.

master
Fabio Caccamo 2022-12-03 14:01:57 +01:00
parent d62593e01b
commit 60649ac4e6
3 changed files with 24 additions and 39 deletions

View File

@ -1,5 +1,4 @@
from django.apps import AppConfig
from django.db.models.signals import post_migrate
from django.utils.translation import gettext_lazy as _
@ -10,9 +9,6 @@ class AdminInterfaceConfig(AppConfig):
default_auto_field = "django.db.models.AutoField"
def ready(self):
from admin_interface import settings
from admin_interface.models import Theme
settings.check_installed_apps()
post_migrate.connect(Theme.post_migrate_handler, sender=self)

View File

@ -9,41 +9,30 @@ from .cache import del_cached_active_theme
class Theme(models.Model):
@staticmethod
def post_migrate_handler(**kwargs):
del_cached_active_theme()
db = kwargs["using"]
Theme.get_active_theme(database=db)
@staticmethod
def post_delete_handler(**kwargs):
del_cached_active_theme()
db = kwargs["using"]
Theme.get_active_theme(database=db)
Theme.get_active_theme()
@staticmethod
def post_save_handler(instance, **kwargs):
del_cached_active_theme()
db = kwargs["using"]
if instance.active:
Theme.objects.using(db).exclude(pk=instance.pk).update(active=False)
Theme.get_active_theme(database=db)
Theme.objects.exclude(pk=instance.pk).update(active=False)
Theme.get_active_theme()
@staticmethod
def pre_save_handler(instance, **kwargs):
if instance.pk is None:
db = kwargs["using"]
try:
obj = Theme.objects.using(db).get(name=instance.name)
obj = Theme.objects.get(name=instance.name)
instance.pk = obj.pk
except Theme.DoesNotExist:
pass
@staticmethod
def get_active_theme(database=None):
objs_manager = (
Theme.objects if database is None else Theme.objects.using(database)
)
def get_active_theme():
objs_manager = Theme.objects
objs_active_qs = objs_manager.filter(active=True)
objs_active_ls = list(objs_active_qs)
objs_active_count = len(objs_active_ls)

View File

@ -92,26 +92,26 @@ class AdminInterfaceModelsTestCase(TestCase):
self.assertEqual("{0}".format(theme), "Django")
class AdminInterfaceModelsMultiDBTestCase(TestCase):
databases = ["default", "replica"]
# class AdminInterfaceModelsMultiDBTestCase(TestCase):
# databases = ["default", "replica"]
@classmethod
def setUpTestData(cls):
Theme.objects.create(name="Change Active", active=True)
# @classmethod
# def setUpTestData(cls):
# Theme.objects.create(name="Change Active", active=True)
def test_get_theme_from_default_db(self):
de_theme = Theme.get_active_theme()
assert de_theme.name == "Change Active"
# def test_get_theme_from_default_db(self):
# de_theme = Theme.get_active_theme()
# assert de_theme.name == "Change Active"
def test_get_theme_from_replica_db(self):
replica_theme = Theme.get_active_theme(database="replica")
assert replica_theme.name == "Django"
# def test_get_theme_from_replica_db(self):
# replica_theme = Theme.get_active_theme(database="replica")
# assert replica_theme.name == "Django"
def test_db_are_isolated(self):
default_theme = Theme.get_active_theme()
replica_theme = Theme.get_active_theme(database="replica")
assert default_theme.name != replica_theme.name
# def test_db_are_isolated(self):
# default_theme = Theme.get_active_theme()
# replica_theme = Theme.get_active_theme(database="replica")
# assert default_theme.name != replica_theme.name
@expectedFailure
def test_fail_for_wrong_db_defined_in_kwargs(self):
Theme.get_active_theme(database="other")
# @expectedFailure
# def test_fail_for_wrong_db_defined_in_kwargs(self):
# Theme.get_active_theme(database="other")