2013-10-21 19:46:31 +00:00
|
|
|
from django.db import models
|
2013-11-07 16:02:31 +00:00
|
|
|
from auditlog.models import AuditlogHistoryField
|
2013-10-21 19:46:31 +00:00
|
|
|
from auditlog.registry import auditlog
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SimpleModel(models.Model):
|
|
|
|
|
"""
|
|
|
|
|
A simple model with no special things going on.
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
text = models.TextField(blank=True)
|
|
|
|
|
boolean = models.BooleanField(default=False)
|
|
|
|
|
integer = models.IntegerField(blank=True, null=True)
|
|
|
|
|
datetime = models.DateTimeField(auto_now=True)
|
|
|
|
|
|
2013-11-07 16:02:31 +00:00
|
|
|
history = AuditlogHistoryField()
|
2013-10-21 19:46:31 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class AltPrimaryKeyModel(models.Model):
|
|
|
|
|
"""
|
|
|
|
|
A model with a non-standard primary key.
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
key = models.CharField(max_length=100, primary_key=True)
|
|
|
|
|
|
2013-10-23 15:10:59 +00:00
|
|
|
text = models.TextField(blank=True)
|
|
|
|
|
boolean = models.BooleanField(default=False)
|
|
|
|
|
integer = models.IntegerField(blank=True, null=True)
|
|
|
|
|
datetime = models.DateTimeField(auto_now=True)
|
|
|
|
|
|
2013-11-07 16:02:31 +00:00
|
|
|
history = AuditlogHistoryField(pk_indexable=False)
|
2013-10-21 19:46:31 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class ProxyModel(SimpleModel):
|
|
|
|
|
"""
|
|
|
|
|
A model that is a proxy for another model.
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
|
proxy = True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RelatedModel(models.Model):
|
|
|
|
|
"""
|
|
|
|
|
A model with a foreign key.
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
related = models.ForeignKey('self')
|
|
|
|
|
|
2013-11-07 16:02:31 +00:00
|
|
|
history = AuditlogHistoryField()
|
2013-10-21 19:46:31 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
class ManyRelatedModel(models.Model):
|
|
|
|
|
"""
|
|
|
|
|
A model with a many to many relation.
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
related = models.ManyToManyField('self')
|
|
|
|
|
|
2013-11-07 16:02:31 +00:00
|
|
|
history = AuditlogHistoryField()
|
2013-10-21 19:46:31 +00:00
|
|
|
|
|
|
|
|
|
2014-10-06 09:16:23 +00:00
|
|
|
class SimpleIncludeModel(models.Model):
|
|
|
|
|
"""
|
|
|
|
|
A simple model used for register's include_fields kwarg
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
label = models.CharField(max_length=100)
|
|
|
|
|
text = models.TextField(blank=True)
|
|
|
|
|
|
|
|
|
|
history = AuditlogHistoryField()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class SimpleExcludeModel(models.Model):
|
|
|
|
|
"""
|
|
|
|
|
A simple model used for register's exclude_fields kwarg
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
label = models.CharField(max_length=100)
|
|
|
|
|
text = models.TextField(blank=True)
|
|
|
|
|
|
|
|
|
|
history = AuditlogHistoryField()
|
|
|
|
|
|
|
|
|
|
|
2015-06-01 18:01:40 +00:00
|
|
|
class AdditionDataIncludedModel(models.Model):
|
|
|
|
|
"""
|
|
|
|
|
A model where get_additional_data is defined which allows for logging extra
|
|
|
|
|
information about the model in JSON
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
label = models.CharField(max_length=100)
|
|
|
|
|
text = models.TextField(blank=True)
|
|
|
|
|
related = models.ForeignKey(SimpleModel)
|
|
|
|
|
|
|
|
|
|
history = AuditlogHistoryField()
|
|
|
|
|
|
|
|
|
|
def get_additional_data(self):
|
|
|
|
|
"""
|
|
|
|
|
Returns JSON that captures a snapshot of additional details of the
|
|
|
|
|
model instance. This method, if defined, is accessed by auditlog
|
|
|
|
|
manager and added to each logentry instance on creation.
|
|
|
|
|
"""
|
|
|
|
|
object_details = {
|
|
|
|
|
'related_model_id': self.related.id,
|
|
|
|
|
'related_model_text': self.related.text
|
|
|
|
|
}
|
|
|
|
|
return object_details
|
|
|
|
|
|
2013-10-21 19:46:31 +00:00
|
|
|
auditlog.register(SimpleModel)
|
2013-10-23 15:10:59 +00:00
|
|
|
auditlog.register(AltPrimaryKeyModel)
|
|
|
|
|
auditlog.register(ProxyModel)
|
2014-10-06 09:16:23 +00:00
|
|
|
auditlog.register(SimpleIncludeModel, include_fields=['label', ])
|
|
|
|
|
auditlog.register(SimpleExcludeModel, exclude_fields=['label', ])
|
2015-06-01 18:01:40 +00:00
|
|
|
auditlog.register(AdditionDataIncludedModel)
|