diff mbox

[5/7] models: Add Event and EventLog models

Message ID 1445380847-22838-6-git-send-email-damien.lespiau@intel.com
State Rejected
Headers show

Commit Message

Damien Lespiau Oct. 20, 2015, 10:40 p.m. UTC
I'd like to be able to track the history of manipulations done on series
(and probably its patches as well). To start with, I'm only interested
in when series are created so I can export a RSS feed containing the
new series.

For the curious mind, a full event table for just one field seems a bit
overkill. I have to mind to attach more properties to events. For
instance link a state to an event so we can generically set the state of
a series/patch when a certain event is created.

Signed-off-by: Damien Lespiau <damien.lespiau@intel.com>
---
 patchwork/migrations/0005_event_eventlog.py | 36 +++++++++++++++++++++++++++++
 patchwork/models.py                         | 12 ++++++++++
 2 files changed, 48 insertions(+)
 create mode 100644 patchwork/migrations/0005_event_eventlog.py
diff mbox

Patch

diff --git a/patchwork/migrations/0005_event_eventlog.py b/patchwork/migrations/0005_event_eventlog.py
new file mode 100644
index 0000000..fef151c
--- /dev/null
+++ b/patchwork/migrations/0005_event_eventlog.py
@@ -0,0 +1,36 @@ 
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.db import models, migrations
+from django.conf import settings
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
+        ('patchwork', '0004_project_git_send_email_only'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Event',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('name', models.CharField(max_length=20)),
+            ],
+        ),
+        migrations.CreateModel(
+            name='EventLog',
+            fields=[
+                ('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
+                ('event_time', models.DateTimeField(auto_now=True)),
+                ('event', models.ForeignKey(to='patchwork.Event')),
+                ('series', models.ForeignKey(to='patchwork.Series')),
+                ('user', models.ForeignKey(to=settings.AUTH_USER_MODEL, null=True)),
+            ],
+            options={
+                'ordering': ['-event_time'],
+            },
+        ),
+    ]
diff --git a/patchwork/models.py b/patchwork/models.py
index 24fac6c..28e28bb 100644
--- a/patchwork/models.py
+++ b/patchwork/models.py
@@ -540,6 +540,18 @@  class SeriesRevisionPatch(models.Model):
         unique_together = [('revision', 'patch'), ('revision', 'order')]
         ordering = ['order']
 
+class Event(models.Model):
+    name = models.CharField(max_length=20)
+
+class EventLog(models.Model):
+    event = models.ForeignKey(Event)
+    event_time = models.DateTimeField(auto_now=True)
+    series = models.ForeignKey(Series)
+    user = models.ForeignKey(User, null=True)
+
+    class Meta:
+        ordering = ['-event_time']
+
 class EmailConfirmation(models.Model):
     validity = datetime.timedelta(days = settings.CONFIRMATION_VALIDITY_DAYS)
     type = models.CharField(max_length = 20, choices = [