| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 | from importlib import import_moduleimport jsonfrom django.db import modelsfrom django.utils.encoding import python_2_unicode_compatiblefrom django.utils.translation import ugettext_lazy as _from jet.utils import LazyDateTimeEncoder@python_2_unicode_compatibleclass 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    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()
 |