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

Damien Lespiau damien.lespiau at intel.com
Wed Oct 21 09:40:45 AEDT 2015


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 at 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 --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 = [
-- 
2.4.3



More information about the Patchwork mailing list