def get_logging_fields(self, model): """ Returns a dictionary mapping of the fields that are used for keeping the acutal audit log entries. """ rel_name = '_%s_%s_audit_log_entry' % (model._meta.app_label, model._meta.object_name.lower()) def entry_instance_to_unicode(log_entry): try: result = '%s: %s %s at %s' % ( model._meta.object_name, log_entry.object_state, log_entry.get_action_type_display().lower(), log_entry.action_date, ) except AttributeError: result = '%s %s at %s' % (model._meta.object_name, log_entry.get_action_type_display(). lower(), log_entry.action_date) return result action_user_field = LastUserField(related_name=rel_name, editable=False) #check if the manager has been attached to auth user model if [model._meta.app_label, model.__name__] == getattr(settings, 'AUTH_USER_MODEL', 'auth.User').split("."): action_user_field = LastUserField(related_name=rel_name, editable=False, to='self') return { 'action_id': models.AutoField(primary_key=True), 'action_date': models.DateTimeField(default=datetime_now, editable=False, blank=False), 'action_user': action_user_field, 'action_type': models.CharField(max_length=1, editable=False, choices=( ('I', _('Created')), ('U', _('Changed')), ('D', _('Deleted')), )), 'object_state': LogEntryObjectDescriptor(model), '__unicode__': entry_instance_to_unicode, }
def get_logging_fields(self, model): """ Returns a dictionary mapping of the fields that are used for keeping the acutal audit log entries. """ rel_name = '_%s_audit_log_entry'%model._meta.object_name.lower() def entry_instance_to_unicode(log_entry): try: result = u'%s: %s %s at %s'%(model._meta.object_name, log_entry.object_state, log_entry.get_audit_action_type_display().lower(), log_entry.audit_action_date, ) except AttributeError: result = u'%s %s at %s'%(model._meta.object_name, log_entry.get_audit_action_type_display().lower(), log_entry.audit_action_date ) return result return { 'audit_action_id' : models.AutoField(primary_key = True), 'audit_action_date' : models.DateTimeField(default = datetime.datetime.now), 'audit_action_user' : LastUserField(related_name = rel_name), 'audit_action_type' : models.CharField(max_length = 1, choices = ( ('I', _('Created')), ('U', _('Changed')), ('D', _('Deleted')), )), 'object_state' : LogEntryObjectDescriptor(model), '__unicode__' : entry_instance_to_unicode, }
class ArticlesMaster(models.Model): Category = ( (u'', u'Select'), (u'Dart', u'Dart'), (u'Django', u'Django'), (u'Flutter', u'Flutter'), (u'Python', u'Python'), (u'Linux', u'Linux'), ) category = models.CharField(max_length=25, choices=Category, verbose_name=_("Category")) description = models.CharField(max_length=250, verbose_name=_("Description")) created_by = CreatingUserField(related_name="ArticlesMasterCreatedBy") created_date = models.DateTimeField(auto_now_add=True, auto_now=False) updated_by = LastUserField(related_name="ArticlesMasterUpdatedBy") updated_date = models.DateTimeField(auto_now_add=False, auto_now=True) @property def short_description(self): return truncatechars(self.description, 50) def __str__(self): return self.category class Meta: verbose_name = "ArticlesMaster" verbose_name_plural = "ArticlesMaster" db_table = 'articles_master' ordering = ('category', ) indexes = [models.Index(fields=['category'])]
def get_logging_fields(self, model): """ Returns a dictionary mapping of the fields that are used for keeping the acutal audit log entries. """ rel_name = '_%s_audit_log_entry' % model._meta.object_name.lower() def entry_instance_to_unicode(log_entry): try: result = u'%s: %s %s at %s' % ( model._meta.object_name, log_entry.object_state, log_entry.get_action_type_display().lower(), log_entry.action_date, ) except AttributeError: result = u'%s %s at %s' % (model._meta.object_name, log_entry.get_action_type_display(). lower(), log_entry.action_date) return result return { 'action_id': models.AutoField(primary_key=True), 'action_date': models.DateTimeField(auto_now_add=True), 'action_user': LastUserField(related_name=rel_name), 'action_type': models.CharField(max_length=1, choices=ACTION_TYPES), 'action_ip': LastIPField(), 'locked': models.NullBooleanField(), 'object_state': LogEntryObjectDescriptor(model), '__unicode__': entry_instance_to_unicode, }
class Barcode(models.Model): name = models.CharField(max_length=255, unique=True) updated = models.DateTimeField('Updated date', editable=False, default=datetime.datetime.now) created = models.DateTimeField('Created date', editable=False, default=datetime.datetime.now) modified_by = LastUserField() modified_session = LastSessionKeyField() def __str__(self): return self.name
class Project(models.Model): name = models.CharField(max_length=255) description = models.CharField(max_length=255, null=True, blank=True) updated = models.DateTimeField('Updated date', editable=False, default=datetime.datetime.now) created = models.DateTimeField('Created date', editable=False, default=datetime.datetime.now) modified_by = LastUserField() modified_session = LastSessionKeyField() def __str__(self): return self.name
class ProductCategory(models.Model): created_by = CreatingUserField(related_name="created_categories") modified_by = LastUserField(related_name="modified_categories") name = models.CharField(max_length=150, primary_key=True) description = models.TextField() audit_log = AuditLog() def __unicode__(self): return self.name
class Sampletype(models.Model): name = models.CharField(max_length=10, blank=False, null=False, unique=True, default="Other") updated = models.DateTimeField('Updated date', editable=False, default=datetime.datetime.now) created = models.DateTimeField('Created date', editable=False, default=datetime.datetime.now) modified_by = LastUserField() modified_session = LastSessionKeyField() class Meta: verbose_name_plural="Sampletype" def __str__(self): return self.name
class AuthStampedModel(Model): """ An abstract base class model that provides auth and session information fields. """ created_by = CreatingUserField(verbose_name=_("created by"), related_name="created_%(app_label)s_%(class)s_set") created_with_session_key = CreatingSessionKeyField(_("created with session key")) modified_by = LastUserField(verbose_name=_("modified by"), related_name="modified_%(app_label)s_%(class)s_set") modified_with_session_key = LastSessionKeyField(_("modified with session key")) class Meta: abstract = True
class Status(models.Model): current = models.CharField(max_length=255, unique=True) updated = models.DateTimeField('Updated date', editable=False, default=datetime.datetime.now) created = models.DateTimeField('Created date', editable=False, default=datetime.datetime.now) modified_by = LastUserField() modified_session = LastSessionKeyField() class Meta: verbose_name_plural="Status" def __str__(self): return self.current
class Customer(models.Model): project = models.ForeignKey(Project) name = models.CharField(max_length=255) contact = models.CharField(max_length=255) email = models.EmailField(max_length=70, blank=True, null=True) phone = PhoneNumberField(blank=True, null=True) updated = models.DateTimeField('Updated date', editable=False, default=datetime.datetime.now) created = models.DateTimeField('Created date', editable=False, default=datetime.datetime.now) modified_by = LastUserField() modified_session = LastSessionKeyField() def __str__(self): return self.name
class Videos(models.Model): class Quality(models.IntegerChoices): DIAMOND = 1 SPADE = 2 HEART = 3 CLUB = 4 video_category = models.ForeignKey(VideoMaster, on_delete=models.CASCADE, verbose_name=_("Article Category")) title = models.CharField(max_length=200, verbose_name=_("Title")) video_url = models.URLField(max_length=200, blank=True, null=True, verbose_name=_("Video URL")) video_playlist_id = models.CharField(max_length=50, blank=True, null=True, verbose_name=_("Video Play list ID")) description = models.TextField(blank=True, null=True, verbose_name=_("Description")) tags = models.CharField(max_length=250, blank=True, null=True, verbose_name=_("Tags")) title_images = models.ImageField(upload_to='Article/Images/', verbose_name=_("Title Images")) quality = models.IntegerField(choices=Quality.choices, blank=True, null=True, verbose_name=_("Quality")) created_by = CreatingUserField(related_name="VideosCreatedBy") created_date = models.DateTimeField(auto_now_add=True, auto_now=False) updated_by = LastUserField(related_name="VideosUpdatedBy") updated_date = models.DateTimeField(auto_now_add=False, auto_now=True) @property def short_description(self): return truncatechars(self.description, 50) def __str__(self): return self.title class Meta: verbose_name = "Videos" verbose_name_plural = "Videos" db_table = 'videos' ordering = ('title', ) indexes = [models.Index(fields=['title'])]
class Article(models.Model): class Quality(models.IntegerChoices): DIAMOND = 1 SPADE = 2 HEART = 3 CLUB = 4 article_category = models.ForeignKey(ArticlesMaster, on_delete=models.CASCADE, verbose_name=_("Article Category")) title = models.CharField(max_length=200, verbose_name=_("Title")) description = RichTextField(verbose_name=_("Description")) tags = models.CharField(max_length=250, blank=True, null=True, verbose_name=_("Tags")) title_images = models.ImageField(upload_to='Article/Images/', verbose_name=_("Title Images")) external_links = models.URLField(max_length=200, blank=True, null=True, verbose_name=_("External Links")) avg_read_time = models.CharField(max_length=50, blank=True, null=True, verbose_name=_("Average read time")) quality = models.IntegerField(choices=Quality.choices, blank=True, null=True, verbose_name=_("Quality")) created_by = CreatingUserField(related_name="ArticleCreatedBy") created_date = models.DateTimeField(auto_now_add=True, auto_now=False) updated_by = LastUserField(related_name="ArticleUpdatedBy") updated_date = models.DateTimeField(auto_now_add=False, auto_now=True) @property def short_description(self): return truncatechars(self.description, 50) def __str__(self): return self.title class Meta: verbose_name = "Article" verbose_name_plural = "Article" db_table = 'article' ordering = ('title', ) indexes = [models.Index(fields=['title'])]
class AuthTimeStampedModel(Model): """ An abstract base class model that provides auth and session information fields. """ created_by = CreatingUserField( verbose_name=_("created by"), related_name="created_%(app_label)s_%(class)s_set") created_at = CreatingDateTimeField(_("created at")) modified_by = LastUserField( verbose_name=_("modified by"), related_name="modified_%(app_label)s_%(class)s_set") modified_at = LastDateTimeField(_("modified at")) class Meta: abstract = True
class CityMaster(models.Model): state = models.ForeignKey(StateMaster, on_delete=models.CASCADE, verbose_name=_("State Name")) city_name = models.CharField(max_length=100, verbose_name=_("City Name")) created_by = CreatingUserField(related_name="CityMasterCreatedBy") created_date = models.DateTimeField(auto_now_add=True, auto_now=False) updated_by = LastUserField(related_name="CityMasterUpdatedBy") updated_date = models.DateTimeField(auto_now_add=False, auto_now=True) def __str__(self): return self.city_name class Meta: verbose_name = "City Master" verbose_name_plural = "City Master" db_table = 'city_master' ordering = ('city_name', ) indexes = [models.Index(fields=['city_name'])]
class Storage(models.Model): TYPE = ( ('1', 'Shelf'), ('2', 'Rack'), ) RACKNO = [(i,i+1) for i in range(40)] name = models.CharField(max_length=255, unique=False) type = models.CharField(max_length=255, choices=TYPE) rackno = models.PositiveIntegerField(choices=RACKNO) updated = models.DateTimeField('Updated date', editable=False, default=datetime.datetime.now) created = models.DateTimeField('Created date', editable=False, default=datetime.datetime.now) modified_by = LastUserField() modified_session = LastSessionKeyField() class Meta: verbose_name_plural="Storage" def __str__(self): return self.name
class StateMaster(models.Model): COUNTRY_CHOICES = ((u'1', u'INDIA'), ) state_name = models.CharField(max_length=100, verbose_name=_("State Name")) country_id = models.CharField(max_length=1, default=1, choices=COUNTRY_CHOICES, verbose_name=_("Country Name")) created_by = CreatingUserField(related_name="StateMasterCreatedBy") created_date = models.DateTimeField(auto_now_add=True, auto_now=False) updated_by = LastUserField(related_name="StateMasterUpdatedBy") updated_date = models.DateTimeField(auto_now_add=False, auto_now=True) def __str__(self): return self.state_name class Meta: verbose_name = "State Master" verbose_name_plural = "State Master" db_table = 'state_master' ordering = ('state_name', ) indexes = [models.Index(fields=['state_name'])]
class Sample(models.Model): barcode = models.ForeignKey(Barcode) project = models.ForeignKey(Project) customer = models.ForeignKey(Customer) species = models.ForeignKey(Species) status = models.ForeignKey(Status) storage = models.ForeignKey(Storage) sampletype = models.ForeignKey(Sampletype, default=1) plate_position = models.CharField(max_length=3, blank=False, null=False) customer_plate = models.CharField(max_length=50, blank=True) customer_sample = models.CharField(max_length=255, blank=True) concentration = models.CharField(max_length=10, blank=True, null=True) volume = models.CharField(max_length=10, blank=True, null=True) comment = models.CharField(max_length=255, blank=True, default='') updated = models.DateTimeField('Updated date', editable=False, default=datetime.datetime.now) created = models.DateTimeField('Created date', editable=False, default=datetime.datetime.now) created_by = CreatingUserField(related_name = "created_categories") created_with_session_key = CreatingSessionKeyField() modified_by = LastUserField() modified_session = LastSessionKeyField() class Meta: unique_together = ('barcode', 'plate_position',) def save(self, *args, **kwargs): ''' On save, update timestamps ''' if not self.id: self.created = datetime.datetime.today() self.updated = datetime.datetime.today() return super(Sample, self).save(*args, **kwargs) def save_model(self, request, obj, form, change): obj.user = request.user obj.save() def __str__(self): return self.plate_position
class VideoMaster(models.Model): Video = ( (u'', u'Select'), (u'Flutter', u'Flutter'), (u'Django', u'Django'), (u'Python', u'Python'), (u'Dart', u'Dart'), ) video_category = models.CharField(max_length=25, choices=Video, verbose_name=_("Video Category")) description = models.CharField(max_length=250, verbose_name=_("Description")) created_by = CreatingUserField(related_name="VideoMasterCreatedBy") created_date = models.DateTimeField(auto_now_add=True, auto_now=False) updated_by = LastUserField(related_name="VideoMasterUpdatedBy") updated_date = models.DateTimeField(auto_now_add=False, auto_now=True) @property def short_description(self): return truncatechars(self.description, 50) def __str__(self): return self.video_category
class ProductRating(models.Model): user = LastUserField() session = LastSessionKeyField() product = models.ForeignKey(Product) rating = models.PositiveIntegerField()