diff --git a/requirements.txt b/requirements.txt index f9329ef..72e3e6d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -24,3 +24,4 @@ django-tables2==1.6.1 pep8==1.7.0 dealer==2.0.5 django-modeltranslation==0.12.1 +django-auditlog==0.4.3 diff --git a/sikweb/settings-sample.py b/sikweb/settings-sample.py index 40ec433..d775560 100644 --- a/sikweb/settings-sample.py +++ b/sikweb/settings-sample.py @@ -50,6 +50,7 @@ INSTALLED_APPS = [ 'django_nose', 'bootstrap3', 'django_tables2', + 'auditlog' ] TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' @@ -73,6 +74,7 @@ MIDDLEWARE_CLASSES = [ 'django.contrib.auth.middleware.SessionAuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', + 'auditlog.middleware.AuditlogMiddleware' ] CORS_ORIGIN_ALLOW_ALL = True diff --git a/webapp/migrations/0011_auto_20170615_1924.py b/webapp/migrations/0011_auto_20170615_1924.py deleted file mode 100644 index 2aa72c3..0000000 --- a/webapp/migrations/0011_auto_20170615_1924.py +++ /dev/null @@ -1,68 +0,0 @@ -# -*- 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 040610e..b7ac62f 100644 --- a/webapp/models.py +++ b/webapp/models.py @@ -5,35 +5,16 @@ from django.contrib.auth.models import User from webapp.utils import month_from_now from django.utils.translation import ugettext_lazy as _ from django.contrib.auth.models import User +from auditlog.registry import auditlog -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): +class Tag(models.Model): slug = models.SlugField(primary_key=True) name = models.CharField(max_length=127) icon = models.ImageField() -class BaseFeed(AuditedModel): +class BaseFeed(models.Model): ''' model containing something showing on some info feed ''' @@ -55,7 +36,7 @@ class Event(BaseFeed): end_time = models.DateTimeField(default=timezone.now) -class BaseRole(AuditedModel): +class BaseRole(models.Model): ''' Base model for occupations/roles ''' @@ -82,7 +63,7 @@ class CustomKaehmyRole(BaseRole): form = models.ForeignKey('KaehmyForm', related_name='custom_roles') -class MessageParent(AuditedModel): +class MessageParent(models.Model): pass @@ -128,3 +109,11 @@ class Official(User): verbose_name = _('Official') phone_number = models.TextField(_('Phone number')) + + +auditlog.register(Tag) +auditlog.register(Feed) +auditlog.register(Event) +auditlog.register(PresetRole) +auditlog.register(Role) +auditlog.register(Official)