Use django-auditlog 😏
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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,
|
||||
),
|
||||
]
|
||||
+13
-24
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user