Files
Touchh/.venv/lib/python3.10/site-packages/jet/dashboard/models.py
2024-12-06 10:45:08 +09:00

60 lines
2.0 KiB
Python

from importlib import import_module
import json
from django.db import models
from django.utils.encoding import python_2_unicode_compatible
from django.utils.translation import ugettext_lazy as _
from jet.utils import LazyDateTimeEncoder
@python_2_unicode_compatible
class UserDashboardModule(models.Model):
title = models.CharField(verbose_name=_('Title'), max_length=255)
module = models.CharField(verbose_name=_('module'), max_length=255)
app_label = models.CharField(verbose_name=_('application name'), max_length=255, null=True, blank=True)
user = models.PositiveIntegerField(verbose_name=_('user'))
column = models.PositiveIntegerField(verbose_name=_('column'))
order = models.IntegerField(verbose_name=_('order'))
settings = models.TextField(verbose_name=_('settings'), default='', blank=True)
children = models.TextField(verbose_name=_('children'), default='', blank=True)
collapsed = models.BooleanField(verbose_name=_('collapsed'), default=False)
class Meta:
verbose_name = _('user dashboard module')
verbose_name_plural = _('user dashboard modules')
ordering = ('column', 'order')
def __str__(self):
return self.module
def load_module(self):
try:
package, module_name = self.module.rsplit('.', 1)
package = import_module(package)
module = getattr(package, module_name)
return module
except AttributeError:
return None
except ImportError:
return None
def pop_settings(self, pop_settings):
settings = json.loads(self.settings)
for setting in pop_settings:
if setting in settings:
settings.pop(setting)
self.settings = json.dumps(settings, cls=LazyDateTimeEncoder)
self.save()
def update_settings(self, update_settings):
settings = json.loads(self.settings)
settings.update(update_settings)
self.settings = json.dumps(settings, cls=LazyDateTimeEncoder)
self.save()