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