# -*- coding: utf-8 -*-
# Generated by Django 1.10.6 on 2017-07-14 16:47
from __future__ import unicode_literals

import datetime
from django.conf import settings
import django.contrib.auth.models
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

    initial = True

    dependencies = [
        ('auth', '0008_alter_user_username_max_length'),
        ('scheduling', '0001_initial'),
        ('photos', '0001_initial'),
    ]

    operations = [
        migrations.CreateModel(
            name='Address',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('number', models.CharField(max_length=30)),
                ('address', models.CharField(max_length=250)),
                ('city', models.CharField(max_length=50)),
                ('state', models.CharField(max_length=25)),
                ('country', models.CharField(max_length=50)),
                ('zip_code', models.CharField(max_length=25)),
            ],
        ),
        migrations.CreateModel(
            name='Answer_Choice',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('text', models.CharField(max_length=250)),
                ('hourly_adjustment', models.BooleanField(default=False)),
                ('price_adjustment', models.DecimalField(decimal_places=2, max_digits=100)),
            ],
        ),
        migrations.CreateModel(
            name='Business',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100)),
                ('absorb_fee', models.BooleanField(default=False)),
                ('no_rebook_window', models.DurationField()),
                ('no_cancel_window', models.DurationField()),
                ('cancel_fee_percent', models.DecimalField(decimal_places=5, default=0.5, max_digits=100)),
                ('return_grace_period', models.DurationField()),
                ('late_return_fee', models.DecimalField(decimal_places=5, default=0.0, max_digits=100)),
                ('customer_change_cutoff', models.DurationField()),
            ],
        ),
        migrations.CreateModel(
            name='Cause',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=150)),
                ('desc', models.TextField()),
            ],
        ),
        migrations.CreateModel(
            name='Choice_Pool',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('quantity_required', models.IntegerField(null=True)),
                ('person_ratio', models.IntegerField(null=True)),
                ('default', models.BooleanField(default=False)),
                ('hourly_price', models.BooleanField(default=False)),
                ('price_adjustment', models.DecimalField(decimal_places=2, max_digits=100)),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='Experience',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('max_capacity', models.IntegerField(default=0)),
                ('min_capacity', models.IntegerField(default=1)),
                ('max_paralell', models.IntegerField(default=-1)),
                ('description', models.TextField()),
                ('product_type', models.CharField(max_length=150)),
                ('things_we_provide', models.TextField()),
                ('things_to_bring', models.TextField()),
                ('participant_reqs', models.TextField()),
            ],
        ),
        migrations.CreateModel(
            name='Experience_Question',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('question', models.CharField(max_length=250)),
                ('every_participant', models.BooleanField(default=False)),
                ('experience', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Experience')),
            ],
        ),
        migrations.CreateModel(
            name='Experience_Type',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=50)),
                ('description', models.TextField()),
                ('parent', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='guide.Experience_Type')),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='Guide',
            fields=[
                ('user_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL)),
                ('roles', models.CharField(max_length=500)),
                ('phone_number', models.CharField(blank=True, max_length=15, validators=[django.core.validators.RegexValidator(message="Phone number must be entered in the format: '+999999999'. Up to 15 digits allowed.", regex='^\\+?1?\\d{9,15}$')])),
            ],
            options={
                'abstract': False,
                'verbose_name': 'user',
                'verbose_name_plural': 'users',
            },
            bases=('auth.user',),
            managers=[
                ('objects', django.contrib.auth.models.UserManager()),
            ],
        ),
        migrations.CreateModel(
            name='Guide_Equip_Preference',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('guide', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Guide')),
            ],
        ),
        migrations.CreateModel(
            name='Guide_Pool_Member',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('experience_level', models.IntegerField(default=50)),
                ('guide', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Guide')),
            ],
        ),
        migrations.CreateModel(
            name='Ind_Resource',
            fields=[
                ('actor_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='scheduling.Actor')),
                ('item_id', models.CharField(max_length=150, null=True)),
                ('size', models.CharField(max_length=20)),
                ('quantity', models.IntegerField(default=1)),
            ],
            bases=('scheduling.actor',),
        ),
        migrations.CreateModel(
            name='Location',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=150)),
                ('sales_tax_rate', models.DecimalField(decimal_places=5, default=0, max_digits=100)),
                ('business', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Business')),
            ],
        ),
        migrations.CreateModel(
            name='Price',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100)),
                ('price', models.DecimalField(decimal_places=2, max_digits=100)),
                ('date_void', models.DateTimeField(null=True)),
                ('deposit', models.DecimalField(decimal_places=2, default=1.0, max_digits=100)),
                ('capacity', models.IntegerField()),
                ('private', models.BooleanField(default=False)),
                ('standard', models.BooleanField(default=True)),
            ],
        ),
        migrations.CreateModel(
            name='Price_Demographic',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=100)),
                ('description', models.TextField()),
                ('min_age', models.IntegerField()),
                ('max_age', models.IntegerField()),
            ],
        ),
        migrations.CreateModel(
            name='Requirement',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=150)),
                ('description', models.TextField(null=True)),
                ('quantity_required', models.IntegerField()),
                ('person_ratio', models.IntegerField()),
                ('customer_unique', models.BooleanField(default=False)),
                ('guide_requirement', models.BooleanField(default=False)),
                ('guide_shares', models.BooleanField(default=False)),
            ],
        ),
        migrations.CreateModel(
            name='Resource',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('turnover_time', models.DurationField()),
                ('transit_time', models.DurationField()),
                ('name', models.CharField(max_length=150)),
                ('description', models.TextField()),
                ('gallery', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='photos.Gallery')),
                ('location', models.ManyToManyField(to='guide.Location')),
            ],
        ),
        migrations.CreateModel(
            name='Resource_Type',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=50)),
                ('description', models.TextField()),
                ('parent', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='guide.Resource_Type')),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='Role',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=50)),
                ('desc', models.TextField()),
                ('can_schedule', models.BooleanField(default=True)),
                ('scheduling_notice', models.DurationField(default=datetime.timedelta(0, 1800))),
                ('location', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Location')),
                ('pool', models.ManyToManyField(to='guide.Guide')),
            ],
        ),
        migrations.CreateModel(
            name='Schedule',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('experience', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Experience')),
            ],
        ),
        migrations.CreateModel(
            name='Scheduled_Shift',
            fields=[
                ('event_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='scheduling.Event')),
                ('workers', models.IntegerField(default=1)),
                ('shift', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Role')),
            ],
            bases=('scheduling.event',),
        ),
        migrations.CreateModel(
            name='Session',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('experience', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Experience')),
                ('session', models.ManyToManyField(to='scheduling.Event')),
            ],
        ),
        migrations.CreateModel(
            name='Shift_Worker',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('experience_level', models.IntegerField(default=50)),
                ('guide', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Guide')),
                ('shift', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Role')),
            ],
        ),
        migrations.CreateModel(
            name='Standard_Resource_Pool',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('quantity_required', models.IntegerField(null=True)),
                ('person_ratio', models.IntegerField(null=True)),
                ('pool', models.ManyToManyField(to='guide.Resource')),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='Standard_Specific_Resource_Pool',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('quantity_required', models.IntegerField(null=True)),
                ('person_ratio', models.IntegerField(null=True)),
                ('pool', models.ManyToManyField(to='guide.Ind_Resource')),
            ],
            options={
                'abstract': False,
            },
        ),
        migrations.CreateModel(
            name='Suspended_Guide',
            fields=[
                ('suspended_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='scheduling.Suspended')),
                ('guide', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Guide')),
            ],
            bases=('scheduling.suspended',),
        ),
        migrations.CreateModel(
            name='Waiver',
            fields=[
                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('body', models.TextField()),
                ('business', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Business')),
            ],
        ),
        migrations.CreateModel(
            name='Choice_Resource_Requirement',
            fields=[
                ('requirement_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='guide.Requirement')),
                ('optional', models.BooleanField(default=False)),
            ],
            bases=('guide.requirement',),
        ),
        migrations.CreateModel(
            name='Event_Price',
            fields=[
                ('price_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='guide.Price')),
            ],
            bases=('guide.price',),
        ),
        migrations.CreateModel(
            name='Guide_Body_Requirement',
            fields=[
                ('requirement_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='guide.Requirement')),
            ],
            bases=('guide.requirement',),
        ),
        migrations.CreateModel(
            name='Meeting_Address',
            fields=[
                ('address_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='guide.Address')),
                ('name', models.CharField(max_length=150)),
            ],
            bases=('guide.address',),
        ),
        migrations.CreateModel(
            name='Resource_Choice_Pool',
            fields=[
                ('choice_pool_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='guide.Choice_Pool')),
            ],
            options={
                'abstract': False,
            },
            bases=('guide.choice_pool',),
        ),
        migrations.CreateModel(
            name='Session_Price',
            fields=[
                ('price_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='guide.Price')),
                ('num_events', models.IntegerField(default=0)),
                ('session', models.ManyToManyField(to='guide.Session')),
            ],
            bases=('guide.price',),
        ),
        migrations.CreateModel(
            name='Specific_Resource_Choice_Pool',
            fields=[
                ('choice_pool_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='guide.Choice_Pool')),
            ],
            options={
                'abstract': False,
            },
            bases=('guide.choice_pool',),
        ),
        migrations.CreateModel(
            name='Standard_Price_Exclusions',
            fields=[
                ('price_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='guide.Price')),
            ],
            bases=('guide.price',),
        ),
        migrations.CreateModel(
            name='Standard_Resource_Requirement',
            fields=[
                ('requirement_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='guide.Requirement')),
            ],
            bases=('guide.requirement',),
        ),
        migrations.CreateModel(
            name='Standard_Specific_Resource_Requirement',
            fields=[
                ('requirement_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='guide.Requirement')),
            ],
            bases=('guide.requirement',),
        ),
        migrations.CreateModel(
            name='Time_Price',
            fields=[
                ('price_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='guide.Price')),
                ('min_duration', models.DurationField()),
                ('max_duration', models.DurationField()),
                ('hourly_price', models.BooleanField(default=False)),
            ],
            bases=('guide.price',),
        ),
        migrations.AddField(
            model_name='standard_specific_resource_pool',
            name='requirement',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Requirement'),
        ),
        migrations.AddField(
            model_name='standard_resource_pool',
            name='requirement',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Requirement'),
        ),
        migrations.AddField(
            model_name='schedule',
            name='timetable',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='scheduling.Event'),
        ),
        migrations.AddField(
            model_name='resource',
            name='resource_type',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Resource_Type'),
        ),
        migrations.AddField(
            model_name='requirement',
            name='experience',
            field=models.ManyToManyField(to='guide.Experience'),
        ),
        migrations.AddField(
            model_name='price',
            name='demo',
            field=models.ManyToManyField(to='guide.Price_Demographic'),
        ),
        migrations.AddField(
            model_name='price',
            name='experience',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Experience'),
        ),
        migrations.AddField(
            model_name='location',
            name='business_hours',
            field=models.ManyToManyField(to='scheduling.Event'),
        ),
        migrations.AddField(
            model_name='ind_resource',
            name='resource',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Resource'),
        ),
        migrations.AddField(
            model_name='guide_equip_preference',
            name='pool',
            field=models.ManyToManyField(to='guide.Ind_Resource'),
        ),
        migrations.AddField(
            model_name='guide_equip_preference',
            name='resource',
            field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='guide.Resource'),
        ),
        migrations.AddField(
            model_name='guide',
            name='actor',
            field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='scheduling.Actor'),
        ),
        migrations.AddField(
            model_name='guide',
            name='business',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Business'),
        ),
        migrations.AddField(
            model_name='guide',
            name='location',
            field=models.ManyToManyField(to='guide.Location'),
        ),
        migrations.AddField(
            model_name='experience',
            name='experience_type',
            field=models.ManyToManyField(blank=True, to='guide.Experience_Type'),
        ),
        migrations.AddField(
            model_name='experience',
            name='gallery',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='photos.Gallery'),
        ),
        migrations.AddField(
            model_name='experience',
            name='location',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Location'),
        ),
        migrations.AddField(
            model_name='experience',
            name='meeting_address',
            field=models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, to='guide.Address'),
        ),
        migrations.AddField(
            model_name='experience',
            name='waiver',
            field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='guide.Waiver'),
        ),
        migrations.AddField(
            model_name='choice_pool',
            name='requirement',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Requirement'),
        ),
        migrations.AddField(
            model_name='answer_choice',
            name='question',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Experience_Question'),
        ),
        migrations.AddField(
            model_name='time_price',
            name='schedule',
            field=models.ManyToManyField(to='guide.Schedule'),
        ),
        migrations.AddField(
            model_name='standard_price_exclusions',
            name='schedule',
            field=models.ManyToManyField(to='guide.Schedule'),
        ),
        migrations.AddField(
            model_name='standard_price_exclusions',
            name='session',
            field=models.ManyToManyField(to='guide.Session'),
        ),
        migrations.AddField(
            model_name='specific_resource_choice_pool',
            name='pool',
            field=models.ManyToManyField(to='guide.Ind_Resource'),
        ),
        migrations.AddField(
            model_name='resource_choice_pool',
            name='pool',
            field=models.ManyToManyField(to='guide.Resource'),
        ),
        migrations.AddField(
            model_name='meeting_address',
            name='location',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Location'),
        ),
        migrations.AddField(
            model_name='guide_pool_member',
            name='requirement',
            field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='guide.Guide_Body_Requirement'),
        ),
        migrations.AddField(
            model_name='event_price',
            name='schedule',
            field=models.ManyToManyField(to='guide.Schedule'),
        ),
    ]
