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,
     }
Beispiel #3
0
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,
        }
Beispiel #5
0
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
Beispiel #6
0
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
Beispiel #8
0
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
Beispiel #9
0
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
Beispiel #10
0
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
Beispiel #11
0
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'])]
Beispiel #13
0
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
Beispiel #15
0
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'])]
Beispiel #16
0
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
Beispiel #17
0
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'])]
Beispiel #18
0
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
Beispiel #19
0
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()