From d85690fb9c5dcea273d4244b05af0fb9ac5e3c3a Mon Sep 17 00:00:00 2001 From: "davide.borgonovo" Date: Mon, 30 Jan 2023 15:08:33 +0100 Subject: [PATCH] =?UTF-8?q?Aggiunto=20default=20per=20quando=20un=20utente?= =?UTF-8?q?=20non=20ha=20un=20tema=20attivo=20assegnato=20o=20se=20=C3=A8?= =?UTF-8?q?=20un=20non=20utente.=20In=20questo=20modo=20non=20usa=20un=20t?= =?UTF-8?q?ema=20a=20caso=20ma=20quello=20settato=20come=20default?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- admin_interface/admin.py | 2 ++ admin_interface/context_processor.py | 10 +++++++-- .../migrations/0030_theme_default.py | 18 ++++++++++++++++ admin_interface/models.py | 21 +++++++++++++++++-- admin_interface/version.py | 2 +- 5 files changed, 48 insertions(+), 5 deletions(-) create mode 100644 admin_interface/migrations/0030_theme_default.py diff --git a/admin_interface/admin.py b/admin_interface/admin.py index b8f001b..84722f0 100644 --- a/admin_interface/admin.py +++ b/admin_interface/admin.py @@ -22,6 +22,7 @@ class ThemeAdmin(ImportMixin, admin.ModelAdmin): "name", "active", "demo", + "default", ) list_editable = ("active",) list_per_page = 100 @@ -36,6 +37,7 @@ class ThemeAdmin(ImportMixin, admin.ModelAdmin): "name", "active", "demo", + "default", ), }, ), diff --git a/admin_interface/context_processor.py b/admin_interface/context_processor.py index 8dea348..197feba 100644 --- a/admin_interface/context_processor.py +++ b/admin_interface/context_processor.py @@ -18,6 +18,7 @@ def get_active_theme(request): obj = objs_active_ls[0] elif objs_active_count > 1: + # for frame_record in inspect.stack(): # if frame_record[3]=='get_response': # request = frame_record[0].f_locals['request'] @@ -29,8 +30,13 @@ def get_active_theme(request): try: obj = user_theme_manager.filter(user=user, theme__active=True).first().theme except: - obj = objs_active_ls[-1] - obj.set_active() + objs_default_qs = objs_active_qs.filter(default=True) + if len(objs_default_qs) == 0: + obj = objs_active_qs.first() + if obj: + obj.set_default() + else: + obj = objs_default_qs.first() return { 'theme': obj, diff --git a/admin_interface/migrations/0030_theme_default.py b/admin_interface/migrations/0030_theme_default.py new file mode 100644 index 0000000..cc96ed0 --- /dev/null +++ b/admin_interface/migrations/0030_theme_default.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.3 on 2023-01-30 14:00 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('admin_interface', '0029_auto_20221025_1559'), + ] + + operations = [ + migrations.AddField( + model_name='theme', + name='default', + field=models.BooleanField(default=False, verbose_name='default'), + ), + ] diff --git a/admin_interface/models.py b/admin_interface/models.py index 9da62b5..f927abf 100644 --- a/admin_interface/models.py +++ b/admin_interface/models.py @@ -84,8 +84,13 @@ class Theme(models.Model): try: return user_theme_manager.filter(user=user, theme__active=True).first().theme except: - obj = objs_active_ls[-1] - obj.set_active() + objs_default_qs = objs_active_qs.filter(default=True) + if len(objs_default_qs) == 0: + obj = objs_active_qs.first() + if obj: + obj.set_default() + else: + obj = objs_default_qs.first() return obj @@ -95,6 +100,9 @@ class Theme(models.Model): active = models.BooleanField(default=True, verbose_name=_("active")) demo = models.BooleanField(default=False, verbose_name=_("is demo")) + + default = models.BooleanField(default=False, verbose_name="default") + users = models.ManyToManyField('auth.User', through=UserTheme) title = models.CharField( @@ -409,6 +417,15 @@ class Theme(models.Model): self.active = True self.save() + def set_default(self): + self.default = True + self.save() + + def save(self): + if self.default: + Theme.objects.update(default=False) + super().save() + class Meta: app_label = "admin_interface" diff --git a/admin_interface/version.py b/admin_interface/version.py index 1337349..e6de11b 100644 --- a/admin_interface/version.py +++ b/admin_interface/version.py @@ -1,3 +1,3 @@ # -*- coding: utf-8 -*- -__version__ = "0.19.5" +__version__ = "0.19.6"