diff --git a/src/stats/admin.py b/src/stats/admin.py index fd70892afee769a75d1164ebdc0c5fcb4b31a293..6fc16517abb03ecce68ab234398cafd96c879f53 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 0000000000000000000000000000000000000000..8b08926a7916ef37a514309d69c0f9b3ac8779c0 --- /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 854def4bdcf72136b6321ef7b52eb2d87f97ca72..aa38fd947c9ec32fd41c407f52387c1c683779b7 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 848f9465de8fdeb289cf40ae337f3a7cde5d9afd..712c971ae27eb0f4bebfd30be07eb952d8c5fbb7 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