Compare commits

..

2 Commits

5 changed files with 73 additions and 17 deletions

View File

@ -1,13 +1,20 @@
# -*- coding: utf-8 -*-
from admin_interface.compat import gettext_lazy as _
from admin_interface.models import Theme
from django.contrib.auth import models as auth_models
from django.contrib import admin
from django.contrib.auth import models as auth_models
from admin_interface.compat import gettext_lazy as _
from admin_interface.models import Theme, UserTheme
class UserInline(admin.TabularInline):
model = UserTheme
extra = 0
autocomplete_fields = ('user', )
class ThemeAdmin(admin.ModelAdmin):
inlines = [UserInline, ]
list_display = (
"name",
@ -136,7 +143,8 @@ class ThemeAdmin(admin.ModelAdmin):
),
},
),
(_("Navigation Bar"), {"classes": ("wide",), "fields": ("foldable_apps",)}),
(_("Navigation Bar"), {"classes": (
"wide",), "fields": ("foldable_apps",)}),
(
_("Related Modal"),
{
@ -174,10 +182,6 @@ class ThemeAdmin(admin.ModelAdmin):
_("Recent Actions"),
{"classes": ("wide",), "fields": ("recent_actions_visible",)},
),
(
_("Users theme"),
{"classes": ("wide",), "fields": ("user",)},
),
)
save_on_top = True

View File

@ -7,7 +7,7 @@ def get_active_theme(request):
objs_active_count = len(objs_active_ls)
if objs_active_count == 0:
obj = objs_manager.all().first()
obj = objs_manager.first()
if obj:
obj.set_active()
else:

View File

@ -0,0 +1,37 @@
# Generated by Django 3.2.13 on 2022-04-28 16:03
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion
class Migration(migrations.Migration):
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
('admin_interface', '0026_add_user_option'),
]
operations = [
migrations.RemoveField(
model_name='theme',
name='user',
),
migrations.CreateModel(
name='UserTheme',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('theme', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='admin_interface.theme')),
('user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, unique=True)),
],
options={
'verbose_name': 'Users theme',
'verbose_name_plural': 'Users themes',
},
),
migrations.AddField(
model_name='theme',
name='users',
field=models.ManyToManyField(through='admin_interface.UserTheme', to=settings.AUTH_USER_MODEL),
),
]

View File

@ -14,6 +14,17 @@ from admin_interface.compat import FileExtensionValidator, force_str
from admin_interface.compat import gettext_lazy as _
@python_2_unicode_compatible
class UserTheme(models.Model):
class Meta:
verbose_name = 'Users theme'
verbose_name_plural = 'Users themes'
user = models.ForeignKey(
'auth.User', on_delete=models.CASCADE, null=True, unique=True)
theme = models.ForeignKey('Theme', on_delete=models.CASCADE)
@python_2_unicode_compatible
class Theme(models.Model):
@staticmethod
@ -62,7 +73,7 @@ class Theme(models.Model):
elif objs_active_count > 1:
for frame_record in inspect.stack():
if frame_record[3]=='get_response':
if frame_record[3] == 'get_response':
request = frame_record[0].f_locals['request']
user = request.user
break
@ -83,7 +94,7 @@ class Theme(models.Model):
active = models.BooleanField(default=True, verbose_name=_("active"))
demo = models.BooleanField(default=False, verbose_name=_("is demo"))
user = models.ForeignKey('auth.User', on_delete=models.CASCADE, null=True, blank=True, verbose_name=_("active for user"))
users = models.ManyToManyField('auth.User', through=UserTheme)
title = models.CharField(
max_length=50,
@ -98,7 +109,8 @@ class Theme(models.Model):
max_length=10,
verbose_name=_("color"),
)
title_visible = models.BooleanField(default=True, verbose_name=_("visible"))
title_visible = models.BooleanField(
default=True, verbose_name=_("visible"))
logo = models.FileField(
upload_to="admin-interface/logo/",
@ -138,7 +150,8 @@ class Theme(models.Model):
verbose_name=_("favicon"),
)
env_name = models.CharField(blank=True, max_length=50, verbose_name=_("name"))
env_name = models.CharField(
blank=True, max_length=50, verbose_name=_("name"))
env_color = ColorField(
blank=True,
default="#E74C3C",
@ -309,7 +322,8 @@ class Theme(models.Model):
verbose_name=_("text color"),
)
related_modal_active = models.BooleanField(default=True, verbose_name=_("active"))
related_modal_active = models.BooleanField(
default=True, verbose_name=_("active"))
related_modal_background_color = ColorField(
blank=True,
default="#000000",
@ -376,7 +390,8 @@ class Theme(models.Model):
default=True, verbose_name=_("sticky position")
)
foldable_apps = models.BooleanField(default=True, verbose_name=_("foldable apps"))
foldable_apps = models.BooleanField(
default=True, verbose_name=_("foldable apps"))
recent_actions_visible = models.BooleanField(
default=True, verbose_name=_("visible")

View File

@ -1,3 +1,3 @@
# -*- coding: utf-8 -*-
__version__ = "0.19.2"
__version__ = "0.19.3"