From 3f44656ded24d71ece945adac1b6bde435564105 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Barnab=C3=A1s=20Cz=C3=A9m=C3=A1n?= <trabarni@gmail.com>
Date: Wed, 21 Feb 2018 01:43:50 +0100
Subject: [PATCH] Add user notes

---
 src/stats/admin.py                |  7 +++++++
 src/stats/migrations/0008_note.py | 27 +++++++++++++++++++++++++++
 src/stats/models.py               | 13 +++++++++++++
 src/stats/resources.py            | 22 ++++++++++++++++++++++
 4 files changed, 69 insertions(+)
 create mode 100644 src/stats/migrations/0008_note.py

diff --git a/src/stats/admin.py b/src/stats/admin.py
index fd70892..6fc1651 100644
--- a/src/stats/admin.py
+++ b/src/stats/admin.py
@@ -9,3 +9,10 @@ from . import resources
 class EventAdmin(ExportMixin, admin.ModelAdmin):
     filter_horizontal = ('visitors', )
     resource_class = resources.EventResource
+
+
+@admin.register(models.Note)
+class NoteAdmin(ExportMixin, admin.ModelAdmin):
+    list_display = ('user', 'note', 'event', 'created_by', 'created_at', 'updated_at')
+    list_filter = ('user', 'created_by', 'event')
+    resource_class = resources.NoteResource
diff --git a/src/stats/migrations/0008_note.py b/src/stats/migrations/0008_note.py
new file mode 100644
index 0000000..8b08926
--- /dev/null
+++ b/src/stats/migrations/0008_note.py
@@ -0,0 +1,27 @@
+# Generated by Django 2.0.1 on 2018-02-21 00:18
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('account', '0017_auto_20180205_2004'),
+        ('stats', '0007_auto_20180215_0018'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Note',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('note', models.TextField()),
+                ('created_at', models.DateTimeField(auto_now_add=True)),
+                ('updated_at', models.DateTimeField(auto_now=True)),
+                ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='created_notes', to='account.Profile')),
+                ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notes', to='stats.Event')),
+                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notes', to='account.Profile')),
+            ],
+        ),
+    ]
diff --git a/src/stats/models.py b/src/stats/models.py
index 854def4..aa38fd9 100644
--- a/src/stats/models.py
+++ b/src/stats/models.py
@@ -15,3 +15,16 @@ class Event(models.Model):
 
     def __str__(self):
         return self.name
+
+
+class Note(models.Model):
+    event = models.ForeignKey(Event, related_name='notes', on_delete=models.CASCADE)
+    user = models.ForeignKey(Profile, related_name='notes', on_delete=models.CASCADE)
+    note = models.TextField()
+
+    created_by = models.ForeignKey(Profile, related_name='created_notes', on_delete=models.CASCADE)
+    created_at = models.DateTimeField(auto_now_add=True, editable=False)
+    updated_at = models.DateTimeField(auto_now=True, editable=False)
+
+    def __str__(self):
+        return self.note
diff --git a/src/stats/resources.py b/src/stats/resources.py
index 848f946..712c971 100644
--- a/src/stats/resources.py
+++ b/src/stats/resources.py
@@ -17,3 +17,25 @@ class EventResource(resources.ModelResource):
             'date',
             'visitors',
         )
+
+
+class NoteResource(resources.ModelResource):
+    created_by = fields.Field()
+    user = fields.Field()
+
+    class Meta:
+        model = models.Note
+        fields = (
+            'user',
+            'event__name',
+            'note',
+            'created_at',
+            'updated_at',
+            'created_by',
+        )
+
+    def dehydrate_created_by(self, obj):
+        return obj.created_by.full_name
+
+    def dehydrate_user(self, obj):
+        return obj.user.full_name
-- 
GitLab