diff --git a/admin_interface/admin.py b/admin_interface/admin.py index bc73180..7f6f576 100644 --- a/admin_interface/admin.py +++ b/admin_interface/admin.py @@ -6,10 +6,10 @@ from admin_interface.models import Theme class ThemeAdmin(admin.ModelAdmin): - + list_display = ('name', 'active', ) list_editable = ('active', ) - + fieldsets = ( (None, { 'classes': ('wide', ), @@ -48,8 +48,8 @@ class ThemeAdmin(admin.ModelAdmin): 'fields': ('list_filter_dropdown', ) }), ) - + save_on_top = True - + admin.site.register(Theme, ThemeAdmin) diff --git a/admin_interface/apps.py b/admin_interface/apps.py index 344ed6e..0448cf1 100644 --- a/admin_interface/apps.py +++ b/admin_interface/apps.py @@ -4,15 +4,13 @@ from django.apps import AppConfig from django.db.models.signals import post_migrate - class AdminInterfaceConfig(AppConfig): - + name = 'admin_interface' verbose_name = 'Admin Interface' - + def ready(self): - + from admin_interface.models import Theme post_migrate.connect(Theme.post_migrate_handler, sender = self) - - \ No newline at end of file + diff --git a/admin_interface/models.py b/admin_interface/models.py index a851297..e511299 100644 --- a/admin_interface/models.py +++ b/admin_interface/models.py @@ -10,101 +10,101 @@ import os class Theme(models.Model): - + @staticmethod def post_migrate_handler(sender, **kwargs): Theme.get_or_create_default_theme() - + @staticmethod def post_delete_handler(instance, **kwargs): Theme.get_or_create_default_theme() - + @staticmethod def post_save_handler(instance, created, **kwargs): instance.set_active(instance.active) Theme.get_or_create_default_theme() - + @staticmethod def get_or_create_default_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 }) - + if not obj.logo: obj.set_default_logo() - + if not obj_created and obj_active: obj.set_active(True) - + return (obj, obj_created, ) - + name = models.CharField( max_length = 50, default = 'Django' ) active = models.BooleanField( default = True ) - + title = models.CharField( max_length = 50, default = 'Django administration', blank = True ) title_visible = models.BooleanField( default = True, verbose_name = 'visible' ) - + logo = models.FileField( upload_to = 'admin-interface/logo/', blank = True ) logo_visible = models.BooleanField( default = True, verbose_name = 'visible' ) - + css_header_background_color = ColorField( blank = True, default = '#0C4B33', help_text = '#0C4B33', verbose_name = 'background color' ) css_header_title_color = ColorField( blank = True, default = '#F5DD5D', help_text = '#F5DD5D', verbose_name = 'title color' ) css_header_text_color = ColorField( blank = True, default = '#44B78B', help_text = '#44B78B', verbose_name = 'text color' ) css_header_link_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', verbose_name = 'link color' ) css_header_link_hover_color = ColorField( blank = True, default = '#C9F0DD', help_text = '#C9F0DD', verbose_name = 'link hover color' ) - + css_module_background_color = ColorField( blank = True, default = '#44B78B', help_text = '#44B78B', verbose_name = 'background color' ) css_module_text_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', verbose_name = 'text color' ) css_module_link_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', verbose_name = 'link color' ) css_module_link_hover_color = ColorField( blank = True, default = '#C9F0DD', help_text = '#C9F0DD', verbose_name = 'link hover color' ) css_module_rounded_corners = models.BooleanField( default = True, verbose_name = 'rounded corners' ) - + css_generic_link_color = ColorField( blank = True, default = '#0C3C26', help_text = '#0C3C26', verbose_name = 'link color' ) css_generic_link_hover_color = ColorField( blank = True, default = '#156641', help_text = '#156641', verbose_name = 'link hover color' ) - + css_save_button_background_color = ColorField( blank = True, default = '#0C4B33', help_text = '#0C4B33', verbose_name = 'background color' ) css_save_button_background_hover_color = ColorField( blank = True, default = '#0C3C26', help_text = '#0C3C26', verbose_name = 'background hover color' ) css_save_button_text_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', verbose_name = 'text color' ) - + css_delete_button_background_color = ColorField( blank = True, default = '#BA2121', help_text = '#BA2121', verbose_name = 'background color' ) css_delete_button_background_hover_color = ColorField( blank = True, default = '#A41515', help_text = '#A41515', verbose_name = 'background hover color' ) css_delete_button_text_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', verbose_name = 'text color' ) - + css = models.TextField( blank = True ) - + list_filter_dropdown = models.BooleanField( default = False ) - - + + 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) - + def set_default_logo(self): - + logo_path = os.path.normpath(os.path.dirname(__file__) + '/data/logo-django.svg') logo_file = open(logo_path) - + self.logo = File(logo_file) self.save() - + logo_file.close() - + class Meta: - + app_label = 'admin_interface' - + verbose_name = 'Theme' verbose_name_plural = 'Themes' - + def __unicode__(self): - + return unicode(u'%s' % (self.name, )) - - + + 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 977a5b4..d2e07d2 100644 --- a/admin_interface/templatetags/admin_interface_tags.py +++ b/admin_interface/templatetags/admin_interface_tags.py @@ -10,16 +10,15 @@ 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 - - \ No newline at end of file +