Code refactoring

pull/17/head
Fabio Caccamo 2017-03-29 16:20:07 +02:00
parent 00f60c222d
commit d29515c4ae
2 changed files with 24 additions and 29 deletions

View File

@ -13,30 +13,35 @@ class Theme(models.Model):
@staticmethod @staticmethod
def post_migrate_handler(sender, **kwargs): def post_migrate_handler(sender, **kwargs):
Theme.get_or_create_default_theme() Theme.get_active_theme()
@staticmethod @staticmethod
def post_delete_handler(instance, **kwargs): def post_delete_handler(instance, **kwargs):
Theme.get_or_create_default_theme() Theme.get_active_theme()
@staticmethod @staticmethod
def post_save_handler(instance, created, **kwargs): def post_save_handler(instance, created, **kwargs):
instance.set_active(instance.active) Theme.get_active_theme()
Theme.get_or_create_default_theme()
@staticmethod @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) #get or create default theme and enforce default logo if deleted
obj, obj_created = Theme.objects.get_or_create(pk = '1', defaults = { 'active':obj_active }) 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: if not default_obj_created and default_obj_active:
obj.set_default_logo() default_obj.set_active()
if not obj_created and obj_active: if not default_obj.logo:
obj.set_active(True) 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' ) name = models.CharField( max_length = 50, default = 'Django' )
active = models.BooleanField( default = True ) active = models.BooleanField( default = True )
@ -74,15 +79,13 @@ class Theme(models.Model):
list_filter_dropdown = models.BooleanField( default = False ) 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.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)
if not self.active:
self.active = True
self.save()
def set_default_logo(self): def set_default_logo(self):
@ -109,3 +112,4 @@ class Theme(models.Model):
post_delete.connect(Theme.post_delete_handler, sender = Theme) post_delete.connect(Theme.post_delete_handler, sender = Theme)
post_save.connect(Theme.post_save_handler, sender = Theme) post_save.connect(Theme.post_save_handler, sender = Theme)

View File

@ -11,14 +11,5 @@ register = template.Library()
@register.assignment_tag(takes_context = True) @register.assignment_tag(takes_context = True)
def get_admin_interface_theme(context): def get_admin_interface_theme(context):
obj_qs = Theme.objects.filter(active = True)[:1] return Theme.get_active_theme()
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