From 4992b1796668100e355a0387730863f6812fd5a4 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 20 Apr 2020 17:16:02 +0200 Subject: [PATCH] Squash some migrations --- ...01_1527_squashed_0141_seat_sorting_rank.py | 557 ++++++++++++++++++ 1 file changed, 557 insertions(+) create mode 100644 src/pretix/base/migrations/0108_auto_20190201_1527_squashed_0141_seat_sorting_rank.py diff --git a/src/pretix/base/migrations/0108_auto_20190201_1527_squashed_0141_seat_sorting_rank.py b/src/pretix/base/migrations/0108_auto_20190201_1527_squashed_0141_seat_sorting_rank.py new file mode 100644 index 0000000000..3005c513df --- /dev/null +++ b/src/pretix/base/migrations/0108_auto_20190201_1527_squashed_0141_seat_sorting_rank.py @@ -0,0 +1,557 @@ +# Generated by Django 3.0.4 on 2020-04-20 15:06 + +from decimal import Decimal +from django.conf import settings +from django.core.cache import cache +from django.db import migrations, models +import django.db.models.deletion +import jsonfallback.fields +from django.db.models import Count + +import pretix.base.models.base +import pretix.base.models.fields +import pretix.base.models.orders + + +def fwd(app, schema_editor): + Team = app.get_model('pretixbase', 'Team') + Team.objects.filter(can_change_organizer_settings=True).update(can_manage_gift_cards=True) + + +def mail_migrator(app, schema_editor): + Event_SettingsStore = app.get_model('pretixbase', 'Event_SettingsStore') + + for ss in Event_SettingsStore.objects.filter( + key__in=['mail_text_order_approved', 'mail_text_order_placed', 'mail_text_order_placed_require_approval'] + ): + chgd = ss.value.replace("{date}", "{expire_date}") + if chgd != ss.value: + ss.value = chgd + ss.save() + cache.delete('hierarkey_{}_{}'.format('event', ss.object_id)) + + +def set_show_hidden_items(apps, schema_editor): + Voucher = apps.get_model('pretixbase', 'Voucher') + Voucher.objects.filter(quota__isnull=False).update(show_hidden_items=False) + + +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): + replaces = [('pretixbase', '0108_auto_20190201_1527'), ('pretixbase', '0109_auto_20190208_1432'), + ('pretixbase', '0110_auto_20190219_1245'), ('pretixbase', '0111_auto_20190219_0949'), + ('pretixbase', '0112_auto_20190304_1726'), ('pretixbase', '0113_auto_20190312_0942'), + ('pretixbase', '0114_auto_20190316_1014'), ('pretixbase', '0115_auto_20190323_2238'), + ('pretixbase', '0116_auto_20190402_0722'), ('pretixbase', '0117_auto_20190418_1149'), + ('pretixbase', '0118_auto_20190423_0839'), ('pretixbase', '0119_auto_20190509_0654'), + ('pretixbase', '0120_auto_20190509_0736'), ('pretixbase', '0121_order_email_known_to_work'), + ('pretixbase', '0122_orderposition_web_secret'), ('pretixbase', '0123_auto_20190530_1035'), + ('pretixbase', '0124_seat_seat_guid'), ('pretixbase', '0125_voucher_show_hidden_items'), + ('pretixbase', '0126_item_show_quota_left'), ('pretixbase', '0127_auto_20190711_0705'), + ('pretixbase', '0128_auto_20190715_1510'), ('pretixbase', '0129_auto_20190724_1548'), + ('pretixbase', '0130_auto_20190729_1311'), ('pretixbase', '0131_auto_20190729_1422'), + ('pretixbase', '0132_auto_20190808_1253'), ('pretixbase', '0133_auto_20190830_1513'), + ('pretixbase', '0134_auto_20190909_1042'), ('pretixbase', '0135_auto_20191007_0803'), + ('pretixbase', '0136_auto_20190918_1742'), ('pretixbase', '0137_auto_20191015_1141'), + ('pretixbase', '0138_auto_20191017_1151'), ('pretixbase', '0139_auto_20191019_1317'), + ('pretixbase', '0140_voucher_seat'), ('pretixbase', '0141_seat_sorting_rank')] + + dependencies = [ + ('pretixbase', '0107_auto_20190129_1337'), + ] + + operations = [ + migrations.AddField( + model_name='item', + name='generate_tickets', + field=models.NullBooleanField(verbose_name='Allow ticket download'), + ), + migrations.AddField( + model_name='invoiceline', + name='event_date_from', + field=models.DateTimeField(null=True), + ), + migrations.AddField( + model_name='invoiceline', + name='subevent', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, + to='pretixbase.SubEvent'), + ), + migrations.AlterField( + model_name='event', + name='plugins', + field=models.TextField(blank=True, default='', verbose_name='Plugins'), + preserve_default=False, + ), + migrations.AddField( + model_name='order', + name='testmode', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='event', + name='testmode', + field=models.BooleanField(default=False), + ), + migrations.RunPython( + code=make_checkins_unique, + reverse_code=django.db.migrations.operations.special.RunPython.noop, + ), + migrations.AlterUniqueTogether( + name='checkin', + unique_together={('list', 'position')}, + ), + migrations.AddField( + model_name='question', + name='dependency_question', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, + related_name='dependent_questions', to='pretixbase.Question'), + ), + migrations.AddField( + model_name='question', + name='dependency_value', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='cartposition', + name='is_bundled', + field=models.BooleanField(default=False), + ), + migrations.AlterField( + model_name='cartposition', + name='addon_to', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, + related_name='addons', to='pretixbase.CartPosition'), + ), + migrations.AlterField( + model_name='orderposition', + name='addon_to', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, + related_name='addons', to='pretixbase.OrderPosition'), + ), + migrations.AddField( + model_name='item', + name='require_bundling', + field=models.BooleanField(default=False, + help_text='If this option is set, the product will only be sold as part of bundle products.', + verbose_name='Only sell this product as part of a bundle'), + ), + migrations.CreateModel( + name='ItemBundle', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('count', models.PositiveIntegerField(default=1, verbose_name='Number')), + ('designated_price', models.DecimalField(blank=True, decimal_places=2, default=Decimal('0.00'), + help_text="If set, it will be shown that this bundled item is responsible for the given value of the total gross price. This might be important in cases of mixed taxation, but can be kept blank otherwise. This value will NOT be added to the base item's price.", + max_digits=10, verbose_name='Designated price part')), + ('base_item', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bundles', + to='pretixbase.Item')), + ('bundled_item', + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='bundled_with', + to='pretixbase.Item', verbose_name='Bundled item')), + ('bundled_variation', + models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, + related_name='bundled_with', to='pretixbase.ItemVariation', + verbose_name='Bundled variation')), + ], + ), + migrations.AddField( + model_name='device', + name='revoked', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='itemvariation', + name='original_price', + field=models.DecimalField(blank=True, decimal_places=2, + help_text='If set, this will be displayed next to the current price to show that the current price is a discounted one. This is just a cosmetic setting and will not actually impact pricing.', + max_digits=7, null=True, verbose_name='Original price'), + ), + migrations.AddField( + model_name='subevent', + name='is_public', + field=models.BooleanField(default=True, + help_text='If selected, this event will show up publicly on the list of dates for your event.', + verbose_name='Show in lists'), + ), + migrations.AddField( + model_name='question', + name='hidden', + field=models.BooleanField(default=False, help_text='This question will only show up in the backend.', + verbose_name='Hidden question'), + ), + migrations.AlterField( + model_name='cartposition', + name='attendee_name_parts', + field=jsonfallback.fields.FallbackJSONField(default=dict), + ), + migrations.AlterField( + model_name='cartposition', + name='subevent', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='pretixbase.SubEvent'), + ), + migrations.AlterField( + model_name='cartposition', + name='voucher', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='pretixbase.Voucher'), + ), + migrations.AlterField( + model_name='event', + name='is_public', + field=models.BooleanField(default=True), + ), + migrations.AlterField( + model_name='invoiceaddress', + name='name_parts', + field=jsonfallback.fields.FallbackJSONField(default=dict), + ), + migrations.AlterField( + model_name='item', + name='sales_channels', + field=pretix.base.models.fields.MultiStringField(default=['web']), + ), + migrations.AlterField( + model_name='order', + name='sales_channel', + field=models.CharField(default='web', max_length=190), + ), + migrations.AlterField( + model_name='orderposition', + name='attendee_name_parts', + field=jsonfallback.fields.FallbackJSONField(default=dict), + ), + migrations.AlterField( + model_name='orderposition', + name='subevent', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='pretixbase.SubEvent'), + ), + migrations.AlterField( + model_name='orderposition', + name='voucher', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='pretixbase.Voucher'), + ), + migrations.AlterField( + model_name='staffsessionauditlog', + name='method', + field=models.CharField(max_length=255), + ), + migrations.AlterField( + model_name='user', + name='email', + field=models.EmailField(db_index=True, max_length=190, null=True, unique=True), + ), + migrations.AddField( + model_name='order', + name='email_known_to_work', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='orderposition', + name='web_secret', + field=models.CharField(db_index=True, default=pretix.base.models.orders.generate_secret, max_length=32), + ), + migrations.CreateModel( + name='SeatingPlan', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=190)), + ('layout', models.TextField()), + ('organizer', + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='seating_plans', + to='pretixbase.Organizer')), + ], + options={ + 'abstract': False, + }, + bases=(models.Model, pretix.base.models.base.LoggingMixin), + ), + migrations.CreateModel( + name='SeatCategoryMapping', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), + ('layout_category', models.CharField(max_length=190)), + ('event', + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='seat_category_mappings', + to='pretixbase.Event')), + ('product', + models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='seat_category_mappings', + to='pretixbase.Item')), + ('subevent', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, + related_name='seat_category_mappings', to='pretixbase.SubEvent')), + ], + ), + migrations.CreateModel( + name='Seat', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=190)), + ('blocked', models.BooleanField(default=False)), + ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='seats', + to='pretixbase.Event')), + ('product', + models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='seats', + to='pretixbase.Item')), + ('subevent', + models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='seats', + to='pretixbase.SubEvent')), + ('seat_guid', models.CharField(db_index=True, default=None, max_length=190)), + ], + ), + migrations.AddField( + model_name='cartposition', + name='seat', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='pretixbase.Seat'), + ), + migrations.AddField( + model_name='event', + name='seating_plan', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='events', + to='pretixbase.SeatingPlan'), + ), + migrations.AddField( + model_name='orderposition', + name='seat', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, to='pretixbase.Seat'), + ), + migrations.AddField( + model_name='subevent', + name='seating_plan', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='subevents', + to='pretixbase.SeatingPlan'), + ), + migrations.AddField( + model_name='voucher', + name='show_hidden_items', + field=models.BooleanField(default=True), + ), + migrations.RunPython( + code=set_show_hidden_items, + reverse_code=django.db.migrations.operations.special.RunPython.noop, + ), + migrations.AddField( + model_name='item', + name='show_quota_left', + field=models.NullBooleanField(), + ), + migrations.RenameField( + model_name='question', + old_name='dependency_value', + new_name='dependency_values', + ), + migrations.AlterField( + model_name='question', + name='dependency_values', + field=pretix.base.models.fields.MultiStringField(default=['']), + ), + migrations.AddField( + model_name='quota', + name='close_when_sold_out', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='quota', + name='closed', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='item', + name='hidden_if_available', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='pretixbase.Quota'), + ), + migrations.AddField( + model_name='seat', + name='row_name', + field=models.CharField(default='', max_length=190), + ), + migrations.AddField( + model_name='seat', + name='seat_number', + field=models.CharField(default='', max_length=190), + ), + migrations.AddField( + model_name='seat', + name='zone_name', + field=models.CharField(default='', max_length=190), + ), + migrations.AddField( + model_name='item', + name='allow_waitinglist', + field=models.BooleanField(default=True), + ), + migrations.AddField( + model_name='invoice', + name='invoice_to_state', + field=models.CharField(max_length=190, null=True), + ), + migrations.AddField( + model_name='invoiceaddress', + name='state', + field=models.CharField(default='', max_length=255), + preserve_default=False, + ), + migrations.AddField( + model_name='question', + name='print_on_invoice', + field=models.BooleanField(default=False), + ), + migrations.CreateModel( + name='WebAuthnDevice', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), + ('name', models.CharField(max_length=64)), + ('confirmed', models.BooleanField(default=True)), + ('credential_id', models.CharField(max_length=255, null=True)), + ('rp_id', models.CharField(max_length=255, null=True)), + ('icon_url', models.CharField(max_length=255, null=True)), + ('ukey', models.TextField(null=True)), + ('pub_key', models.TextField(null=True)), + ('sign_count', models.IntegerField(default=0)), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'abstract': False, + }, + ), + migrations.RunPython( + code=mail_migrator, + reverse_code=django.db.migrations.operations.special.RunPython.noop, + ), + migrations.AddField( + model_name='checkin', + name='auto_checked_in', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='checkinlist', + name='auto_checkin_sales_channels', + field=pretix.base.models.fields.MultiStringField(default=[]), + ), + migrations.AddField( + model_name='user', + name='auth_backend', + field=models.CharField(default='native', max_length=255), + ), + migrations.CreateModel( + name='GiftCard', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), + ('issuance', models.DateTimeField(auto_now_add=True)), + ('secret', models.CharField(db_index=True, default=pretix.base.models.giftcards.gen_giftcard_secret, + max_length=190)), + ('currency', models.CharField(max_length=10)), + ('issued_in', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, + related_name='issued_gift_cards', to='pretixbase.OrderPosition')), + ('issuer', + models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='issued_gift_cards', + to='pretixbase.Organizer')), + ('testmode', models.BooleanField(default=False)), + ], + options={ + 'unique_together': {('secret', 'issuer')}, + }, + bases=(models.Model, pretix.base.models.base.LoggingMixin), + ), + migrations.AddField( + model_name='item', + name='issue_giftcard', + field=models.BooleanField(default=False), + ), + migrations.AddField( + model_name='team', + name='can_manage_gift_cards', + field=models.BooleanField(default=False), + ), + migrations.AlterField( + model_name='question', + name='dependency_values', + field=pretix.base.models.fields.MultiStringField(default=[]), + ), + migrations.AlterField( + model_name='voucher', + name='item', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vouchers', + to='pretixbase.Item'), + ), + migrations.AlterField( + model_name='voucher', + name='quota', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vouchers', + to='pretixbase.Quota'), + ), + migrations.AlterField( + model_name='voucher', + name='variation', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vouchers', + to='pretixbase.ItemVariation'), + ), + migrations.CreateModel( + name='GiftCardTransaction', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), + ('datetime', models.DateTimeField(auto_now_add=True)), + ('value', models.DecimalField(decimal_places=2, max_digits=10)), + ('card', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='transactions', + to='pretixbase.GiftCard')), + ('order', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, + related_name='gift_card_transactions', to='pretixbase.Order')), + ('payment', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, + related_name='gift_card_transactions', to='pretixbase.OrderPayment')), + ('refund', models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, + related_name='gift_card_transactions', to='pretixbase.OrderRefund')), + ], + options={ + 'ordering': ('datetime',), + }, + ), + migrations.CreateModel( + name='GiftCardAcceptance', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False)), + ('collector', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, + related_name='gift_card_issuer_acceptance', to='pretixbase.Organizer')), + ('issuer', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, + related_name='gift_card_collector_acceptance', to='pretixbase.Organizer')), + ], + ), + migrations.RunPython( + code=fwd, + reverse_code=django.db.migrations.operations.special.RunPython.noop, + ), + migrations.AddField( + model_name='event', + name='geo_lat', + field=models.FloatField(null=True), + ), + migrations.AddField( + model_name='event', + name='geo_lon', + field=models.FloatField(null=True), + ), + migrations.AddField( + model_name='subevent', + name='geo_lat', + field=models.FloatField(null=True), + ), + migrations.AddField( + model_name='subevent', + name='geo_lon', + field=models.FloatField(null=True), + ), + migrations.AddField( + model_name='voucher', + name='seat', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.PROTECT, related_name='vouchers', + to='pretixbase.Seat'), + ), + migrations.AddField( + model_name='seat', + name='sorting_rank', + field=models.BigIntegerField(default=0), + ), + ]