diff --git a/src/tixlbase/migrations/0001_initial.py b/src/tixlbase/migrations/0001_initial.py new file mode 100644 index 000000000..2cf93ab48 --- /dev/null +++ b/src/tixlbase/migrations/0001_initial.py @@ -0,0 +1,455 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations +import versions.models +import django.core.validators +from django.conf import settings +import django.db.models.deletion +import django.utils.timezone +import tixlbase.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('auth', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='User', + fields=[ + ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)), + ('password', models.CharField(max_length=128, verbose_name='password')), + ('last_login', models.DateTimeField(default=django.utils.timezone.now, verbose_name='last login')), + ('is_superuser', models.BooleanField(default=False, help_text='Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), + ('identifier', models.CharField(unique=True, max_length=255)), + ('username', models.CharField(max_length=120, blank=True, null=True, help_text='Letters, digits and @/./+/-/_ only.')), + ('email', models.EmailField(null=True, max_length=75, blank=True, db_index=True, verbose_name='E-mail')), + ('givenname', models.CharField(max_length=255, blank=True, null=True, verbose_name='Given name')), + ('familyname', models.CharField(max_length=255, blank=True, null=True, verbose_name='Family name')), + ('is_active', models.BooleanField(default=True, verbose_name='Is active')), + ('is_staff', models.BooleanField(default=False, verbose_name='Is site admin')), + ('date_joined', models.DateTimeField(verbose_name='Date joined', auto_now_add=True)), + ('locale', models.CharField(max_length=50, choices=[('de', 'German'), ('en', 'English')], default='en', verbose_name='Language')), + ('timezone', models.CharField(max_length=100, default='UTC', verbose_name='Timezone')), + ], + options={ + 'verbose_name_plural': 'Users', + 'verbose_name': 'User', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='CartPosition', + fields=[ + ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)), + ('session', models.CharField(max_length=255, blank=True, null=True, verbose_name='Session key')), + ('total', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Price')), + ('datetime', models.DateTimeField(verbose_name='Date')), + ('expires', models.DateTimeField(verbose_name='Expiration date')), + ], + options={ + 'verbose_name_plural': 'Cart positions', + 'verbose_name': 'Cart position', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='Event', + fields=[ + ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), + ('identity', models.CharField(max_length=36)), + ('version_start_date', models.DateTimeField()), + ('version_end_date', models.DateTimeField(blank=True, null=True, default=None)), + ('version_birth_date', models.DateTimeField()), + ('name', models.CharField(max_length=200, verbose_name='Name')), + ('slug', models.CharField(max_length=50, db_index=True, validators=[django.core.validators.RegexValidator(regex='^[a-zA-Z0-9.-]+$', message='The slug may only contain letters, numbers, dots and dashes.')], verbose_name='Slug', help_text='Should be short, only contain lowercase letters and numbers, and must be unique among your events. This is being used in addresses and bank transfer references.')), + ('locale', models.CharField(max_length=10, choices=[('de', 'German'), ('en', 'English')], verbose_name='Default locale')), + ('timezone', models.CharField(max_length=100, default='UTC', verbose_name='Default timezone')), + ('currency', models.CharField(max_length=10, verbose_name='Default currency')), + ('date_from', models.DateTimeField(verbose_name='Event start time')), + ('date_to', models.DateTimeField(blank=True, null=True, verbose_name='Event end time')), + ('show_date_to', models.BooleanField(default=True, help_text="If disabled, only event's start date will be displayed to the public.", verbose_name='Show event end date')), + ('show_times', models.BooleanField(default=True, help_text="If disabled, the event's start and end date will be displayed without the time of day.", verbose_name='Show dates with time')), + ('presale_end', models.DateTimeField(blank=True, null=True, help_text='No items will be sold after this date.', verbose_name='End of presale')), + ('presale_start', models.DateTimeField(blank=True, null=True, help_text='No items will be sold before this date.', verbose_name='Start of presale')), + ('payment_term_days', models.PositiveIntegerField(default=14, help_text='The number of days after placing an order the user has to pay to preserve his reservation.', verbose_name='Payment term in days')), + ('payment_term_last', models.DateTimeField(blank=True, null=True, help_text='The last date any payments are accepted. This has precedence over the number of days configured above.', verbose_name='Last date of payments')), + ('plugins', models.TextField(blank=True, null=True, verbose_name='Plugins')), + ], + options={ + 'verbose_name_plural': 'Events', + 'ordering': ('date_from', 'name'), + 'verbose_name': 'Event', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='EventPermission', + fields=[ + ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), + ('identity', models.CharField(max_length=36)), + ('version_start_date', models.DateTimeField()), + ('version_end_date', models.DateTimeField(blank=True, null=True, default=None)), + ('version_birth_date', models.DateTimeField()), + ('can_change_settings', models.BooleanField(default=True, verbose_name='Can change event settings')), + ('can_change_items', models.BooleanField(default=True, verbose_name='Can change item settings')), + ('event', versions.models.VersionedForeignKey(to='tixlbase.Event')), + ('user', models.ForeignKey(related_name='event_perms', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'verbose_name_plural': 'Event permissions', + 'verbose_name': 'Event permission', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='Item', + fields=[ + ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), + ('identity', models.CharField(max_length=36)), + ('version_start_date', models.DateTimeField()), + ('version_end_date', models.DateTimeField(blank=True, null=True, default=None)), + ('version_birth_date', models.DateTimeField()), + ('name', models.CharField(max_length=255, verbose_name='Item name')), + ('active', models.BooleanField(default=True, verbose_name='Active')), + ('deleted', models.BooleanField(default=False)), + ('short_description', models.TextField(blank=True, null=True, help_text='This is shown below the item name in lists.', verbose_name='Short description')), + ('long_description', models.TextField(blank=True, null=True, verbose_name='Long description')), + ('default_price', models.DecimalField(decimal_places=2, max_digits=7, blank=True, null=True, verbose_name='Default price')), + ('tax_rate', models.DecimalField(decimal_places=2, max_digits=7, blank=True, null=True, verbose_name='Taxes included in percent')), + ], + options={ + 'verbose_name_plural': 'Items', + 'verbose_name': 'Item', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='ItemCategory', + fields=[ + ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), + ('identity', models.CharField(max_length=36)), + ('version_start_date', models.DateTimeField()), + ('version_end_date', models.DateTimeField(blank=True, null=True, default=None)), + ('version_birth_date', models.DateTimeField()), + ('name', models.CharField(max_length=255, verbose_name='Category name')), + ('position', models.IntegerField(default=0)), + ('event', versions.models.VersionedForeignKey(related_name='categories', to='tixlbase.Event')), + ], + options={ + 'verbose_name_plural': 'Item categories', + 'ordering': ('position',), + 'verbose_name': 'Item category', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='ItemVariation', + fields=[ + ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), + ('identity', models.CharField(max_length=36)), + ('version_start_date', models.DateTimeField()), + ('version_end_date', models.DateTimeField(blank=True, null=True, default=None)), + ('version_birth_date', models.DateTimeField()), + ('active', models.BooleanField(default=True, verbose_name='Active')), + ('default_price', models.DecimalField(decimal_places=2, max_digits=7, blank=True, null=True, verbose_name='Default price')), + ('item', versions.models.VersionedForeignKey(related_name='variations', to='tixlbase.Item')), + ], + options={ + 'verbose_name_plural': 'Item variations', + 'verbose_name': 'Item variation', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='Order', + fields=[ + ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), + ('identity', models.CharField(max_length=36)), + ('version_start_date', models.DateTimeField()), + ('version_end_date', models.DateTimeField(blank=True, null=True, default=None)), + ('version_birth_date', models.DateTimeField()), + ('status', models.CharField(max_length=3, choices=[('p', 'pending'), ('n', 'paid'), ('e', 'expired'), ('c', 'cancelled')], verbose_name='Status')), + ('datetime', models.DateTimeField(verbose_name='Date', auto_now_add=True)), + ('expires', models.DateTimeField(verbose_name='Expiration date')), + ('payment_date', models.DateTimeField(verbose_name='Payment date')), + ('payment_info', models.TextField(verbose_name='Payment information')), + ('total', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Total amount')), + ('event', versions.models.VersionedForeignKey(verbose_name='Event', to='tixlbase.Event')), + ('user', models.ForeignKey(null=True, verbose_name='User', blank=True, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'verbose_name_plural': 'Orders', + 'verbose_name': 'Order', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='OrderPosition', + fields=[ + ('id', models.AutoField(serialize=False, auto_created=True, verbose_name='ID', primary_key=True)), + ('price', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Price')), + ], + options={ + 'verbose_name_plural': 'Order positions', + 'verbose_name': 'Order position', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='Organizer', + fields=[ + ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), + ('identity', models.CharField(max_length=36)), + ('version_start_date', models.DateTimeField()), + ('version_end_date', models.DateTimeField(blank=True, null=True, default=None)), + ('version_birth_date', models.DateTimeField()), + ('name', models.CharField(max_length=200, verbose_name='Name')), + ('slug', models.CharField(unique=True, max_length=50, db_index=True, verbose_name='Slug')), + ], + options={ + 'verbose_name_plural': 'Organizers', + 'ordering': ('name',), + 'verbose_name': 'Organizer', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='OrganizerPermission', + fields=[ + ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), + ('identity', models.CharField(max_length=36)), + ('version_start_date', models.DateTimeField()), + ('version_end_date', models.DateTimeField(blank=True, null=True, default=None)), + ('version_birth_date', models.DateTimeField()), + ('can_create_events', models.BooleanField(default=True, verbose_name='Can create events')), + ('organizer', versions.models.VersionedForeignKey(to='tixlbase.Organizer')), + ('user', models.ForeignKey(related_name='organizer_perms', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'verbose_name_plural': 'Organizer permissions', + 'verbose_name': 'Organizer permission', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='Property', + fields=[ + ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), + ('identity', models.CharField(max_length=36)), + ('version_start_date', models.DateTimeField()), + ('version_end_date', models.DateTimeField(blank=True, null=True, default=None)), + ('version_birth_date', models.DateTimeField()), + ('name', models.CharField(max_length=250, verbose_name='Property name')), + ('event', versions.models.VersionedForeignKey(related_name='properties', to='tixlbase.Event')), + ], + options={ + 'verbose_name_plural': 'Item properties', + 'verbose_name': 'Item property', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='PropertyValue', + fields=[ + ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), + ('identity', models.CharField(max_length=36)), + ('version_start_date', models.DateTimeField()), + ('version_end_date', models.DateTimeField(blank=True, null=True, default=None)), + ('version_birth_date', models.DateTimeField()), + ('value', models.CharField(max_length=250, verbose_name='Value')), + ('position', models.IntegerField(default=0)), + ('prop', versions.models.VersionedForeignKey(related_name='values', to='tixlbase.Property')), + ], + options={ + 'verbose_name_plural': 'Property values', + 'ordering': ('position',), + 'verbose_name': 'Property value', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='Question', + fields=[ + ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), + ('identity', models.CharField(max_length=36)), + ('version_start_date', models.DateTimeField()), + ('version_end_date', models.DateTimeField(blank=True, null=True, default=None)), + ('version_birth_date', models.DateTimeField()), + ('question', models.TextField(verbose_name='Question')), + ('type', models.CharField(max_length=5, choices=[('N', 'Number'), ('S', 'Text (one line)'), ('T', 'Multiline text'), ('B', 'Yes/No')], verbose_name='Question type')), + ('required', models.BooleanField(default=False, verbose_name='Required question')), + ('event', versions.models.VersionedForeignKey(related_name='questions', to='tixlbase.Event')), + ], + options={ + 'verbose_name_plural': 'Questions', + 'verbose_name': 'Question', + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='QuestionAnswer', + fields=[ + ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), + ('identity', models.CharField(max_length=36)), + ('version_start_date', models.DateTimeField()), + ('version_end_date', models.DateTimeField(blank=True, null=True, default=None)), + ('version_birth_date', models.DateTimeField()), + ('answer', models.TextField()), + ('cartposition', models.ForeignKey(null=True, to='tixlbase.CartPosition', blank=True)), + ('orderposition', models.ForeignKey(null=True, to='tixlbase.OrderPosition', blank=True)), + ('question', versions.models.VersionedForeignKey(to='tixlbase.Question')), + ], + options={ + 'abstract': False, + }, + bases=(models.Model,), + ), + migrations.CreateModel( + name='Quota', + fields=[ + ('id', models.CharField(max_length=36, primary_key=True, serialize=False)), + ('identity', models.CharField(max_length=36)), + ('version_start_date', models.DateTimeField()), + ('version_end_date', models.DateTimeField(blank=True, null=True, default=None)), + ('version_birth_date', models.DateTimeField()), + ('name', models.CharField(max_length=200, verbose_name='Name')), + ('size', models.PositiveIntegerField(verbose_name='Total capacity')), + ('event', versions.models.VersionedForeignKey(related_name='quotas', to='tixlbase.Event', verbose_name='Event')), + ('items', versions.models.VersionedManyToManyField(blank=True, to='tixlbase.Item', verbose_name='Item')), + ('lock_cache', models.ManyToManyField(blank=True, to='tixlbase.CartPosition')), + ('order_cache', models.ManyToManyField(blank=True, to='tixlbase.OrderPosition')), + ('variations', tixlbase.models.VariationsField(blank=True, to='tixlbase.ItemVariation', verbose_name='Variations')), + ], + options={ + 'verbose_name_plural': 'Quotas', + 'verbose_name': 'Quota', + }, + bases=(models.Model,), + ), + migrations.AlterUniqueTogether( + name='questionanswer', + unique_together=set([('id', 'identity')]), + ), + migrations.AddField( + model_name='organizer', + name='permitted', + field=models.ManyToManyField(through='tixlbase.OrganizerPermission', related_name='organizers', to=settings.AUTH_USER_MODEL), + preserve_default=True, + ), + migrations.AddField( + model_name='orderposition', + name='answers', + field=versions.models.VersionedManyToManyField(through='tixlbase.QuestionAnswer', to='tixlbase.Question', verbose_name='Answers'), + preserve_default=True, + ), + migrations.AddField( + model_name='orderposition', + name='item', + field=versions.models.VersionedForeignKey(verbose_name='Item', to='tixlbase.Item'), + preserve_default=True, + ), + migrations.AddField( + model_name='orderposition', + name='order', + field=versions.models.VersionedForeignKey(verbose_name='Order', to='tixlbase.Order'), + preserve_default=True, + ), + migrations.AddField( + model_name='orderposition', + name='variation', + field=versions.models.VersionedForeignKey(null=True, verbose_name='Variation', blank=True, to='tixlbase.ItemVariation'), + preserve_default=True, + ), + migrations.AddField( + model_name='itemvariation', + name='values', + field=versions.models.VersionedManyToManyField(related_name='variations', to='tixlbase.PropertyValue'), + preserve_default=True, + ), + migrations.AddField( + model_name='item', + name='category', + field=versions.models.VersionedForeignKey(on_delete=django.db.models.deletion.PROTECT, null=True, related_name='items', verbose_name='Category', blank=True, to='tixlbase.ItemCategory'), + preserve_default=True, + ), + migrations.AddField( + model_name='item', + name='event', + field=versions.models.VersionedForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='items', to='tixlbase.Event', verbose_name='Event'), + preserve_default=True, + ), + migrations.AddField( + model_name='item', + name='properties', + field=versions.models.VersionedManyToManyField(blank=True, related_name='items', help_text="The selected properties will be available for the user to select. After saving this field, move to the 'Variations' tab to configure the details.", verbose_name='Properties', to='tixlbase.Property'), + preserve_default=True, + ), + migrations.AddField( + model_name='item', + name='questions', + field=versions.models.VersionedManyToManyField(blank=True, related_name='items', help_text='The user will be asked to fill in answers for the selected questions', verbose_name='Questions', to='tixlbase.Question'), + preserve_default=True, + ), + migrations.AddField( + model_name='event', + name='organizer', + field=versions.models.VersionedForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='events', to='tixlbase.Organizer'), + preserve_default=True, + ), + migrations.AddField( + model_name='event', + name='permitted', + field=models.ManyToManyField(through='tixlbase.EventPermission', related_name='events', to=settings.AUTH_USER_MODEL), + preserve_default=True, + ), + migrations.AddField( + model_name='cartposition', + name='event', + field=versions.models.VersionedForeignKey(verbose_name='Event', to='tixlbase.Event'), + preserve_default=True, + ), + migrations.AddField( + model_name='cartposition', + name='item', + field=versions.models.VersionedForeignKey(verbose_name='Item', to='tixlbase.Item'), + preserve_default=True, + ), + migrations.AddField( + model_name='cartposition', + name='user', + field=models.ForeignKey(null=True, verbose_name='User', blank=True, to=settings.AUTH_USER_MODEL), + preserve_default=True, + ), + migrations.AddField( + model_name='cartposition', + name='variation', + field=versions.models.VersionedForeignKey(null=True, verbose_name='Variation', blank=True, to='tixlbase.ItemVariation'), + preserve_default=True, + ), + migrations.AddField( + model_name='user', + name='event', + field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, null=True, related_name='users', to='tixlbase.Event', blank=True), + preserve_default=True, + ), + migrations.AddField( + model_name='user', + name='groups', + field=models.ManyToManyField(related_name='user_set', help_text='The groups this user belongs to. A user will get all permissions granted to each of his/her group.', verbose_name='groups', related_query_name='user', blank=True, to='auth.Group'), + preserve_default=True, + ), + migrations.AddField( + model_name='user', + name='user_permissions', + field=models.ManyToManyField(related_name='user_set', help_text='Specific permissions for this user.', verbose_name='user permissions', related_query_name='user', blank=True, to='auth.Permission'), + preserve_default=True, + ), + migrations.AlterUniqueTogether( + name='user', + unique_together=set([('event', 'username')]), + ), + ] diff --git a/src/tixlbase/migrations/__init__.py b/src/tixlbase/migrations/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/src/tixlplugins/timerestriction/migrations/0001_initial.py b/src/tixlplugins/timerestriction/migrations/0001_initial.py new file mode 100644 index 000000000..e412150bb --- /dev/null +++ b/src/tixlplugins/timerestriction/migrations/0001_initial.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +from django.db import models, migrations +import tixlbase.models +import versions.models + + +class Migration(migrations.Migration): + + dependencies = [ + ('tixlbase', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='TimeRestriction', + fields=[ + ('id', models.CharField(serialize=False, primary_key=True, max_length=36)), + ('identity', models.CharField(max_length=36)), + ('version_start_date', models.DateTimeField()), + ('version_end_date', models.DateTimeField(null=True, blank=True, default=None)), + ('version_birth_date', models.DateTimeField()), + ('timeframe_from', models.DateTimeField(verbose_name='Start of time frame')), + ('timeframe_to', models.DateTimeField(verbose_name='End of time frame')), + ('price', models.DecimalField(null=True, blank=True, verbose_name='Price in time frame', max_digits=7, decimal_places=2)), + ('event', versions.models.VersionedForeignKey(to='tixlbase.Event', related_name='restrictions_timerestriction_timerestriction', verbose_name='Event')), + ('item', versions.models.VersionedForeignKey(to='tixlbase.Item', blank=True, null=True, related_name='restrictions_timerestriction_timerestriction', verbose_name='Item')), + ('variations', tixlbase.models.VariationsField(to='tixlbase.ItemVariation', blank=True, verbose_name='Variations', related_name='restrictions_timerestriction_timerestriction')), + ], + options={ + 'verbose_name': 'Restriction', + 'verbose_name_plural': 'Restrictions', + 'abstract': False, + }, + bases=(models.Model,), + ), + ] diff --git a/src/tixlplugins/timerestriction/migrations/__init__.py b/src/tixlplugins/timerestriction/migrations/__init__.py new file mode 100644 index 000000000..e69de29bb