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