From b42b07277deb9f3a4ed7c0e5ee63df411114902a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Barnab=C3=A1s=20Cz=C3=A9m=C3=A1n?= <trabarni@gmail.com>
Date: Wed, 14 Feb 2018 22:53:23 +0100
Subject: [PATCH] change relation to User and fix export

---
 src/stats/admin.py                            |  8 +++++---
 .../migrations/0006_auto_20180214_2239.py     | 19 +++++++++++++++++++
 src/stats/models.py                           |  4 ++--
 src/stats/resources.py                        | 19 +++++++++++++++++++
 src/stats/serializers.py                      |  2 +-
 5 files changed, 46 insertions(+), 6 deletions(-)
 create mode 100644 src/stats/migrations/0006_auto_20180214_2239.py
 create mode 100644 src/stats/resources.py

diff --git a/src/stats/admin.py b/src/stats/admin.py
index b15fe68..fd70892 100644
--- a/src/stats/admin.py
+++ b/src/stats/admin.py
@@ -1,9 +1,11 @@
 from django.contrib import admin
-from import_export.admin import ImportExportModelAdmin
+from import_export.admin import ExportMixin
 
 from . import models
+from . import resources
 
 
 @admin.register(models.Event)
-class EventAdmin(ImportExportModelAdmin):
-    horizontal_filter = ('visitors', )
+class EventAdmin(ExportMixin, admin.ModelAdmin):
+    filter_horizontal = ('visitors', )
+    resource_class = resources.EventResource
diff --git a/src/stats/migrations/0006_auto_20180214_2239.py b/src/stats/migrations/0006_auto_20180214_2239.py
new file mode 100644
index 0000000..11bcd47
--- /dev/null
+++ b/src/stats/migrations/0006_auto_20180214_2239.py
@@ -0,0 +1,19 @@
+# Generated by Django 2.0.1 on 2018-02-14 21:39
+
+from django.conf import settings
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('stats', '0005_auto_20180214_2206'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='event',
+            name='visitors',
+            field=models.ManyToManyField(related_name='visitor', to=settings.AUTH_USER_MODEL),
+        ),
+    ]
diff --git a/src/stats/models.py b/src/stats/models.py
index 854def4..967058c 100644
--- a/src/stats/models.py
+++ b/src/stats/models.py
@@ -1,5 +1,5 @@
 from django.db import models
-from account.models import Profile
+from django.contrib.auth.models import User
 from django.utils import timezone
 from django.core.exceptions import ValidationError
 
@@ -7,7 +7,7 @@ from django.core.exceptions import ValidationError
 class Event(models.Model):
     name = models.CharField(max_length=255)
     date = models.DateTimeField(null=False)
-    visitors = models.ManyToManyField(Profile, related_name='visitor')
+    visitors = models.ManyToManyField(User, related_name='visitor')
 
     def clean(self):
         if self.date > timezone.now():
diff --git a/src/stats/resources.py b/src/stats/resources.py
new file mode 100644
index 0000000..2405ffb
--- /dev/null
+++ b/src/stats/resources.py
@@ -0,0 +1,19 @@
+from django.contrib.auth.models import User
+from import_export import resources, widgets, fields
+
+from . import models
+
+
+class EventResource(resources.ModelResource):
+    visitors = fields.Field(
+        attribute='visitors',
+        widget=widgets.ManyToManyWidget(model=User, separator=' ,', field='username'),
+    )
+
+    class Meta:
+        model = models.Event
+        fields = (
+            'name',
+            'date',
+            'visitors',
+        )
diff --git a/src/stats/serializers.py b/src/stats/serializers.py
index ab02bee..0620c99 100644
--- a/src/stats/serializers.py
+++ b/src/stats/serializers.py
@@ -5,4 +5,4 @@ from . import models
 class EventSerializer(serializers.ModelSerializer):
     class Meta:
         model = models.Event
-        fields = ('date',  'visitors')
+        fields = ('name', 'date', 'visitors')
-- 
GitLab