From d29515c4ae4ca0d3ae6f87253149bd4d1bd3d9c3 Mon Sep 17 00:00:00 2001 From: Fabio Caccamo Date: Wed, 29 Mar 2017 16:20:07 +0200 Subject: [PATCH] Code refactoring --- admin_interface/models.py | 42 ++++++++++--------- .../templatetags/admin_interface_tags.py | 11 +---- 2 files changed, 24 insertions(+), 29 deletions(-) diff --git a/admin_interface/models.py b/admin_interface/models.py index 95c2fd8..811ee4f 100644 --- a/admin_interface/models.py +++ b/admin_interface/models.py @@ -13,30 +13,35 @@ class Theme(models.Model): @staticmethod def post_migrate_handler(sender, **kwargs): - Theme.get_or_create_default_theme() + Theme.get_active_theme() @staticmethod def post_delete_handler(instance, **kwargs): - Theme.get_or_create_default_theme() + Theme.get_active_theme() @staticmethod def post_save_handler(instance, created, **kwargs): - instance.set_active(instance.active) - Theme.get_or_create_default_theme() + Theme.get_active_theme() @staticmethod - def get_or_create_default_theme(): + def get_active_theme(): - obj_active = (True if len(list(Theme.objects.filter(active = True))) == 0 else False) - obj, obj_created = Theme.objects.get_or_create(pk = '1', defaults = { 'active':obj_active }) + #get or create default theme and enforce default logo if deleted + default_obj_active = (Theme.objects.filter( active = True ).count() == 0) + default_obj, default_obj_created = Theme.objects.get_or_create(pk = '1', defaults = { 'active':default_obj_active }) - if not obj.logo: - obj.set_default_logo() + if not default_obj_created and default_obj_active: + default_obj.set_active() - if not obj_created and obj_active: - obj.set_active(True) + if not default_obj.logo: + default_obj.set_default_logo() + + objs_active_count = Theme.objects.filter( active = True ).count() + + obj = Theme.objects.filter( active = True ).last() + obj.set_active() + return obj - return (obj, obj_created, ) name = models.CharField( max_length = 50, default = 'Django' ) active = models.BooleanField( default = True ) @@ -74,15 +79,13 @@ class Theme(models.Model): list_filter_dropdown = models.BooleanField( default = False ) + def set_active(self): - def set_active(self, value): - - if value: - Theme.objects.exclude(pk = self.pk).update(active = False) - Theme.objects.filter(pk = self.pk).update(active = True) - else: - Theme.objects.filter(pk = self.pk).update(active = False) + Theme.objects.exclude( pk = self.pk ).update( active = False ) + if not self.active: + self.active = True + self.save() def set_default_logo(self): @@ -109,3 +112,4 @@ class Theme(models.Model): post_delete.connect(Theme.post_delete_handler, sender = Theme) post_save.connect(Theme.post_save_handler, sender = Theme) + diff --git a/admin_interface/templatetags/admin_interface_tags.py b/admin_interface/templatetags/admin_interface_tags.py index d2e07d2..808d58c 100644 --- a/admin_interface/templatetags/admin_interface_tags.py +++ b/admin_interface/templatetags/admin_interface_tags.py @@ -11,14 +11,5 @@ register = template.Library() @register.assignment_tag(takes_context = True) def get_admin_interface_theme(context): - obj_qs = Theme.objects.filter(active = True)[:1] - obj_ls = list(obj_qs) - obj = None - - if len(obj_ls): - obj = obj_ls[0] - else: - obj = Theme.get_or_create_default_theme() - - return obj + return Theme.get_active_theme()