diff --git a/src/pretix/base/migrations/0112_auto_20190304_1726.py b/src/pretix/base/migrations/0112_auto_20190304_1726.py new file mode 100644 index 0000000000..66ed6d0544 --- /dev/null +++ b/src/pretix/base/migrations/0112_auto_20190304_1726.py @@ -0,0 +1,27 @@ +# Generated by Django 2.1.5 on 2019-03-04 17:26 + +from django.db import migrations +from django.db.models import Count + + +def make_checkins_unique(apps, se): + Checkin = apps.get_model('pretixbase', 'Checkin') + for d in Checkin.objects.order_by().values('list_id', 'position_id').annotate(c=Count('id')).filter(c__gt=1): + for c in Checkin.objects.filter(list_id=d['list_id'], position_id=d['position_id'])[:d['c'] - 1]: + c.delete() + + +class Migration(migrations.Migration): + dependencies = [ + ('pretixbase', '0111_auto_20190219_0949'), + ] + + operations = [ + migrations.RunPython( + make_checkins_unique, migrations.RunPython.noop, + ), + migrations.AlterUniqueTogether( + name='checkin', + unique_together={('list', 'position')}, + ), + ] diff --git a/src/pretix/base/models/checkin.py b/src/pretix/base/models/checkin.py index f6b280bf59..308576aeb9 100644 --- a/src/pretix/base/models/checkin.py +++ b/src/pretix/base/models/checkin.py @@ -167,6 +167,9 @@ class Checkin(models.Model): 'pretixbase.CheckinList', related_name='checkins', on_delete=models.PROTECT, ) + class Meta: + unique_together = (('list', 'position'),) + def __repr__(self): return "".format( self.position, self.list, self.datetime