old_console/dashboard/models.py
2024-11-02 14:12:45 +03:00

28 lines
986 B
Python

from django.contrib.auth.models import User
from django.db import models
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.utils.translation import gettext_lazy
class DashboardLayout(models.Model):
""" Dashboard widgets layout for one user """
user = models.ForeignKey(User,
on_delete=models.CASCADE,
verbose_name=gettext_lazy('User'),
help_text=gettext_lazy('Owner of dashboard'))
widgets = models.JSONField(help_text=gettext_lazy('Widgets'), default=dict)
def __str__(self):
return f'{self.pk} {self.user.username}'
@receiver(post_save, sender=User)
def add_dashboard_layout(sender, **kwargs):
""" Add dashboard layout to new user """
user = kwargs['instance']
layout = DashboardLayout.objects.filter(user=user)
if not layout:
layout = DashboardLayout(user=user, widgets={})
layout.save()