From c9aef9dba4dfc6aa8d75237e85c1fe18eace66fb Mon Sep 17 00:00:00 2001 From: Jan Tuomi Date: Thu, 15 Jun 2017 19:32:17 +0300 Subject: [PATCH] Created audit log models --- webapp/migrations/0011_auto_20170615_1924.py | 68 ++++++++++++++++++++ webapp/models.py | 28 ++++++-- 2 files changed, 92 insertions(+), 4 deletions(-) create mode 100644 webapp/migrations/0011_auto_20170615_1924.py diff --git a/webapp/migrations/0011_auto_20170615_1924.py b/webapp/migrations/0011_auto_20170615_1924.py new file mode 100644 index 0000000..2aa72c3 --- /dev/null +++ b/webapp/migrations/0011_auto_20170615_1924.py @@ -0,0 +1,68 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11 on 2017-06-15 16:24 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion +import django.utils.timezone + + +class Migration(migrations.Migration): + + dependencies = [ + ('webapp', '0010_auto_20170608_0924'), + ] + + operations = [ + migrations.CreateModel( + name='AuditedModel', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ], + ), + migrations.CreateModel( + name='AuditLogEntry', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('date', models.DateTimeField(default=django.utils.timezone.now)), + ('event', models.CharField(choices=[('CREATED', 'Created'), ('MODIFIED', 'Modified'), ('DELETED', 'Deleted')], max_length=10)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='webapp.Official')), + ], + ), + migrations.RemoveField( + model_name='basefeed', + name='id', + ), + migrations.RemoveField( + model_name='baserole', + name='id', + ), + migrations.RemoveField( + model_name='messageparent', + name='id', + ), + migrations.AddField( + model_name='basefeed', + name='auditedmodel_ptr', + field=models.OneToOneField(auto_created=True, default=1, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='webapp.AuditedModel'), + preserve_default=False, + ), + migrations.AddField( + model_name='baserole', + name='auditedmodel_ptr', + field=models.OneToOneField(auto_created=True, default=1, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='webapp.AuditedModel'), + preserve_default=False, + ), + migrations.AddField( + model_name='messageparent', + name='auditedmodel_ptr', + field=models.OneToOneField(auto_created=True, default=1, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='webapp.AuditedModel'), + preserve_default=False, + ), + migrations.AddField( + model_name='tag', + name='auditedmodel_ptr', + field=models.OneToOneField(auto_created=True, default=1, on_delete=django.db.models.deletion.CASCADE, parent_link=True, to='webapp.AuditedModel'), + preserve_default=False, + ), + ] diff --git a/webapp/models.py b/webapp/models.py index d314415..040610e 100644 --- a/webapp/models.py +++ b/webapp/models.py @@ -7,13 +7,33 @@ from django.utils.translation import ugettext_lazy as _ from django.contrib.auth.models import User -class Tag(models.Model): +class AuditLogEntry(models.Model): + ''' + A single entry in the audit log + ''' + user = models.ForeignKey('Official') + date = models.DateTimeField(default=timezone.now) + event = models.CharField(choices=[ + ('CREATED', _('Created')), + ('MODIFIED', _('Modified')), + ('DELETED', _('Deleted'))], + max_length=10) + + +class AuditedModel(models.Model): + ''' + Superclass for all audited models, e.g. events + ''' + pass + + +class Tag(AuditedModel): slug = models.SlugField(primary_key=True) name = models.CharField(max_length=127) icon = models.ImageField() -class BaseFeed(models.Model): +class BaseFeed(AuditedModel): ''' model containing something showing on some info feed ''' @@ -35,7 +55,7 @@ class Event(BaseFeed): end_time = models.DateTimeField(default=timezone.now) -class BaseRole(models.Model): +class BaseRole(AuditedModel): ''' Base model for occupations/roles ''' @@ -62,7 +82,7 @@ class CustomKaehmyRole(BaseRole): form = models.ForeignKey('KaehmyForm', related_name='custom_roles') -class MessageParent(models.Model): +class MessageParent(AuditedModel): pass