diff --git a/src/stats/admin.py b/src/stats/admin.py index b15fe688a474384b6789e41d5767b88aca654f4c..fd70892afee769a75d1164ebdc0c5fcb4b31a293 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 0000000000000000000000000000000000000000..11bcd479e58a3a965982f251caa3b021c98273f2 --- /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 854def4bdcf72136b6321ef7b52eb2d87f97ca72..967058c5a5aced81d38a6bbfafef72c53e1e05a5 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 0000000000000000000000000000000000000000..2405ffb181c07eaee91519ca302bc91e11a98d36 --- /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 ab02beecf953a638ab191eac51ec2cf646f54378..0620c993155de89cea2f2c9e463d00737248b803 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')