| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859 | 
							- 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()
 
 
  |