# Generated by Django 5.2.17 on 2026-11-09 06:42

import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('tenants', '0024_module_choices_brands'),
        migrations.swappable_dependency(settings.AUTH_USER_MODEL),
    ]

    operations = [
        migrations.CreateModel(
            name='Artist',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('r_again', models.PositiveSmallIntegerField(default=0, verbose_name='Work again')),
                ('r_quality', models.PositiveSmallIntegerField(default=0, verbose_name='Quality')),
                ('r_value', models.PositiveSmallIntegerField(default=0, verbose_name='Value')),
                ('r_comms', models.PositiveSmallIntegerField(default=0, verbose_name='Communication')),
                ('r_reliab', models.PositiveSmallIntegerField(default=0, verbose_name='Reliability')),
                ('name', models.CharField(max_length=160, verbose_name='Stage name')),
                ('legal_name', models.CharField(blank=True, default='', max_length=160)),
                ('is_dj', models.BooleanField(default=False)),
                ('roles', models.CharField(blank=True, default='', help_text='Singer, Band, DJ, Host, Comedian', max_length=200)),
                ('experience', models.CharField(blank=True, default='', max_length=120)),
                ('country', models.CharField(blank=True, default='', max_length=80)),
                ('fee', models.DecimalField(blank=True, decimal_places=2, max_digits=12, null=True)),
                ('fee_basis', models.CharField(blank=True, choices=[('show', 'Per show'), ('day', 'Per day'), ('split', 'Door split')], default='', max_length=10)),
                ('fee_currency', models.CharField(blank=True, default='', max_length=3)),
                ('manager', models.CharField(blank=True, default='', max_length=160)),
                ('manager_tel', models.CharField(blank=True, default='', max_length=40)),
                ('label', models.CharField(blank=True, default='', max_length=160)),
                ('label_tel', models.CharField(blank=True, default='', max_length=40)),
                ('instagram', models.CharField(blank=True, default='', max_length=120)),
                ('youtube', models.CharField(blank=True, default='', max_length=120)),
                ('spotify', models.CharField(blank=True, default='', max_length=200)),
                ('website', models.URLField(blank=True, default='')),
                ('r_audience', models.PositiveSmallIntegerField(default=0, verbose_name='Audience draw')),
                ('r_stage', models.PositiveSmallIntegerField(default=0, verbose_name='Stage presence')),
                ('r_promo', models.PositiveSmallIntegerField(default=0, verbose_name='Promotes the show')),
                ('r_coop', models.PositiveSmallIntegerField(default=0, verbose_name='Co-operation')),
                ('note', models.TextField(blank=True, default='')),
                ('is_active', models.BooleanField(default=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='tenants.tenant')),
            ],
            options={
                'ordering': ['name'],
            },
        ),
        migrations.CreateModel(
            name='Company',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=160)),
                ('code', models.CharField(blank=True, default='', max_length=20)),
                ('country', models.CharField(blank=True, default='', max_length=80)),
                ('currency', models.CharField(default='GBP', max_length=3)),
                ('is_multi_currency', models.BooleanField(default=False)),
                ('is_multi_region', models.BooleanField(default=False)),
                ('calendar', models.CharField(choices=[('gregorian', 'Gregorian'), ('jalali', 'Jalali')], default='gregorian', max_length=10)),
                ('is_active', models.BooleanField(default=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='tenants.tenant')),
            ],
            options={
                'verbose_name_plural': 'Companies',
                'ordering': ['name'],
            },
        ),
        migrations.CreateModel(
            name='Brand',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=160)),
                ('code', models.CharField(blank=True, default='', max_length=20)),
                ('colour', models.CharField(blank=True, default='', help_text='Hex, used in charts and badges', max_length=7)),
                ('is_active', models.BooleanField(default=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='tenants.tenant')),
                ('company', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='brands', to='veventa.company')),
            ],
            options={
                'ordering': ['name'],
            },
        ),
        migrations.CreateModel(
            name='Event',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=200)),
                ('slug', models.SlugField(blank=True, default='', max_length=220)),
                ('event_type', models.CharField(blank=True, default='', max_length=60)),
                ('family', models.CharField(blank=True, default='', help_text='Groups a recurring series together', max_length=60)),
                ('mode', models.CharField(choices=[('promoted', 'Promoted'), ('hire', 'Venue Hire'), ('partner', 'Partnership'), ('service', 'Service'), ('other', 'Other')], default='promoted', max_length=20)),
                ('status', models.CharField(choices=[('draft', 'Draft'), ('in_progress', 'In Progress'), ('delivered', 'Delivered'), ('cancelled', 'Cancelled'), ('postponed', 'Postponed')], default='draft', max_length=20)),
                ('categories', models.CharField(blank=True, default='', max_length=200)),
                ('date', models.DateField(blank=True, null=True)),
                ('original_date', models.DateField(blank=True, null=True)),
                ('postponed_reason', models.CharField(blank=True, default='', max_length=255)),
                ('attempt', models.PositiveSmallIntegerField(default=1, help_text='Raised each time the show is postponed and rebooked')),
                ('date_jalali', models.CharField(blank=True, default='', help_text='Persian calendar date, for example 1405/08/18', max_length=10)),
                ('doors_time', models.CharField(blank=True, default='', max_length=10)),
                ('year', models.PositiveSmallIntegerField(blank=True, null=True)),
                ('city', models.CharField(blank=True, default='', max_length=120)),
                ('country', models.CharField(blank=True, default='', max_length=80)),
                ('region', models.CharField(blank=True, default='', max_length=80)),
                ('currency', models.CharField(default='GBP', max_length=3)),
                ('progress', models.PositiveSmallIntegerField(default=0, help_text='0 to 100')),
                ('box_office_charges', models.DecimalField(decimal_places=2, default=0, help_text='What the platform kept', max_digits=12)),
                ('note', models.TextField(blank=True, default='')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('brand', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='events', to='veventa.brand')),
                ('main_act', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='headlined', to='veventa.artist')),
                ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='tenants.tenant')),
            ],
            options={
                'ordering': ['-date', '-id'],
            },
        ),
        migrations.CreateModel(
            name='AudienceModel',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('seats_per_show', models.PositiveIntegerField(default=0)),
                ('shows', models.PositiveSmallIntegerField(default=1)),
                ('reachable', models.PositiveIntegerField(blank=True, help_text='People this show could plausibly reach, per show', null=True)),
                ('fit', models.PositiveSmallIntegerField(default=0, verbose_name='Demographic and artistic fit')),
                ('accessibility', models.PositiveSmallIntegerField(default=0, verbose_name='Geographic accessibility')),
                ('affordability', models.PositiveSmallIntegerField(default=0, verbose_name='Ticket affordability')),
                ('conversion', models.PositiveSmallIntegerField(default=0, verbose_name='Purchase conversion')),
                ('competition', models.PositiveSmallIntegerField(default=0, verbose_name='Competition intensity')),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('event', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='audience', to='veventa.event')),
            ],
        ),
        migrations.CreateModel(
            name='EventArtist',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('billing', models.CharField(choices=[('headline', 'Headline'), ('support', 'Support'), ('guest', 'Guest')], default='support', max_length=10)),
                ('fee', models.DecimalField(blank=True, decimal_places=2, max_digits=12, null=True)),
                ('currency', models.CharField(blank=True, default='', max_length=3)),
                ('is_paid', models.BooleanField(default=False)),
                ('note', models.CharField(blank=True, default='', max_length=255)),
                ('order', models.PositiveSmallIntegerField(default=0)),
                ('artist', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='event_links', to='veventa.artist')),
                ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='artist_links', to='veventa.event')),
            ],
            options={
                'ordering': ['order', 'id'],
                'unique_together': {('event', 'artist')},
            },
        ),
        migrations.AddField(
            model_name='event',
            name='artists',
            field=models.ManyToManyField(blank=True, related_name='events', through='veventa.EventArtist', to='veventa.artist'),
        ),
        migrations.CreateModel(
            name='EventAssessment',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('headline', models.CharField(blank=True, default='', max_length=255)),
                ('demand', models.TextField(blank=True, default='')),
                ('pricing', models.TextField(blank=True, default='')),
                ('promotion', models.TextField(blank=True, default='')),
                ('risks', models.TextField(blank=True, default='')),
                ('opportunities', models.TextField(blank=True, default='')),
                ('recommendations', models.TextField(blank=True, default='')),
                ('competing', models.TextField(blank=True, default='')),
                ('band', models.CharField(blank=True, default='', max_length=40)),
                ('confidence', models.PositiveSmallIntegerField(default=0)),
                ('model_used', models.CharField(blank=True, default='', max_length=60)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('event', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='assessment', to='veventa.event')),
            ],
        ),
        migrations.CreateModel(
            name='EventImage',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('image', models.ImageField(upload_to='veventa/gallery/')),
                ('caption', models.CharField(blank=True, default='', max_length=200)),
                ('order', models.PositiveSmallIntegerField(default=0)),
                ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='images', to='veventa.event')),
            ],
            options={
                'ordering': ['order', 'id'],
            },
        ),
        migrations.CreateModel(
            name='Partner',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('r_again', models.PositiveSmallIntegerField(default=0, verbose_name='Work again')),
                ('r_quality', models.PositiveSmallIntegerField(default=0, verbose_name='Quality')),
                ('r_value', models.PositiveSmallIntegerField(default=0, verbose_name='Value')),
                ('r_comms', models.PositiveSmallIntegerField(default=0, verbose_name='Communication')),
                ('r_reliab', models.PositiveSmallIntegerField(default=0, verbose_name='Reliability')),
                ('name', models.CharField(max_length=160)),
                ('manager', models.CharField(blank=True, default='', max_length=160)),
                ('phone', models.CharField(blank=True, default='', max_length=40)),
                ('email', models.EmailField(blank=True, default='', max_length=254)),
                ('city', models.CharField(blank=True, default='', max_length=120)),
                ('country', models.CharField(blank=True, default='', max_length=80)),
                ('website', models.URLField(blank=True, default='')),
                ('categories', models.CharField(blank=True, default='', max_length=200)),
                ('r_flex', models.PositiveSmallIntegerField(default=0, verbose_name='Flexibility')),
                ('note', models.TextField(blank=True, default='')),
                ('is_active', models.BooleanField(default=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='tenants.tenant')),
            ],
            options={
                'ordering': ['name'],
            },
        ),
        migrations.CreateModel(
            name='IncomeLine',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('kind', models.CharField(blank=True, default='', max_length=80)),
                ('description', models.CharField(blank=True, default='', max_length=255)),
                ('amount', models.DecimalField(decimal_places=2, default=0, max_digits=12)),
                ('received', models.BooleanField(default=False)),
                ('due_date', models.DateField(blank=True, null=True)),
                ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='income', to='veventa.event')),
                ('partner', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='income_lines', to='veventa.partner')),
            ],
            options={
                'ordering': ['kind', 'id'],
            },
        ),
        migrations.CreateModel(
            name='EventPartner',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('kind', models.CharField(choices=[('sponsor', 'Sponsor'), ('media', 'Media'), ('co_promoter', 'Co-promoter'), ('other', 'Other')], default='sponsor', max_length=15)),
                ('contribution', models.DecimalField(blank=True, decimal_places=2, max_digits=12, null=True)),
                ('currency', models.CharField(blank=True, default='', max_length=3)),
                ('in_kind', models.CharField(blank=True, default='', max_length=200)),
                ('note', models.CharField(blank=True, default='', max_length=255)),
                ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='partner_links', to='veventa.event')),
                ('partner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='event_links', to='veventa.partner')),
            ],
            options={
                'unique_together': {('event', 'partner')},
            },
        ),
        migrations.AddField(
            model_name='event',
            name='partners',
            field=models.ManyToManyField(blank=True, related_name='events', through='veventa.EventPartner', to='veventa.partner'),
        ),
        migrations.AddField(
            model_name='event',
            name='ticket_platform',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='ticketed_events', to='veventa.partner'),
        ),
        migrations.CreateModel(
            name='PlanItem',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('task', models.CharField(max_length=200)),
                ('owner', models.CharField(blank=True, default='', max_length=120)),
                ('due_date', models.DateField(blank=True, null=True)),
                ('is_done', models.BooleanField(default=False)),
                ('done_at', models.DateTimeField(blank=True, null=True)),
                ('order', models.PositiveSmallIntegerField(default=0)),
                ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='plan', to='veventa.event')),
            ],
            options={
                'ordering': ['order', 'due_date', 'id'],
            },
        ),
        migrations.CreateModel(
            name='Promoter',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('r_again', models.PositiveSmallIntegerField(default=0, verbose_name='Work again')),
                ('r_quality', models.PositiveSmallIntegerField(default=0, verbose_name='Quality')),
                ('r_value', models.PositiveSmallIntegerField(default=0, verbose_name='Value')),
                ('r_comms', models.PositiveSmallIntegerField(default=0, verbose_name='Communication')),
                ('r_reliab', models.PositiveSmallIntegerField(default=0, verbose_name='Reliability')),
                ('name', models.CharField(max_length=160)),
                ('manager', models.CharField(blank=True, default='', max_length=160)),
                ('phone', models.CharField(blank=True, default='', max_length=40)),
                ('email', models.EmailField(blank=True, default='', max_length=254)),
                ('city', models.CharField(blank=True, default='', max_length=120)),
                ('country', models.CharField(blank=True, default='', max_length=80)),
                ('categories', models.CharField(blank=True, default='', max_length=200)),
                ('r_financial', models.PositiveSmallIntegerField(default=0, verbose_name='Financial conduct')),
                ('r_fit', models.PositiveSmallIntegerField(default=0, verbose_name='Audience fit')),
                ('r_promo', models.PositiveSmallIntegerField(default=0, verbose_name='Promotion')),
                ('r_reach', models.PositiveSmallIntegerField(default=0, verbose_name='Reach')),
                ('r_sales', models.PositiveSmallIntegerField(default=0, verbose_name='Ticket sales')),
                ('note', models.TextField(blank=True, default='')),
                ('is_active', models.BooleanField(default=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='tenants.tenant')),
            ],
            options={
                'ordering': ['name'],
            },
        ),
        migrations.AddField(
            model_name='event',
            name='promoter',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='events', to='veventa.promoter'),
        ),
        migrations.CreateModel(
            name='PromotionChannel',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('channel', models.CharField(max_length=120)),
                ('spend', models.DecimalField(decimal_places=2, default=0, max_digits=12)),
                ('reach', models.PositiveIntegerField(blank=True, null=True)),
                ('note', models.CharField(blank=True, default='', max_length=255)),
                ('attempt', models.PositiveSmallIntegerField(default=1)),
                ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='promotion', to='veventa.event')),
            ],
            options={
                'ordering': ['channel'],
            },
        ),
        migrations.CreateModel(
            name='SeatingSection',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('section', models.CharField(max_length=80)),
                ('floor', models.CharField(blank=True, default='', max_length=40)),
                ('seats', models.PositiveIntegerField(default=0)),
                ('price', models.DecimalField(decimal_places=2, default=0, max_digits=10)),
                ('order', models.PositiveSmallIntegerField(default=0)),
                ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='seating', to='veventa.event')),
            ],
            options={
                'ordering': ['order', 'section'],
            },
        ),
        migrations.CreateModel(
            name='Supplier',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('r_again', models.PositiveSmallIntegerField(default=0, verbose_name='Work again')),
                ('r_quality', models.PositiveSmallIntegerField(default=0, verbose_name='Quality')),
                ('r_value', models.PositiveSmallIntegerField(default=0, verbose_name='Value')),
                ('r_comms', models.PositiveSmallIntegerField(default=0, verbose_name='Communication')),
                ('r_reliab', models.PositiveSmallIntegerField(default=0, verbose_name='Reliability')),
                ('name', models.CharField(max_length=160)),
                ('category', models.CharField(blank=True, default='', max_length=120)),
                ('categories', models.CharField(blank=True, default='', max_length=200)),
                ('contact', models.CharField(blank=True, default='', max_length=160)),
                ('phone', models.CharField(blank=True, default='', max_length=40)),
                ('email', models.EmailField(blank=True, default='', max_length=254)),
                ('city', models.CharField(blank=True, default='', max_length=120)),
                ('country', models.CharField(blank=True, default='', max_length=80)),
                ('website', models.URLField(blank=True, default='')),
                ('r_flex', models.PositiveSmallIntegerField(default=0, verbose_name='Flexibility')),
                ('r_problem', models.PositiveSmallIntegerField(default=0, verbose_name='Handles problems')),
                ('r_prof', models.PositiveSmallIntegerField(default=0, verbose_name='Professionalism')),
                ('note', models.TextField(blank=True, default='')),
                ('is_active', models.BooleanField(default=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='tenants.tenant')),
            ],
            options={
                'ordering': ['name'],
            },
        ),
        migrations.CreateModel(
            name='EventSupplier',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('service', models.CharField(blank=True, default='', max_length=160)),
                ('amount', models.DecimalField(blank=True, decimal_places=2, max_digits=12, null=True)),
                ('currency', models.CharField(blank=True, default='', max_length=3)),
                ('is_paid', models.BooleanField(default=False)),
                ('note', models.CharField(blank=True, default='', max_length=255)),
                ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='supplier_links', to='veventa.event')),
                ('supplier', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='event_links', to='veventa.supplier')),
            ],
            options={
                'unique_together': {('event', 'supplier', 'service')},
            },
        ),
        migrations.AddField(
            model_name='event',
            name='suppliers',
            field=models.ManyToManyField(blank=True, related_name='events', through='veventa.EventSupplier', to='veventa.supplier'),
        ),
        migrations.CreateModel(
            name='BudgetLine',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('category', models.CharField(blank=True, default='', max_length=80)),
                ('item', models.CharField(max_length=160)),
                ('description', models.CharField(blank=True, default='', max_length=255)),
                ('quantity', models.DecimalField(decimal_places=2, default=1, max_digits=10)),
                ('estimate', models.DecimalField(decimal_places=2, default=0, max_digits=12)),
                ('actual', models.DecimalField(blank=True, decimal_places=2, max_digits=12, null=True)),
                ('owner', models.CharField(blank=True, default='', max_length=120)),
                ('is_done', models.BooleanField(default=False)),
                ('is_paid', models.BooleanField(default=False)),
                ('due_date', models.DateField(blank=True, null=True)),
                ('attempt', models.PositiveSmallIntegerField(default=1)),
                ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='budget', to='veventa.event')),
                ('supplier', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='budget_lines', to='veventa.supplier')),
            ],
            options={
                'ordering': ['category', 'id'],
            },
        ),
        migrations.CreateModel(
            name='TicketTier',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=80)),
                ('zone', models.CharField(blank=True, default='', max_length=80)),
                ('colour', models.CharField(blank=True, default='', max_length=7)),
                ('price', models.DecimalField(decimal_places=2, default=0, max_digits=10)),
                ('allocation', models.PositiveIntegerField(default=0)),
                ('holds', models.PositiveIntegerField(default=0)),
                ('sold', models.PositiveIntegerField(default=0)),
                ('order', models.PositiveSmallIntegerField(default=0)),
                ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='tiers', to='veventa.event')),
            ],
            options={
                'ordering': ['order', 'id'],
            },
        ),
        migrations.CreateModel(
            name='TierColour',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=60)),
                ('hex', models.CharField(max_length=7)),
                ('order', models.PositiveSmallIntegerField(default=0)),
                ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='tenants.tenant')),
            ],
            options={
                'ordering': ['order', 'name'],
            },
        ),
        migrations.CreateModel(
            name='Venue',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('r_again', models.PositiveSmallIntegerField(default=0, verbose_name='Work again')),
                ('r_quality', models.PositiveSmallIntegerField(default=0, verbose_name='Quality')),
                ('r_value', models.PositiveSmallIntegerField(default=0, verbose_name='Value')),
                ('r_comms', models.PositiveSmallIntegerField(default=0, verbose_name='Communication')),
                ('r_reliab', models.PositiveSmallIntegerField(default=0, verbose_name='Reliability')),
                ('name', models.CharField(max_length=160)),
                ('city', models.CharField(blank=True, default='', max_length=120)),
                ('country', models.CharField(blank=True, default='', max_length=80)),
                ('capacity', models.PositiveIntegerField(blank=True, null=True)),
                ('manager', models.CharField(blank=True, default='', max_length=160)),
                ('phone', models.CharField(blank=True, default='', max_length=40)),
                ('email', models.EmailField(blank=True, default='', max_length=254)),
                ('address', models.CharField(blank=True, default='', max_length=255)),
                ('website', models.URLField(blank=True, default='')),
                ('note', models.TextField(blank=True, default='')),
                ('is_active', models.BooleanField(default=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='tenants.tenant')),
            ],
            options={
                'ordering': ['name'],
            },
        ),
        migrations.AddField(
            model_name='event',
            name='venue',
            field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='events', to='veventa.venue'),
        ),
        migrations.CreateModel(
            name='Document',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('title', models.CharField(max_length=200)),
                ('kind', models.CharField(choices=[('rider', 'Rider'), ('stage_plan', 'Stage Plan'), ('contract', 'Contract'), ('invoice', 'Invoice'), ('form', 'Form'), ('other', 'Other')], default='other', max_length=20)),
                ('file', models.FileField(blank=True, null=True, upload_to='veventa/docs/')),
                ('note', models.CharField(blank=True, default='', max_length=255)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('artist', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='documents', to='veventa.artist')),
                ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='tenants.tenant')),
                ('event', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='documents', to='veventa.event')),
                ('supplier', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='documents', to='veventa.supplier')),
                ('venue', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='documents', to='veventa.venue')),
            ],
            options={
                'ordering': ['-created_at'],
            },
        ),
        migrations.CreateModel(
            name='Contact',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=160)),
                ('kind', models.CharField(choices=[('accommodation', 'Accommodation'), ('artist_mgmt', 'Artist & Management'), ('guest', 'Guest'), ('health_safety', 'Health & Safety'), ('hospitality', 'Hospitality & Catering'), ('legal_finance', 'Legal & Finance'), ('media', 'Media & Press'), ('production', 'Production & Crew'), ('venue', 'Venue'), ('other', 'Other')], default='other', max_length=20)),
                ('invitation', models.CharField(blank=True, choices=[('', 'Not invited'), ('vip', 'VIP'), ('general', 'General')], default='', max_length=10)),
                ('role', models.CharField(blank=True, default='', max_length=120)),
                ('phone', models.CharField(blank=True, default='', max_length=40)),
                ('email', models.EmailField(blank=True, default='', max_length=254)),
                ('city', models.CharField(blank=True, default='', max_length=120)),
                ('country', models.CharField(blank=True, default='', max_length=80)),
                ('note', models.TextField(blank=True, default='')),
                ('is_active', models.BooleanField(default=True)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('artist', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='contacts', to='veventa.artist')),
                ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='tenants.tenant')),
                ('partner', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='contacts', to='veventa.partner')),
                ('supplier', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='contacts', to='veventa.supplier')),
                ('venue', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='contacts', to='veventa.venue')),
            ],
            options={
                'ordering': ['name'],
            },
        ),
        migrations.CreateModel(
            name='CalendarNote',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('date', models.DateField()),
                ('date_jalali', models.CharField(blank=True, default='', max_length=10)),
                ('title', models.CharField(max_length=200)),
                ('kind', models.CharField(choices=[('avoid', 'Avoid this date'), ('watch', 'Worth watching'), ('competing', 'Competing event'), ('closure', 'Venue closure'), ('note', 'Note')], default='note', max_length=12)),
                ('region', models.CharField(blank=True, default='', help_text='Which market this matters in. Blank means everywhere', max_length=80)),
                ('body', models.TextField(blank=True, default='')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='tenants.tenant')),
            ],
            options={
                'ordering': ['date'],
                'indexes': [models.Index(fields=['tenant', 'date'], name='veventa_cal_tenant__4aa6e0_idx')],
            },
        ),
        migrations.CreateModel(
            name='CompanyAccess',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('company', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user_access', to='veventa.company')),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='veventa_companies', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'verbose_name_plural': 'Company access',
                'unique_together': {('company', 'user')},
            },
        ),
        migrations.CreateModel(
            name='EventAssignment',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('role', models.CharField(blank=True, default='', help_text='What they are doing on this one, for the agenda', max_length=120)),
                ('created_at', models.DateTimeField(auto_now_add=True)),
                ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='assignments', to='veventa.event')),
                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='veventa_assignments', to=settings.AUTH_USER_MODEL)),
            ],
            options={
                'ordering': ['id'],
                'unique_together': {('event', 'user')},
            },
        ),
        migrations.CreateModel(
            name='FxRate',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('code', models.CharField(max_length=3)),
                ('rate', models.DecimalField(decimal_places=6, default=1, max_digits=14)),
                ('updated_at', models.DateTimeField(auto_now=True)),
                ('tenant', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='tenants.tenant')),
            ],
            options={
                'ordering': ['code'],
                'unique_together': {('tenant', 'code')},
            },
        ),
        migrations.AddIndex(
            model_name='event',
            index=models.Index(fields=['tenant', 'date'], name='veventa_eve_tenant__ec4e49_idx'),
        ),
        migrations.AddIndex(
            model_name='event',
            index=models.Index(fields=['tenant', 'status'], name='veventa_eve_tenant__f3894a_idx'),
        ),
    ]
