class Migration(migrations.Migration): replaces = [('abonapp', '0001_initial'), ('abonapp', '0002_auto_20180808_1448'), ('abonapp', '0003_abon_nas'), ('abonapp', '0004_auto_20180918_1734'), ('abonapp', '0005_current_tariff'), ('abonapp', '0006_change_ip'), ('abonapp', '0007_auto_20181101_1545'), ('abonapp', '0008_auto_20181115_1206')] initial = True dependencies = [ ('tariff_app', '0003_auto_20181115_1206'), ('gw_app', '0001_initial'), ('tariff_app', '0001_initial'), ('ip_pool', '0001_initial'), ('gw_app', '0002_auto_20181101_1545'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('group_app', '0001_initial'), ('accounts_app', '0001_initial'), ('devapp', '0001_initial'), ] operations = [ migrations.CreateModel( name='AbonTariff', fields=[ ('id', models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name='ID' )), ('tariff', models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='linkto_tariff', to='tariff_app.Tariff' )), ('time_start', models.DateTimeField( blank=True, default=None, null=True )), ('deadline', models.DateTimeField( blank=True, default=None, null=True )), ], options={ 'ordering': ('time_start',), 'permissions': (('can_complete_service', 'finish service perm'),), 'verbose_name': 'Abon service', 'verbose_name_plural': 'Abon services', 'db_table': 'abonent_tariff' }, ), migrations.CreateModel( name='AbonStreet', fields=[ ('id', models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=64)), ('group', models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='group_app.Group' )), ], options={ 'verbose_name': 'Street', 'verbose_name_plural': 'Streets', 'db_table': 'abon_street', 'ordering': ('name',), }, ), migrations.CreateModel( name='Abon', fields=[ ('baseaccount_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='accounts_app.BaseAccount' )), ('current_tariff', models.OneToOneField( blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, to='abonapp.AbonTariff' )), ('group', models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='group_app.Group', verbose_name='User group' )), ('ballance', models.FloatField(default=0.0)), ('ip_address', models.GenericIPAddressField( blank=True, null=True, verbose_name='Ip address' )), ('description', models.TextField( blank=True, null=True, verbose_name='Comment' )), ('street', models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='abonapp.AbonStreet', verbose_name='Street' )), ('house', models.CharField( blank=True, max_length=12, null=True, verbose_name='House' )), ('device', models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='devapp.Device' )), ('dev_port', models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='devapp.Port' )), ('is_dynamic_ip', models.BooleanField( default=False, verbose_name='Is dynamic ip' )), ('nas', models.ForeignKey( blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, to='gw_app.NASModel', verbose_name='Network access server' )), ('autoconnect_service', models.BooleanField( default=False, verbose_name='Automatically connect next service' )), ('last_connected_tariff', models.ForeignKey( blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, to='tariff_app.Tariff', verbose_name='Last connected service' )), ('markers', bitfield.models.BitField( (('icon_donkey', 'Donkey'), ('icon_fire', 'Fire'), ('icon_ok', 'Ok'), ('icon_king', 'King'), ('icon_tv', 'TV'), ('icon_smile', 'Smile'), ('icon_dollar', 'Dollar'), ('icon_service', 'Service'), ('icon_mrk', 'Marker')), default=0 )), ], options={ 'ordering': ('fio',), 'permissions': ( ('can_buy_tariff', 'Buy service perm'), ('can_add_ballance', 'fill account'), ('can_ping', 'Can ping')), 'verbose_name': 'Abon', 'verbose_name_plural': 'Abons', 'db_table': 'abonent', 'unique_together': {('ip_address', 'nas')} }, bases=('accounts_app.baseaccount',), ), migrations.CreateModel( name='AbonLog', fields=[ ('id', models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name='ID' )), ('abon', models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='abonapp.Abon')), ('amount', models.FloatField(default=0.0)), ('author', models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL )), ('comment', models.CharField(max_length=128)), ('date', models.DateTimeField(auto_now_add=True)), ], options={ 'db_table': 'abonent_log', 'ordering': ('-date',) }, ), migrations.CreateModel( name='AdditionalTelephone', fields=[ ('abon', models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name='additional_telephones', to='abonapp.Abon' )), ('id', models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name='ID' )), ('telephone', models.CharField( max_length=16, validators=[ django.core.validators.RegexValidator('^(\\+[7,8,9,3]\\d{10,11})?$') ], verbose_name='Telephone') ), ('owner_name', models.CharField(max_length=127)), ], options={ 'verbose_name': 'Additional telephone', 'verbose_name_plural': 'Additional telephones', 'db_table': 'additional_telephones', 'ordering': ('owner_name',), }, ), migrations.CreateModel( name='AllPayLog', fields=[ ('pay_id', models.CharField(max_length=64, primary_key=True, serialize=False)), ('date_action', models.DateTimeField(auto_now_add=True)), ('summ', models.FloatField(default=0.0)), ('pay_system_name', models.CharField(max_length=16)), ], options={ 'db_table': 'all_pay_log', 'ordering': ('-date_action',), }, ), migrations.CreateModel( name='AllTimePayLog', fields=[ ('abon', models.ForeignKey( blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_DEFAULT, to='abonapp.Abon' )), ('pay_id', models.CharField( max_length=36, primary_key=True, serialize=False, unique=True )), ('date_add', models.DateTimeField(auto_now_add=True)), ('summ', models.FloatField(default=0.0)), ('trade_point', models.CharField( blank=True, default=None, max_length=20, null=True, verbose_name='Trade point' )), ('receipt_num', models.BigIntegerField(default=0, verbose_name='Receipt number')), ], options={ 'db_table': 'all_time_pay_log', 'ordering': ('-date_add',), }, ), migrations.CreateModel( name='InvoiceForPayment', fields=[ ('id', models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name='ID' )), ('abon', models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='abonapp.Abon' )), ('status', models.BooleanField(default=False)), ('amount', models.FloatField(default=0.0)), ('comment', models.CharField(max_length=128)), ('date_create', models.DateTimeField(auto_now_add=True)), ('date_pay', models.DateTimeField(blank=True, null=True)), ('author', models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL )) ], options={ 'verbose_name': 'Debt', 'verbose_name_plural': 'Debts', 'db_table': 'abonent_inv_pay', 'ordering': ('date_create',) }, ), migrations.CreateModel( name='PassportInfo', fields=[ ('id', models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name='ID' )), ('series', models.CharField( max_length=4, validators=[django.core.validators.integer_validator], verbose_name='Pasport serial' )), ('number', models.CharField( max_length=6, validators=[django.core.validators.integer_validator], verbose_name='Pasport number' )), ('distributor', models.CharField( max_length=64, verbose_name='Distributor' )), ('date_of_acceptance', models.DateField( verbose_name='Date of acceptance' )), ('abon', models.OneToOneField( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='abonapp.Abon' )) ], options={ 'ordering': ('series',), 'verbose_name': 'Passport Info', 'verbose_name_plural': 'Passport Info', 'db_table': 'passport_info' }, ), migrations.CreateModel( name='PeriodicPayForId', fields=[ ('id', models.AutoField( auto_created=True, primary_key=True, serialize=False, verbose_name='ID' )), ('periodic_pay', models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='tariff_app.PeriodicPay', verbose_name='Periodic pay' )), ('last_pay', models.DateTimeField( blank=True, null=True, verbose_name='Last pay time' )), ('next_pay', models.DateTimeField( verbose_name='Next time to pay' )), ('account', models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='abonapp.Abon', verbose_name='Account' )) ], options={ 'db_table': 'periodic_pay_for_id', 'ordering': ('last_pay',) }, ), migrations.CreateModel( name='AbonRawPassword', fields=[ ('account', models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='abonapp.Abon' )), ('passw_text', models.CharField(max_length=64)), ], options={ 'db_table': 'abon_raw_password', }, ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency("profiles.UserProfile"), ("devices", "0001_initial"), ("groupapp", "0001_initial"), ("gateways", "0001_initial"), ("services", "0001_initial"), ("profiles", "0001_initial"), ] operations = [ migrations.CreateModel( name="Customer", fields=[ ( "baseaccount_ptr", models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to="profiles.BaseAccount", ), ), ("balance", models.FloatField(default=0.0)), ( "ip_address", models.GenericIPAddressField(blank=True, null=True, default=None, verbose_name="Ip address"), ), ("description", models.TextField(blank=True, null=True, default=None, verbose_name="Comment")), ("house", models.CharField(blank=True, max_length=12, null=True, default=None, verbose_name="House")), ("is_dynamic_ip", models.BooleanField(default=False, verbose_name="Is dynamic ip")), ( "auto_renewal_service", models.BooleanField( default=False, verbose_name="Automatically connect next service"), ), ( "markers", bitfield.models.BitField( ( ("icon_donkey", "Donkey"), ("icon_fire", "Fire"), ("icon_ok", "Ok"), ("icon_king", "King"), ("icon_tv", "TV"), ("icon_smile", "Smile"), ("icon_dollar", "Dollar"), ("icon_service", "Service"), ("icon_mrk", "Marker"), ), default=0, ), ), ], options={ "verbose_name": "Customer", "verbose_name_plural": "Customers", "db_table": "customers", "ordering": ("id", ), "permissions": ( ("can_buy_service", "Buy service perm"), ("can_add_balance", "fill account"), ("can_ping", "Can ping"), ), }, bases=("profiles.baseaccount", ), ), migrations.CreateModel( name="PeriodicPayForId", fields=[ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("last_pay", models.DateTimeField(blank=True, null=True, default=None, verbose_name="Last pay time")), ("next_pay", models.DateTimeField(verbose_name="Next time to pay")), ( "account", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="customers.Customer", verbose_name="Account"), ), ( "periodic_pay", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="services.PeriodicPay", verbose_name="Periodic pay", ), ), ], options={ "db_table": "periodic_pay_for_id", "ordering": ("last_pay", ), }, ), migrations.CreateModel( name="PassportInfo", fields=[ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ( "series", models.CharField( max_length=4, validators=[ django.core.validators.RegexValidator( re.compile("^-?\\d+\\Z"), code="invalid", message="Enter a valid integer.") ], verbose_name="Passport serial", ), ), ( "number", models.CharField( max_length=6, validators=[ django.core.validators.RegexValidator( re.compile("^-?\\d+\\Z"), code="invalid", message="Enter a valid integer.") ], verbose_name="Passport number", ), ), ("distributor", models.CharField(max_length=64, verbose_name="Distributor")), ("date_of_acceptance", models.DateField(verbose_name="Date of acceptance")), ( "customer", models.OneToOneField( blank=True, null=True, default=None, on_delete=django.db.models.deletion.CASCADE, to="customers.Customer", ), ), ], options={ "verbose_name": "Passport Info", "verbose_name_plural": "Passport Info", "db_table": "passport_info", "ordering": ("id", ), }, ), migrations.CreateModel( name="InvoiceForPayment", fields=[ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("status", models.BooleanField(default=False)), ("cost", models.FloatField(default=0.0)), ("comment", models.CharField(max_length=128)), ("date_create", models.DateTimeField(auto_now_add=True)), ("date_pay", models.DateTimeField(blank=True, null=True)), ( "author", models.ForeignKey( blank=True, null=True, default=None, on_delete=django.db.models.deletion.SET_NULL, related_name="+", to="profiles.UserProfile", ), ), ("customer", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="customers.Customer")), ], options={ "verbose_name": "Debt", "verbose_name_plural": "Debts", "db_table": "customer_inv_pay", "ordering": ("id", ), }, ), migrations.CreateModel( name="CustomerStreet", fields=[ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("name", models.CharField(max_length=64)), ("group", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="groupapp.Group")), ], options={ "verbose_name": "Street", "verbose_name_plural": "Streets", "db_table": "customer_street", "ordering": ("id", ), }, ), migrations.CreateModel( name="CustomerService", fields=[ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("start_time", models.DateTimeField(blank=True, default=None, null=True)), ("deadline", models.DateTimeField(blank=True, default=None, null=True)), ( "service", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="link_to_service", to="services.Service", ), ), ], options={ "verbose_name": "Customer service", "verbose_name_plural": "Customer services", "db_table": "customer_service", "ordering": ("start_time", ), "permissions": (("can_complete_service", "finish service perm"), ), }, ), migrations.CreateModel( name="CustomerRawPassword", fields=[ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("passw_text", encrypted_model_fields.fields.EncryptedCharField()), ( "customer", models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, to="customers.Customer"), ), ], options={ "db_table": "customer_raw_password", }, ), migrations.CreateModel( name="CustomerLog", fields=[ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("cost", models.FloatField(default=0.0)), ("comment", models.CharField(max_length=128)), ("date", models.DateTimeField(auto_now_add=True)), ( "author", models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name="+", to="profiles.BaseAccount", ), ), ("customer", models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to="customers.Customer")), ], options={ "db_table": "customer_log", "ordering": ("-date", ), }, ), migrations.AddField( model_name="customer", name="current_service", field=models.OneToOneField( blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, to="customers.CustomerService", ), ), migrations.AddField( model_name="customer", name="dev_port", field=models.ForeignKey( blank=True, null=True, default=None, on_delete=django.db.models.deletion.SET_NULL, to="devices.Port"), ), migrations.AddField( model_name="customer", name="device", field=models.ForeignKey( blank=True, null=True, default=None, on_delete=django.db.models.deletion.SET_NULL, to="devices.Device"), ), migrations.AddField( model_name="customer", name="gateway", field=models.ForeignKey( blank=True, default=None, help_text="Network access server", null=True, on_delete=django.db.models.deletion.SET_NULL, to="gateways.Gateway", verbose_name="Gateway", ), ), migrations.AddField( model_name="customer", name="group", field=models.ForeignKey( blank=True, null=True, default=None, on_delete=django.db.models.deletion.SET_NULL, to="groupapp.Group", verbose_name="Customer group", ), ), migrations.AddField( model_name="customer", name="last_connected_service", field=models.ForeignKey( blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_NULL, to="services.Service", verbose_name="Last connected service", ), ), migrations.AddField( model_name="customer", name="street", field=models.ForeignKey( blank=True, null=True, default=None, on_delete=django.db.models.deletion.SET_NULL, to="customers.CustomerStreet", verbose_name="Street", ), ), migrations.CreateModel( name="AdditionalTelephone", fields=[ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ( "telephone", models.CharField( max_length=16, validators=[ django.core.validators.RegexValidator( "^(\\+[7893]\\d{10,11})?$") ], verbose_name="Telephone", ), ), ("owner_name", models.CharField(max_length=127)), ( "customer", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, related_name="additional_telephones", to="customers.Customer", ), ), ], options={ "verbose_name": "Additional telephone", "verbose_name_plural": "Additional telephones", "db_table": "additional_telephones", "ordering": ("id", ), }, ), migrations.AlterUniqueTogether( name="customer", unique_together={("ip_address", "gateway")}, ), ]
class Migration(migrations.Migration): dependencies = [ ('faculty', '0016_shorten_indexes'), ] operations = [ migrations.AlterField( model_name='careerevent', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='careerevent', name='event_type', field=models.CharField(choices=[ ('ADMINPOS', faculty.event_types.position.AdminPositionEventHandler), ('APPOINT', faculty.event_types.career.AppointmentEventHandler), ('AWARD', faculty.event_types.awards.AwardEventHandler), ('COMMITTEE', faculty.event_types.info.CommitteeMemberHandler), ('EXTERN_AFF', faculty.event_types.info.ExternalAffiliationHandler), ('EXTSERVICE', faculty.event_types.info.ExternalServiceHandler), ('FELLOW', faculty.event_types.awards.FellowshipEventHandler), ('GRANTAPP', faculty.event_types.awards.GrantApplicationEventHandler), ('NORM_TEACH', faculty.event_types.teaching.NormalTeachingLoadHandler), ('LEAVE', faculty.event_types.career.OnLeaveEventHandler), ('ONE_NINE', faculty.event_types.teaching.OneInNineHandler), ('OTHER_NOTE', faculty.event_types.info.OtherEventHandler), ('LABMEMB', faculty.event_types.info.ResearchMembershipHandler), ('SALARY', faculty.event_types.career.SalaryBaseEventHandler), ('STIPEND', faculty.event_types.career.SalaryModificationEventHandler), ('SPCL_DEAL', faculty.event_types.info.SpecialDealHandler), ('STUDYLEAVE', faculty.event_types.career.StudyLeaveEventHandler), ('TEACHING', faculty.event_types.awards.TeachingCreditEventHandler), ('TENUREAPP', faculty.event_types.career.TenureApplicationEventHandler), ('ACCRED', faculty.event_types.career.AccreditationFlagEventHandler), ('PROMOTION', faculty.event_types.career.PromotionApplicationEventHandler), ('SALARYREV', faculty.event_types.career.SalaryReviewEventHandler), ('CONTRACTRV', faculty.event_types.career.ContractReviewEventHandler), ('RESUME', faculty.event_types.info.ResumeEventHandler) ], max_length=10), ), migrations.AlterField( model_name='careerevent', name='flags', field=bitfield.models.BitField( ['affects_teaching', 'affects_salary'], default=0), ), migrations.AlterField( model_name='careerevent', name='person', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name='career_events', to='coredata.Person'), ), migrations.AlterField( model_name='careerevent', name='slug', field=autoslug.fields.AutoSlugField(editable=False, populate_from='slug_string', unique_with=('person', )), ), migrations.AlterField( model_name='careerevent', name='status', field=models.CharField(choices=[('NA', 'Needs Approval'), ('A', 'Approved'), ('D', 'Deleted')], default='', max_length=2), ), migrations.AlterField( model_name='careerevent', name='unit', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Unit'), ), migrations.AlterField( model_name='documentattachment', name='career_event', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name='attachments', to='faculty.CareerEvent'), ), migrations.AlterField( model_name='documentattachment', name='contents', field=models.FileField( max_length=500, storage=django.core.files.storage.FileSystemStorage( base_url=None, location='submitted_files'), upload_to=faculty.models.attachment_upload_to), ), migrations.AlterField( model_name='documentattachment', name='created_by', field=models.ForeignKey( help_text='Document attachment created by.', on_delete=django.db.models.deletion.PROTECT, to='coredata.Person'), ), migrations.AlterField( model_name='documentattachment', name='slug', field=autoslug.fields.AutoSlugField( editable=False, populate_from='title', unique_with=('career_event', )), ), migrations.AlterField( model_name='eventconfig', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='eventconfig', name='event_type', field=models.CharField(choices=[ ('ADMINPOS', faculty.event_types.position.AdminPositionEventHandler), ('APPOINT', faculty.event_types.career.AppointmentEventHandler), ('AWARD', faculty.event_types.awards.AwardEventHandler), ('COMMITTEE', faculty.event_types.info.CommitteeMemberHandler), ('EXTERN_AFF', faculty.event_types.info.ExternalAffiliationHandler), ('EXTSERVICE', faculty.event_types.info.ExternalServiceHandler), ('FELLOW', faculty.event_types.awards.FellowshipEventHandler), ('GRANTAPP', faculty.event_types.awards.GrantApplicationEventHandler), ('NORM_TEACH', faculty.event_types.teaching.NormalTeachingLoadHandler), ('LEAVE', faculty.event_types.career.OnLeaveEventHandler), ('ONE_NINE', faculty.event_types.teaching.OneInNineHandler), ('OTHER_NOTE', faculty.event_types.info.OtherEventHandler), ('LABMEMB', faculty.event_types.info.ResearchMembershipHandler), ('SALARY', faculty.event_types.career.SalaryBaseEventHandler), ('STIPEND', faculty.event_types.career.SalaryModificationEventHandler), ('SPCL_DEAL', faculty.event_types.info.SpecialDealHandler), ('STUDYLEAVE', faculty.event_types.career.StudyLeaveEventHandler), ('TEACHING', faculty.event_types.awards.TeachingCreditEventHandler), ('TENUREAPP', faculty.event_types.career.TenureApplicationEventHandler), ('ACCRED', faculty.event_types.career.AccreditationFlagEventHandler), ('PROMOTION', faculty.event_types.career.PromotionApplicationEventHandler), ('SALARYREV', faculty.event_types.career.SalaryReviewEventHandler), ('CONTRACTRV', faculty.event_types.career.ContractReviewEventHandler), ('RESUME', faculty.event_types.info.ResumeEventHandler) ], max_length=10), ), migrations.AlterField( model_name='eventconfig', name='unit', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Unit'), ), migrations.AlterField( model_name='facultymemberinfo', name='birthday', field=models.DateField(blank=True, null=True, verbose_name='Birthdate'), ), migrations.AlterField( model_name='facultymemberinfo', name='config', field=courselib.json_fields.JSONField(blank=True, default=dict, null=True), ), migrations.AlterField( model_name='facultymemberinfo', name='emergency_contact', field=models.TextField( blank=True, verbose_name='Emergency Contact Information'), ), migrations.AlterField( model_name='facultymemberinfo', name='office_number', field=models.CharField(blank=True, max_length=20, null=True, verbose_name='Office'), ), migrations.AlterField( model_name='facultymemberinfo', name='person', field=models.OneToOneField( on_delete=django.db.models.deletion.PROTECT, related_name='+', to='coredata.Person'), ), migrations.AlterField( model_name='facultymemberinfo', name='phone_number', field=models.CharField(blank=True, max_length=20, null=True, verbose_name='Local Phone Number'), ), migrations.AlterField( model_name='grant', name='config', field=courselib.json_fields.JSONField(blank=True, default=dict, null=True), ), migrations.AlterField( model_name='grant', name='import_key', field=models.CharField( blank=True, help_text="e.g. 'nserc-43517b4fd422423382baab1e916e7f63'", max_length=255, null=True), ), migrations.AlterField( model_name='grant', name='initial', field=models.DecimalField(decimal_places=2, max_digits=12, verbose_name='Initial balance'), ), migrations.AlterField( model_name='grant', name='label', field=models.CharField( db_index=True, help_text='for identification from FAST import', max_length=150), ), migrations.AlterField( model_name='grant', name='overhead', field=models.DecimalField( decimal_places=2, help_text='Annual overhead returned to Faculty budget', max_digits=12, verbose_name='Annual overhead'), ), migrations.AlterField( model_name='grant', name='owners', field=models.ManyToManyField( help_text='Who owns/controls this grant?', through='faculty.GrantOwner', to='coredata.Person'), ), migrations.AlterField( model_name='grant', name='project_code', field=models.CharField( db_index=True, help_text="The fund and project code, like '13-123456'", max_length=32), ), migrations.AlterField( model_name='grant', name='slug', field=autoslug.fields.AutoSlugField(editable=False, populate_from='title', unique_with=('unit', )), ), migrations.AlterField( model_name='grant', name='status', field=models.CharField(choices=[('A', 'Active'), ('D', 'Deleted')], default='A', max_length=2), ), migrations.AlterField( model_name='grant', name='title', field=models.CharField( help_text='Label for the grant within this system', max_length=64), ), migrations.AlterField( model_name='grant', name='unit', field=models.ForeignKey( help_text='Unit who owns the grant', on_delete=django.db.models.deletion.PROTECT, to='coredata.Unit'), ), migrations.AlterField( model_name='grantbalance', name='actual', field=models.DecimalField(decimal_places=2, max_digits=12, verbose_name='YTD actual'), ), migrations.AlterField( model_name='grantbalance', name='balance', field=models.DecimalField(decimal_places=2, max_digits=12, verbose_name='grant balance'), ), migrations.AlterField( model_name='grantbalance', name='config', field=courselib.json_fields.JSONField(blank=True, default=dict, null=True), ), migrations.AlterField( model_name='grantbalance', name='grant', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='faculty.Grant'), ), migrations.AlterField( model_name='grantbalance', name='month', field=models.DecimalField(decimal_places=2, max_digits=12, verbose_name='current month'), ), migrations.AlterField( model_name='grantowner', name='config', field=courselib.json_fields.JSONField(blank=True, default=dict, null=True), ), migrations.AlterField( model_name='grantowner', name='grant', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='faculty.Grant'), ), migrations.AlterField( model_name='grantowner', name='person', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Person'), ), migrations.AlterField( model_name='memo', name='career_event', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='faculty.CareerEvent'), ), migrations.AlterField( model_name='memo', name='cc_lines', field=models.TextField( blank=True, help_text='Additional recipients of the memo', null=True, verbose_name='CC lines'), ), migrations.AlterField( model_name='memo', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='memo', name='created_by', field=models.ForeignKey( help_text='Letter generation requested by.', on_delete=django.db.models.deletion.PROTECT, related_name='+', to='coredata.Person'), ), migrations.AlterField( model_name='memo', name='from_lines', field=models.TextField( help_text= 'Name (and title) of the sender, e.g. "John Smith, Applied Sciences, Dean"', verbose_name='From'), ), migrations.AlterField( model_name='memo', name='from_person', field=models.ForeignKey( null=True, on_delete=django.db.models.deletion.PROTECT, related_name='+', to='coredata.Person'), ), migrations.AlterField( model_name='memo', name='is_letter', field=models.BooleanField( default=False, help_text= 'Make it a letter with correct letterhead instead of a memo.', verbose_name='Make it a letter'), ), migrations.AlterField( model_name='memo', name='memo_text', field=models.TextField(help_text="I.e. 'Congratulations on ... '"), ), migrations.AlterField( model_name='memo', name='sent_date', field=models.DateField(default=datetime.date.today, help_text='The sending date of the letter'), ), migrations.AlterField( model_name='memo', name='slug', field=autoslug.fields.AutoSlugField( editable=False, populate_from='autoslug', unique_with=('career_event', )), ), migrations.AlterField( model_name='memo', name='subject', field=models.TextField( help_text= 'The subject of the memo (lines will be formatted separately in the memo header). This will be ignored for letters' ), ), migrations.AlterField( model_name='memo', name='template', field=models.ForeignKey( null=True, on_delete=django.db.models.deletion.PROTECT, to='faculty.MemoTemplate'), ), migrations.AlterField( model_name='memo', name='to_lines', field=models.TextField(blank=True, help_text='Recipient of the memo', null=True, verbose_name='Attention'), ), migrations.AlterField( model_name='memo', name='unit', field=models.ForeignKey( help_text= 'The unit producing the memo: will determine the letterhead used for the memo.', on_delete=django.db.models.deletion.PROTECT, to='coredata.Unit'), ), migrations.AlterField( model_name='memotemplate', name='created_by', field=models.ForeignKey( help_text='Memo template created by.', on_delete=django.db.models.deletion.PROTECT, related_name='+', to='coredata.Person'), ), migrations.AlterField( model_name='memotemplate', name='default_from', field=models.CharField(blank=True, help_text='The default sender of the memo', max_length=255, verbose_name='Default From'), ), migrations.AlterField( model_name='memotemplate', name='event_type', field=models.CharField( choices=[('ADMINPOS', faculty.event_types. position.AdminPositionEventHandler), ('APPOINT', faculty.event_types.career.AppointmentEventHandler), ('AWARD', faculty.event_types.awards.AwardEventHandler ), ('COMMITTEE', faculty.event_types.info.CommitteeMemberHandler), ('EXTERN_AFF', faculty.event_types.info.ExternalAffiliationHandler), ('EXTSERVICE', faculty.event_types.info.ExternalServiceHandler), ('FELLOW', faculty.event_types.awards.FellowshipEventHandler), ('GRANTAPP', faculty.event_types.awards. GrantApplicationEventHandler), ('NORM_TEACH', faculty.event_types. teaching.NormalTeachingLoadHandler), ('LEAVE', faculty.event_types.career.OnLeaveEventHandler ), ('ONE_NINE', faculty.event_types.teaching.OneInNineHandler), ('OTHER_NOTE', faculty.event_types.info.OtherEventHandler), ('LABMEMB', faculty.event_types.info.ResearchMembershipHandler), ('SALARY', faculty.event_types.career.SalaryBaseEventHandler), ('STIPEND', faculty.event_types.career. SalaryModificationEventHandler), ('SPCL_DEAL', faculty.event_types.info.SpecialDealHandler), ('STUDYLEAVE', faculty.event_types.career.StudyLeaveEventHandler), ('TEACHING', faculty.event_types.awards.TeachingCreditEventHandler ), ('TENUREAPP', faculty.event_types.career. TenureApplicationEventHandler), ('ACCRED', faculty.event_types.career. AccreditationFlagEventHandler), ('PROMOTION', faculty.event_types.career. PromotionApplicationEventHandler), ('SALARYREV', faculty.event_types.career.SalaryReviewEventHandler), ('CONTRACTRV', faculty.event_types.career.ContractReviewEventHandler ), ('RESUME', faculty.event_types.info.ResumeEventHandler)], help_text='The type of event that this memo applies to', max_length=10), ), migrations.AlterField( model_name='memotemplate', name='is_letter', field=models.BooleanField( default=False, help_text='Should this be a letter by default', verbose_name='Make it a letter'), ), migrations.AlterField( model_name='memotemplate', name='label', field=models.CharField( help_text= 'The name for this template (that you select it by when using it)', max_length=150, verbose_name='Template Name'), ), migrations.AlterField( model_name='memotemplate', name='slug', field=autoslug.fields.AutoSlugField(editable=False, populate_from='autoslug', unique=True), ), migrations.AlterField( model_name='memotemplate', name='subject', field=models.CharField( help_text= 'The default subject of the memo. Will be ignored for letters', max_length=255, verbose_name='Default Subject'), ), migrations.AlterField( model_name='memotemplate', name='template_text', field=models.TextField( help_text= "The template for the memo. It may be edited when creating each memo. (i.e. 'Congratulations {{first_name}} on ... ')" ), ), migrations.AlterField( model_name='memotemplate', name='unit', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Unit'), ), migrations.AlterField( model_name='position', name='degree1', field=models.CharField(default='', max_length=12), ), migrations.AlterField( model_name='position', name='degree2', field=models.CharField(default='', max_length=12), ), migrations.AlterField( model_name='position', name='degree3', field=models.CharField(default='', max_length=12), ), migrations.AlterField( model_name='position', name='institution1', field=models.CharField(default='', max_length=25), ), migrations.AlterField( model_name='position', name='institution2', field=models.CharField(default='', max_length=25), ), migrations.AlterField( model_name='position', name='institution3', field=models.CharField(default='', max_length=25), ), migrations.AlterField( model_name='position', name='location1', field=models.CharField(default='', max_length=23), ), migrations.AlterField( model_name='position', name='location2', field=models.CharField(default='', max_length=23), ), migrations.AlterField( model_name='position', name='location3', field=models.CharField(default='', max_length=23), ), migrations.AlterField( model_name='position', name='percentage', field=models.DecimalField( blank=True, decimal_places=2, default=100, help_text='Percentage of this position in the given unit', max_digits=5, null=True), ), migrations.AlterField( model_name='position', name='projected_start_date', field=models.DateField(default=faculty.models.timezone_today, verbose_name='Projected Start Date'), ), migrations.AlterField( model_name='position', name='rank', field=models.CharField(blank=True, choices=[('LLEC', 'Limited-Term Lecturer'), ('LABI', 'Laboratory Instructor'), ('LECT', 'Lecturer'), ('SLEC', 'Senior Lecturer'), ('INST', 'Instructor'), ('ASSI', 'Assistant Professor'), ('ASSO', 'Associate Professor'), ('FULL', 'Full Professor'), ('URAS', 'University Research Associate'), ('ADJC', 'Adjunct Professor')], max_length=50, null=True), ), migrations.AlterField( model_name='position', name='unit', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Unit'), ), migrations.AlterField( model_name='position', name='year1', field=models.CharField(default='', max_length=5), ), migrations.AlterField( model_name='position', name='year2', field=models.CharField(default='', max_length=5), ), migrations.AlterField( model_name='position', name='year3', field=models.CharField(default='', max_length=5), ), migrations.AlterField( model_name='positiondocumentattachment', name='contents', field=models.FileField( max_length=500, storage=django.core.files.storage.FileSystemStorage( base_url=None, location='submitted_files'), upload_to=faculty.models.position_attachment_upload_to), ), migrations.AlterField( model_name='positiondocumentattachment', name='created_by', field=models.ForeignKey( help_text='Document attachment created by.', on_delete=django.db.models.deletion.PROTECT, to='coredata.Person'), ), migrations.AlterField( model_name='positiondocumentattachment', name='position', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name='attachments', to='faculty.Position'), ), migrations.AlterField( model_name='positiondocumentattachment', name='slug', field=autoslug.fields.AutoSlugField(editable=False, populate_from='title', unique_with=('position', )), ), migrations.AlterField( model_name='tempgrant', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='tempgrant', name='creator', field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='coredata.Person'), ), migrations.AlterField( model_name='tempgrant', name='import_key', field=models.CharField( blank=True, help_text="e.g. 'nserc-43517b4fd422423382baab1e916e7f63'", max_length=255, null=True), ), migrations.AlterField( model_name='tempgrant', name='initial', field=models.DecimalField(decimal_places=2, max_digits=12, verbose_name='initial balance'), ), migrations.AlterField( model_name='tempgrant', name='label', field=models.CharField( help_text='for identification from FAST import', max_length=150), ), migrations.AlterField( model_name='tempgrant', name='project_code', field=models.CharField( help_text="The fund and project code, like '13-123456'", max_length=32), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ ('devapp', '0001_initial'), ('group_app', '0001_initial'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ('accounts_app', '0001_initial'), ('tariff_app', '0001_initial'), ] operations = [ migrations.CreateModel( name='Abon', fields=[ ('baseaccount_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='accounts_app.BaseAccount')), ('ballance', models.FloatField(default=0.0)), ('ip_address', MyGenericIPAddressField(blank=True, max_length=8, null=True, protocol='ipv4')), ('description', models.TextField(blank=True, null=True, verbose_name='Comment')), ('house', models.CharField(blank=True, max_length=12, null=True, verbose_name='House')), ('is_dynamic_ip', models.BooleanField(default=False)), ('markers', bitfield.models.BitField((('icon_donkey', 'Donkey'), ('icon_fire', 'Fire'), ('icon_ok', 'Ok'), ('icon_king', 'King'), ('icon_tv', 'TV'), ('icon_smile', 'Smile'), ('icon_dollar', 'Dollar'), ('icon_service', 'Service'), ('icon_mrk', 'Marker')), default=0)), ], options={ 'verbose_name': 'Abon', 'verbose_name_plural': 'Abons', 'db_table': 'abonent', 'ordering': ['fio'], 'permissions': (('can_buy_tariff', 'Buy service perm'), ('can_view_passport', 'Can view passport'), ('can_add_ballance', 'fill account'), ('can_ping', 'Can ping')), }, bases=('accounts_app.baseaccount',), ), migrations.CreateModel( name='AbonLog', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('amount', models.FloatField(default=0.0)), ('comment', models.CharField(max_length=128)), ('date', models.DateTimeField(auto_now_add=True)), ], options={ 'db_table': 'abonent_log', 'ordering': ['-date'], 'permissions': (('can_view_abonlog', 'Can view subscriber logs'),), }, ), migrations.CreateModel( name='AbonStreet', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=64)), ('group', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group_app.Group')), ], options={ 'verbose_name': 'Street', 'verbose_name_plural': 'Streets', 'db_table': 'abon_street', 'ordering': ['name'], }, ), migrations.CreateModel( name='AbonTariff', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('time_start', models.DateTimeField(blank=True, default=None, null=True)), ('deadline', models.DateTimeField(blank=True, default=None, null=True)), ('tariff', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='linkto_tariff', to='tariff_app.Tariff')), ], options={ 'verbose_name': 'Abon service', 'verbose_name_plural': 'Abon services', 'db_table': 'abonent_tariff', 'ordering': ['time_start'], 'permissions': (('can_complete_service', 'finish service perm'),), }, ), migrations.CreateModel( name='AdditionalTelephone', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('telephone', models.CharField(max_length=16, validators=[ django.core.validators.RegexValidator('^\\+[7,8,9,3]\\d{10,11}$')], verbose_name='Telephone')), ('owner_name', models.CharField(max_length=127)), ], options={ 'verbose_name': 'Additional telephone', 'verbose_name_plural': 'Additional telephones', 'db_table': 'additional_telephones', 'ordering': ('owner_name',), 'permissions': (('can_view_additionaltelephones', 'Can view additional telephones'),), }, ), migrations.CreateModel( name='AllPayLog', fields=[ ('pay_id', models.CharField(max_length=64, primary_key=True, serialize=False)), ('date_action', models.DateTimeField(auto_now_add=True)), ('summ', models.FloatField(default=0.0)), ('pay_system_name', models.CharField(max_length=16)), ], options={ 'db_table': 'all_pay_log', 'ordering': ['-date_action'], }, ), migrations.CreateModel( name='AllTimePayLog', fields=[ ('pay_id', models.CharField(max_length=36, primary_key=True, serialize=False, unique=True)), ('date_add', models.DateTimeField(auto_now_add=True)), ('summ', models.FloatField(default=0.0)), ('trade_point', models.CharField(blank=True, default=None, max_length=20, null=True, verbose_name='Trade point')), ('receipt_num', models.BigIntegerField(default=0, verbose_name='Receipt number')), ], options={ 'db_table': 'all_time_pay_log', 'ordering': ['-date_add'], }, ), migrations.CreateModel( name='ExtraFieldsModel', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('title', models.CharField(default='no title', max_length=16)), ('field_type', models.CharField( choices=[('int', 'Digital field'), ('str', 'Text field'), ('dbl', 'Floating field'), ('ipa', 'Ip Address')], default='str', max_length=3)), ('data', models.CharField(blank=True, max_length=64, null=True)), ], options={ 'db_table': 'abon_extra_fields', }, ), migrations.CreateModel( name='InvoiceForPayment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('status', models.BooleanField(default=False)), ('amount', models.FloatField(default=0.0)), ('comment', models.CharField(max_length=128)), ('date_create', models.DateTimeField(auto_now_add=True)), ('date_pay', models.DateTimeField(blank=True, null=True)), ], options={ 'verbose_name': 'Debt', 'verbose_name_plural': 'Debts', 'db_table': 'abonent_inv_pay', 'ordering': ('date_create',), 'permissions': (('can_view_invoiceforpayment', 'Can view invoice for payment'),), }, ), migrations.CreateModel( name='PassportInfo', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('series', models.CharField(max_length=4, validators=[ django.core.validators.RegexValidator(re.compile('^-?\\d+\\Z', 32), code='invalid', message='Enter a valid integer.')])), ('number', models.CharField(max_length=6, validators=[ django.core.validators.RegexValidator(re.compile('^-?\\d+\\Z', 32), code='invalid', message='Enter a valid integer.')])), ('distributor', models.CharField(max_length=64)), ('date_of_acceptance', models.DateField()), ], options={ 'verbose_name': 'Passport Info', 'verbose_name_plural': 'Passport Info', 'db_table': 'passport_info', }, ), migrations.CreateModel( name='PeriodicPayForId', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('last_pay', models.DateTimeField(blank=True, null=True, verbose_name='Last pay time')), ('next_pay', models.DateTimeField(verbose_name='Next time to pay')), ], options={ 'db_table': 'periodic_pay_for_id', }, ), migrations.CreateModel( name='AbonRawPassword', fields=[ ('account', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to='abonapp.Abon')), ('passw_text', models.CharField(max_length=64)), ], options={ 'db_table': 'abon_raw_password', }, ), migrations.AddField( model_name='periodicpayforid', name='account', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='abonapp.Abon', verbose_name='Account'), ), migrations.AddField( model_name='periodicpayforid', name='periodic_pay', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='tariff_app.PeriodicPay', verbose_name='Periodic pay'), ), migrations.AddField( model_name='passportinfo', name='abon', field=models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='abonapp.Abon'), ), migrations.AddField( model_name='invoiceforpayment', name='abon', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='abonapp.Abon'), ), migrations.AddField( model_name='invoiceforpayment', name='author', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL), ), migrations.AddField( model_name='alltimepaylog', name='abon', field=models.ForeignKey(blank=True, default=None, null=True, on_delete=django.db.models.deletion.SET_DEFAULT, to='abonapp.Abon'), ), migrations.AddField( model_name='additionaltelephone', name='abon', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='additional_telephones', to='abonapp.Abon'), ), migrations.AddField( model_name='abonlog', name='abon', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='abonapp.Abon'), ), migrations.AddField( model_name='abonlog', name='author', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to=settings.AUTH_USER_MODEL), ), migrations.AddField( model_name='abon', name='current_tariff', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='abonapp.AbonTariff'), ), migrations.AddField( model_name='abon', name='dev_port', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='devapp.Port'), ), migrations.AddField( model_name='abon', name='device', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='devapp.Device'), ), migrations.AddField( model_name='abon', name='extra_fields', field=models.ManyToManyField(blank=True, to='abonapp.ExtraFieldsModel'), ), migrations.AddField( model_name='abon', name='group', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='group_app.Group', verbose_name='User group'), ), migrations.AddField( model_name='abon', name='street', field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='abonapp.AbonStreet', verbose_name='Street'), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Block', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=200, unique=True)), ('release_date', models.DateField(blank=True, null=True)), ], ), migrations.CreateModel( name='Card', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('scryfall_oracle_id', models.CharField(max_length=36, unique=True)), ('name', models.CharField(max_length=200)), ('converted_mana_cost', models.FloatField()), ('layout', models.CharField(max_length=50)), ('is_reserved', models.BooleanField(default=False)), ('edh_rec_rank', models.IntegerField(blank=True, null=True)), ('is_token', models.BooleanField(default=False)), ('colour_identity', bitfield.models.BitField((('w', 'White'), ('u', 'Blue'), ('b', 'Black'), ('r', 'Red'), ('g', 'Green')), default=None)), ('colour_identity_count', models.IntegerField()), ], ), migrations.CreateModel( name='CardFace', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('side', models.CharField(blank=True, max_length=1, null=True)), ('name', models.CharField(max_length=200)), ('mana_cost', models.CharField(blank=True, max_length=50, null=True)), ('converted_mana_cost', models.FloatField()), ('colour', bitfield.models.BitField((('w', 'White'), ('u', 'Blue'), ('b', 'Black'), ('r', 'Red'), ('g', 'Green')), default=None)), ('colour_indicator', bitfield.models.BitField((('w', 'White'), ('u', 'Blue'), ('b', 'Black'), ('r', 'Red'), ('g', 'Green')), default=None)), ('colour_count', models.IntegerField()), ('colour_weight', models.IntegerField()), ('colour_sort_key', models.IntegerField()), ('power', models.CharField(blank=True, max_length=20, null=True)), ('num_power', models.FloatField(default=0)), ('toughness', models.CharField(blank=True, max_length=20, null=True)), ('num_toughness', models.FloatField(default=0)), ('loyalty', models.CharField(blank=True, max_length=20, null=True)), ('num_loyalty', models.FloatField(default=0)), ('type_line', models.CharField(blank=True, max_length=200, null=True)), ('rules_text', models.CharField(blank=True, max_length=1000, null=True)), ('hand_modifier', models.CharField(blank=True, max_length=10, null=True)), ('num_hand_modifier', models.IntegerField(default=0)), ('life_modifier', models.CharField(blank=True, max_length=10, null=True)), ('num_life_modifier', models.IntegerField(default=0)), ('card', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='faces', to='cards.card')), ], options={ 'ordering': ('side',), }, ), migrations.CreateModel( name='CardLocalisation', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('card_name', models.CharField(max_length=200)), ('multiverse_id', models.IntegerField(blank=True, null=True)), ], ), migrations.CreateModel( name='CardPrice', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('date', models.DateField()), ('paper_value', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True)), ('paper_foil_value', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True)), ('mtgo_value', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True)), ('mtgo_foil_value', models.DecimalField(blank=True, decimal_places=2, max_digits=10, null=True)), ], ), migrations.CreateModel( name='CardSubtype', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=50, unique=True)), ('automatically_created', models.BooleanField(default=False)), ], ), migrations.CreateModel( name='CardSupertype', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=50, unique=True)), ('automatically_created', models.BooleanField(default=False)), ], ), migrations.CreateModel( name='CardType', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=50, unique=True)), ('automatically_created', models.BooleanField(default=False)), ], ), migrations.CreateModel( name='Colour', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('symbol', models.CharField(max_length=1, unique=True)), ('name', models.CharField(max_length=15, unique=True)), ('display_order', models.IntegerField(unique=True)), ('bit_value', models.IntegerField(unique=True)), ('chart_colour', models.CharField(max_length=20)), ], ), migrations.CreateModel( name='Deck', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('date_created', models.DateField()), ('last_modified', models.DateField(auto_now=True)), ('name', models.CharField(max_length=200)), ('subtitle', models.CharField(blank=True, max_length=200, null=True)), ('description', models.TextField(blank=True, null=True)), ('format', models.CharField(choices=[('standard', 'Standard'), ('legacy', 'Legacy'), ('prerelease', 'Pre-release'), ('mtgo', 'MTGO'), ('unformat', 'Unformat'), ('unknown', 'Unknown'), ('heirloom', 'Heirloom'), ('vintage', 'Vintage'), ('edh', 'Commander / EDH'), ('archenemy', 'Archenemy'), ('planechase', 'Planechase'), ('vanguard', 'Vanguard'), ('modern', 'Modern'), ('pauper', 'Pauper'), ('noble', 'Noble'), ('casual', 'Casual'), ('hero', 'Hero'), ('quest_magic_rpg', 'Quest Magic RPGs'), ('quest_magic', 'Quest Magic'), ('block_constructed', 'Block Constructed'), ('limited', 'Limited'), ('duel_commander', 'Duel Commander'), ('tiny_leaders', 'Tiny Leaders'), ('highlander', 'Highlander'), ('magic_duels', 'Magic Duels'), ('penny_dreadful', 'Penny Dreadful'), ('frontier', 'Frontier'), ('leviathan', 'Leviathan'), ('1v1_commander', '1v1 Commander'), ('pauper_edh', 'Pauper EDH'), ('canadian_highlander', 'Canadian Highlander'), ('brawl', 'Brawl'), ('arena', 'Arena'), ('oathbreaker', 'Oathbreaker')], max_length=50)), ('is_prototype', models.BooleanField(default=False)), ('is_private', models.BooleanField(default=False)), ('exclude_colours', models.ManyToManyField(blank=True, related_name='exclude_from_decks', to='cards.Colour')), ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='decks', to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='Format', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=100, unique=True)), ('code', models.CharField(max_length=100, unique=True)), ], ), migrations.CreateModel( name='FrameEffect', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=50)), ('name', models.CharField(max_length=100)), ], ), migrations.CreateModel( name='Language', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=50, unique=True)), ('code', models.CharField(blank=True, max_length=10, null=True)), ], ), migrations.CreateModel( name='Rarity', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('symbol', models.CharField(max_length=5, unique=True)), ('name', models.CharField(max_length=30, unique=True)), ('display_order', models.IntegerField(unique=True)), ], ), migrations.CreateModel( name='UserProps', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('unused_cards_seed', models.IntegerField(default=0)), ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='UserCardChange', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('date', models.DateTimeField()), ('difference', models.IntegerField()), ('card_localisation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='user_changes', to='cards.cardlocalisation')), ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='card_changes', to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='Set', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('code', models.CharField(max_length=10, unique=True)), ('release_date', models.DateField(blank=True, null=True)), ('name', models.CharField(max_length=200, unique=True)), ('type', models.CharField(blank=True, max_length=50, null=True)), ('total_set_size', models.IntegerField()), ('base_set_size', models.IntegerField(default=0)), ('keyrune_code', models.CharField(max_length=50)), ('is_foreign_only', models.BooleanField(default=False)), ('is_foil_only', models.BooleanField(default=False)), ('is_online_only', models.BooleanField(default=False)), ('is_partial_preview', models.BooleanField(default=False)), ('magic_card_market_name', models.CharField(blank=True, max_length=200, null=True)), ('magic_card_market_id', models.IntegerField(blank=True, null=True)), ('mtgo_code', models.CharField(blank=True, max_length=10, null=True)), ('tcg_player_group_id', models.IntegerField(blank=True, null=True)), ('block', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='sets', to='cards.block')), ('parent_set', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='child_sets', to='cards.set')), ], ), migrations.CreateModel( name='DeckCard', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('count', models.IntegerField()), ('board', models.CharField(choices=[('main', 'Main'), ('side', 'Side'), ('maybe', 'Maybe'), ('acquire', 'Acquire')], default='main', max_length=20)), ('is_commander', models.BooleanField(default=False)), ('card', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='deck_cards', to='cards.card')), ('deck', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='cards', to='cards.deck')), ], options={ 'ordering': ['card__converted_mana_cost', 'card__name'], }, ), migrations.CreateModel( name='CardTag', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=200)), ('cards', models.ManyToManyField(related_name='tags', to='cards.Card')), ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='card_tags', to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='CardPrinting', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('scryfall_id', models.CharField(max_length=36, unique=True)), ('scryfall_illustration_id', models.CharField(blank=True, max_length=36, null=True)), ('number', models.CharField(blank=True, max_length=10, null=True)), ('numerical_number', models.IntegerField(blank=True, null=True)), ('border_colour', models.CharField(blank=True, max_length=10, null=True)), ('frame_version', models.CharField(blank=True, max_length=50, null=True)), ('duel_deck_side', models.CharField(blank=True, max_length=1, null=True)), ('is_starter', models.BooleanField()), ('is_timeshifted', models.BooleanField()), ('has_foil', models.BooleanField(default=True)), ('has_non_foil', models.BooleanField(default=True)), ('is_alternative', models.BooleanField(default=False)), ('is_arena', models.BooleanField(default=False)), ('is_mtgo', models.BooleanField(default=False)), ('is_online_only', models.BooleanField(default=False)), ('is_paper', models.BooleanField(default=True)), ('is_textless', models.BooleanField(default=False)), ('is_full_art', models.BooleanField(default=False)), ('is_oversized', models.BooleanField(default=False)), ('is_reprint', models.BooleanField(default=False)), ('is_promo', models.BooleanField(default=False)), ('is_story_spotlight', models.BooleanField(default=False)), ('magic_card_market_id', models.IntegerField(blank=True, null=True)), ('magic_card_market_meta_id', models.IntegerField(blank=True, null=True)), ('mtg_arena_id', models.IntegerField(blank=True, null=True)), ('mtgo_id', models.IntegerField(blank=True, null=True)), ('mtgo_foil_id', models.IntegerField(blank=True, null=True)), ('mtg_stocks_id', models.IntegerField(blank=True, null=True)), ('tcg_player_product_id', models.IntegerField(blank=True, null=True)), ('card', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='printings', to='cards.card')), ('latest_price', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='latest_printing', to='cards.cardprice')), ('rarity', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='printings', to='cards.rarity')), ('set', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='card_printings', to='cards.set')), ], options={ 'ordering': ['set__release_date', 'set__name'], }, ), migrations.AddField( model_name='cardprice', name='card_printing', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='prices', to='cards.cardprinting'), ), migrations.AddField( model_name='cardlocalisation', name='card_printing', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='localisations', to='cards.cardprinting'), ), migrations.AddField( model_name='cardlocalisation', name='language', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='cards', to='cards.language'), ), migrations.CreateModel( name='CardImage', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('downloaded', models.BooleanField()), ('printed_language', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='image', to='cards.cardlocalisation')), ], ), migrations.CreateModel( name='CardFacePrinting', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('uuid', models.CharField(max_length=40, unique=True)), ('flavour_text', models.CharField(blank=True, max_length=500, null=True)), ('artist', models.CharField(blank=True, max_length=100, null=True)), ('original_text', models.CharField(blank=True, max_length=1000, null=True)), ('original_type', models.CharField(blank=True, max_length=200, null=True)), ('watermark', models.CharField(blank=True, max_length=100, null=True)), ('card_face', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='face_printings', to='cards.cardface')), ('card_printing', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='face_printings', to='cards.cardprinting')), ('frame_effects', models.ManyToManyField(related_name='face_printings', to='cards.FrameEffect')), ], options={ 'unique_together': {('card_face', 'card_printing')}, }, ), migrations.AddField( model_name='cardface', name='subtypes', field=models.ManyToManyField(blank=True, related_name='card_faces', to='cards.CardSubtype'), ), migrations.AddField( model_name='cardface', name='supertypes', field=models.ManyToManyField(blank=True, related_name='card_faces', to='cards.CardSupertype'), ), migrations.AddField( model_name='cardface', name='types', field=models.ManyToManyField(related_name='card_faces', to='cards.CardType'), ), migrations.CreateModel( name='UserOwnedCard', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('count', models.PositiveIntegerField()), ('card_localisation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='ownerships', to='cards.cardlocalisation')), ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='owned_cards', to=settings.AUTH_USER_MODEL)), ], options={ 'unique_together': {('card_localisation', 'owner')}, }, ), migrations.CreateModel( name='CardRuling', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('date', models.DateField()), ('text', models.CharField(max_length=4000)), ('card', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='rulings', to='cards.card')), ], options={ 'unique_together': {('date', 'text', 'card')}, }, ), migrations.AlterUniqueTogether( name='cardprice', unique_together={('date', 'card_printing')}, ), migrations.AlterUniqueTogether( name='cardlocalisation', unique_together={('language', 'card_printing')}, ), migrations.CreateModel( name='CardLegality', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('restriction', models.CharField(choices=[('Legal', 'Legal'), ('Banned', 'Banned'), ('Restricted', 'Restricted')], max_length=50)), ('card', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='legalities', to='cards.card')), ('format', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='card_legalities', to='cards.format')), ], options={ 'verbose_name_plural': 'card legalities', 'unique_together': {('card', 'format', 'restriction')}, }, ), migrations.CreateModel( name='CardFaceLocalisation', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('face_name', models.CharField(max_length=200)), ('flavour_text', models.CharField(blank=True, max_length=500, null=True)), ('type', models.CharField(blank=True, max_length=200, null=True)), ('text', models.CharField(blank=True, max_length=1000, null=True)), ('card_printing_face', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='localised_faces', to='cards.cardfaceprinting')), ('localisation', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='localised_faces', to='cards.cardlocalisation')), ], options={ 'unique_together': {('card_printing_face', 'localisation')}, }, ), migrations.AlterUniqueTogether( name='cardface', unique_together={('card', 'side')}, ), ]
class Migration(migrations.Migration): initial = True dependencies = [ ("auth", "0011_update_proxy_permissions"), ("groupapp", "0001_initial"), ] operations = [ migrations.CreateModel( name="BaseAccount", fields=[ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ("password", models.CharField(max_length=128, verbose_name="password")), ("last_login", models.DateTimeField(blank=True, null=True, 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", ), ), ( "username", models.CharField( max_length=127, unique=True, validators=[ django.core.validators.RegexValidator( "^\\w{1,127}$") ], verbose_name="profile username", ), ), ("fio", models.CharField(max_length=256, verbose_name="fio")), ("birth_day", models.DateField(auto_now_add=True, verbose_name="birth day")), ("is_active", models.BooleanField(default=True, verbose_name="Is active")), ("is_admin", models.BooleanField(default=False)), ( "telephone", models.CharField( blank=True, null=True, default=None, max_length=16, validators=[ django.core.validators.RegexValidator( "^(\\+[7893]\\d{10,11})?$") ], verbose_name="Telephone", ), ), ( "groups", models.ManyToManyField( blank=True, help_text= ("The groups this user belongs to. A user will get all permissions " "granted to each of their groups."), related_name="user_set", related_query_name="user", to="auth.Group", verbose_name="groups", ), ), ( "user_permissions", models.ManyToManyField( blank=True, help_text="Specific permissions for this user.", related_name="user_set", related_query_name="user", to="auth.Permission", verbose_name="user permissions", ), ), ], options={ "db_table": "base_accounts", "ordering": ("username", ), }, ), migrations.CreateModel( name="UserProfile", fields=[ ( "baseaccount_ptr", models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to="profiles.BaseAccount", ), ), ( "avatar", models.ImageField(blank=True, default=None, null=True, upload_to="user/avatar", verbose_name="Avatar"), ), ("email", models.EmailField(blank=True, default="", max_length=254)), ( "flags", bitfield.models.BitField( ( ("notify_task", "Notification about tasks"), ("notify_msg", "Notification about messages"), ("notify_mon", "Notification from monitoring"), ), default=0, verbose_name="Settings flags", ), ), ( "responsibility_groups", models.ManyToManyField( blank=True, to="groupapp.Group", verbose_name="Responsibility groups"), ), ], options={ "verbose_name": "Staff account profile", "verbose_name_plural": "Staff account profiles", "ordering": ("fio", ), }, bases=("profiles.baseaccount", ), ), migrations.CreateModel( name="UserProfileLog", fields=[ ("id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), ( "do_type", models.PositiveSmallIntegerField( choices=[ (0, "Undefined"), (1, "Create user"), (2, "Delete user"), (3, "Create device"), (4, "Delete device"), (5, "Create NAS"), (6, "Delete NAS"), (7, "Create service"), (8, "Delete service"), ], default=0, verbose_name="Action type", ), ), ( "additional_text", models.CharField(blank=True, max_length=512, null=True, verbose_name="Additional info"), ), ("action_date", models.DateTimeField(auto_now_add=True, verbose_name="Action date")), ( "account", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="profiles.UserProfile", verbose_name="Author"), ), ], options={ "verbose_name": "User profile log", "verbose_name_plural": "User profile logs", "ordering": ("-action_date", ), }, ), ]
class Migration(migrations.Migration): dependencies = [ ('coredata', '0019_switch_to_utf8mb4_columns'), ] operations = [ migrations.AlterField( model_name='combinedoffering', name='campus', field=models.CharField(choices=[ ('BRNBY', 'Burnaby Campus'), ('SURRY', 'Surrey Campus'), ('VANCR', 'Harbour Centre'), ('OFFST', 'Off-campus'), ('GNWC', 'Great Northern Way Campus'), ('METRO', 'Other Locations in Vancouver') ], max_length=5), ), migrations.AlterField( model_name='combinedoffering', name='component', field=models.CharField(choices=[('LEC', 'Lecture'), ('LAB', 'Lab'), ('TUT', 'Tutorial'), ('SEM', 'Seminar'), ('SEC', 'Section'), ('PRA', 'Practicum'), ('IND', 'Individual Work'), ('INS', 'INS'), ('WKS', 'Workshop'), ('FLD', 'Field School'), ('STD', 'Studio'), ('OLC', 'OLC'), ('RQL', 'RQL'), ('RSC', 'RSC'), ('STL', 'STL'), ('CNV', 'CNV'), ('OPL', 'Open Lab'), ('EXM', 'Exam'), ('CAN', 'Cancelled')], max_length=3), ), migrations.AlterField( model_name='combinedoffering', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='combinedoffering', name='instr_mode', field=models.CharField(choices=[('CO', 'Co-Op'), ('DE', 'Distance Education'), ('GI', 'Graduate Internship'), ('P', 'In Person'), ('PO', 'In Person - Off Campus'), ('PR', 'Practicum')], default='P', max_length=2), ), migrations.AlterField( model_name='combinedoffering', name='owner', field=models.ForeignKey( help_text='Unit that controls this offering', null=True, on_delete=django.db.models.deletion.PROTECT, to='coredata.Unit'), ), migrations.AlterField( model_name='combinedoffering', name='semester', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Semester'), ), migrations.AlterField( model_name='course', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='course', name='number', field=models.CharField( db_index=True, help_text='Course number, like "120" or "XX1".', max_length=4), ), migrations.AlterField( model_name='course', name='slug', field=autoslug.fields.AutoSlugField(editable=False, populate_from='autoslug', unique=True), ), migrations.AlterField( model_name='course', name='subject', field=models.CharField( db_index=True, help_text='Subject code, like "CMPT" or "FAN".', max_length=8), ), migrations.AlterField( model_name='course', name='title', field=models.CharField(help_text='The course title.', max_length=30), ), migrations.AlterField( model_name='courseoffering', name='campus', field=models.CharField(choices=[ ('BRNBY', 'Burnaby Campus'), ('SURRY', 'Surrey Campus'), ('VANCR', 'Harbour Centre'), ('OFFST', 'Off-campus'), ('GNWC', 'Great Northern Way Campus'), ('METRO', 'Other Locations in Vancouver') ], db_index=True, max_length=5), ), migrations.AlterField( model_name='courseoffering', name='component', field=models.CharField( choices=[ ('LEC', 'Lecture'), ('LAB', 'Lab'), ('TUT', 'Tutorial'), ('SEM', 'Seminar'), ('SEC', 'Section'), ('PRA', 'Practicum'), ('IND', 'Individual Work'), ('INS', 'INS'), ('WKS', 'Workshop'), ('FLD', 'Field School'), ('STD', 'Studio'), ('OLC', 'OLC'), ('RQL', 'RQL'), ('RSC', 'RSC'), ('STL', 'STL'), ('CNV', 'CNV'), ('OPL', 'Open Lab'), ('EXM', 'Exam'), ('CAN', 'Cancelled') ], db_index=True, help_text='Component of the offering, like "LEC" or "LAB"', max_length=3), ), migrations.AlterField( model_name='courseoffering', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='courseoffering', name='course', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Course'), ), migrations.AlterField( model_name='courseoffering', name='flags', field=bitfield.models.BitField( ['write', 'quant', 'bhum', 'bsci', 'bsoc', 'combined'], default=0), ), migrations.AlterField( model_name='courseoffering', name='instr_mode', field=models.CharField( choices=[('CO', 'Co-Op'), ('DE', 'Distance Education'), ('GI', 'Graduate Internship'), ('P', 'In Person'), ('PO', 'In Person - Off Campus'), ('PR', 'Practicum') ], db_index=True, default='P', help_text='The instructional mode of the offering', max_length=2), ), migrations.AlterField( model_name='courseoffering', name='number', field=models.CharField( db_index=True, help_text='Course number, like "120" or "XX1"', max_length=4), ), migrations.AlterField( model_name='courseoffering', name='owner', field=models.ForeignKey( help_text='Unit that controls this offering', null=True, on_delete=django.db.models.deletion.PROTECT, to='coredata.Unit'), ), migrations.AlterField( model_name='courseoffering', name='section', field=models.CharField( db_index=True, help_text='Section should be in the form "C100" or "D100"', max_length=4), ), migrations.AlterField( model_name='courseoffering', name='semester', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Semester'), ), migrations.AlterField( model_name='courseoffering', name='slug', field=autoslug.fields.AutoSlugField(editable=False, populate_from='autoslug', unique=True), ), migrations.AlterField( model_name='courseoffering', name='subject', field=models.CharField( db_index=True, help_text='Subject code, like "CMPT" or "FAN"', max_length=8), ), migrations.AlterField( model_name='courseoffering', name='title', field=models.CharField(db_index=True, help_text='The course title', max_length=30), ), migrations.AlterField( model_name='courseoffering', name='units', field=models.PositiveSmallIntegerField( help_text= 'The number of credits received by (most?) students in the course', null=True), ), migrations.AlterField( model_name='enrolmenthistory', name='offering', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.CourseOffering'), ), migrations.AlterField( model_name='futureperson', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='holiday', name='date', field=models.DateField(db_index=True, help_text='Date of the holiday'), ), migrations.AlterField( model_name='holiday', name='description', field=models.CharField( help_text='Description of holiday, e.g. "Canada Day"', max_length=30), ), migrations.AlterField( model_name='holiday', name='holiday_type', field=models.CharField( choices=[('FULL', 'Classes cancelled, offices closed'), ('CLAS', 'Classes cancelled, offices open'), ('OPEN', 'Classes as scheduled')], help_text='Type of holiday: how does it affect schedules?', max_length=4), ), migrations.AlterField( model_name='holiday', name='semester', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Semester'), ), migrations.AlterField( model_name='meetingtime', name='end_day', field=models.DateField(help_text='Ending day of the meeting'), ), migrations.AlterField( model_name='meetingtime', name='end_time', field=models.TimeField(help_text='End time of the meeting'), ), migrations.AlterField( model_name='meetingtime', name='labtut_section', field=models.CharField( blank=True, help_text= 'Section should be in the form "C101" or "D103". None/blank for the non lab/tutorial events.', max_length=4, null=True), ), migrations.AlterField( model_name='meetingtime', name='meeting_type', field=models.CharField(choices=[('LEC', 'Lecture'), ('MIDT', 'Midterm Exam'), ('EXAM', 'Exam'), ('LAB', 'Lab/Tutorial')], default='LEC', max_length=4), ), migrations.AlterField( model_name='meetingtime', name='offering', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name='meeting_time', to='coredata.CourseOffering'), ), migrations.AlterField( model_name='meetingtime', name='room', field=models.CharField( help_text='Room (or other location) for the meeting', max_length=20), ), migrations.AlterField( model_name='meetingtime', name='start_day', field=models.DateField(help_text='Starting day of the meeting'), ), migrations.AlterField( model_name='meetingtime', name='start_time', field=models.TimeField(help_text='Start time of the meeting'), ), migrations.AlterField( model_name='meetingtime', name='weekday', field=models.PositiveSmallIntegerField( choices=[(0, 'Monday'), (1, 'Tuesday'), (2, 'Wednesday'), (3, 'Thursday'), (4, 'Friday'), (5, 'Saturday'), (6, 'Sunday')], help_text='Day of week of the meeting'), ), migrations.AlterField( model_name='member', name='added_reason', field=models.CharField(choices=[('AUTO', 'Automatically added'), ('TRU', 'TRU/OU Distance Student'), ('CTA', 'CourSys-Appointed TA'), ('TAC', 'CourSys-Appointed TA'), ('TA', 'Additional TA'), ('TAIN', 'TA added by instructor'), ('INST', 'Additional Instructor'), ('UNK', 'Unknown/Other Reason')], db_index=True, max_length=4), ), migrations.AlterField( model_name='member', name='career', field=models.CharField(choices=[('UGRD', 'Undergraduate'), ('GRAD', 'Graduate'), ('NONS', 'Non-Student')], max_length=4), ), migrations.AlterField( model_name='member', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='member', name='credits', field=models.PositiveSmallIntegerField( default=3, help_text='Number of credits this course is worth.'), ), migrations.AlterField( model_name='member', name='labtut_section', field=models.CharField( blank=True, help_text='Section should be in the form "C101" or "D103".', max_length=4, null=True), ), migrations.AlterField( model_name='member', name='offering', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.CourseOffering'), ), migrations.AlterField( model_name='member', name='person', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name='person', to='coredata.Person'), ), migrations.AlterField( model_name='member', name='role', field=models.CharField(choices=[('STUD', 'Student'), ('TA', 'TA'), ('INST', 'Instructor'), ('APPR', 'Grade Approver'), ('DROP', 'Dropped')], max_length=4), ), migrations.AlterField( model_name='person', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='person', name='emplid', field=models.PositiveIntegerField( db_index=True, help_text='Employee ID (i.e. student number)', unique=True, verbose_name='ID #'), ), migrations.AlterField( model_name='person', name='userid', field=models.CharField( blank=True, db_index=True, help_text= 'SFU Unix userid (i.e. part of SFU email address before the "@").', max_length=8, null=True, unique=True, verbose_name='User ID'), ), migrations.AlterField( model_name='role', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='role', name='person', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Person'), ), migrations.AlterField( model_name='role', name='role', field=models.CharField(choices=[ ('ADVS', 'Advisor'), ('FAC', 'Faculty Member'), ('SESS', 'Sessional Instructor'), ('COOP', 'Co-op Staff'), ('INST', 'Other Instructor'), ('SUPV', 'Additional Supervisor'), ('DISC', 'Discipline Case Administrator'), ('DICC', 'Discipline Case Filer (email CC)'), ('ADMN', 'Departmental Administrator'), ('TAAD', 'TA Administrator'), ('TADM', 'Teaching Administrator'), ('GRAD', 'Grad Student Administrator'), ('GRPD', 'Graduate Program Director'), ('FUND', 'Grad Funding Administrator'), ('FDCC', 'Grad Funding Reminder CC'), ('TECH', 'Tech Staff'), ('GPA', 'GPA conversion system admin'), ('OUTR', 'Outreach Administrator'), ('INV', 'Inventory Administrator'), ('FACR', 'Faculty Viewer'), ('REPV', 'Report Viewer'), ('FACA', 'Faculty Administrator'), ('RELA', 'Relationship Database User'), ('SPAC', 'Space Administrator'), ('SYSA', 'System Administrator'), ('NONE', 'none') ], max_length=4), ), migrations.AlterField( model_name='role', name='unit', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Unit'), ), migrations.AlterField( model_name='roleaccount', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='roleaccount', name='type', field=models.CharField( blank=True, choices=[('ADVS', 'Advisor'), ('FAC', 'Faculty Member'), ('SESS', 'Sessional Instructor'), ('COOP', 'Co-op Staff'), ('INST', 'Other Instructor'), ('SUPV', 'Additional Supervisor'), ('DISC', 'Discipline Case Administrator'), ('DICC', 'Discipline Case Filer (email CC)'), ('ADMN', 'Departmental Administrator'), ('TAAD', 'TA Administrator'), ('TADM', 'Teaching Administrator'), ('GRAD', 'Grad Student Administrator'), ('GRPD', 'Graduate Program Director'), ('FUND', 'Grad Funding Administrator'), ('FDCC', 'Grad Funding Reminder CC'), ('TECH', 'Tech Staff'), ('GPA', 'GPA conversion system admin'), ('OUTR', 'Outreach Administrator'), ('INV', 'Inventory Administrator'), ('FACR', 'Faculty Viewer'), ('REPV', 'Report Viewer'), ('FACA', 'Faculty Administrator'), ('RELA', 'Relationship Database User'), ('SPAC', 'Space Administrator'), ('SYSA', 'System Administrator'), ('NONE', 'none')], max_length=4, null=True), ), migrations.AlterField( model_name='roleaccount', name='userid', field=models.CharField( db_index=True, help_text= 'SFU Unix userid (i.e. part of SFU email address before the "@").', max_length=8, verbose_name='User ID'), ), migrations.AlterField( model_name='semester', name='end', field=models.DateField(help_text='Last day of classes.'), ), migrations.AlterField( model_name='semester', name='name', field=models.CharField( db_index=True, help_text='Semester name should be in the form "1097".', max_length=4, unique=True), ), migrations.AlterField( model_name='semester', name='start', field=models.DateField(help_text='First day of classes.'), ), migrations.AlterField( model_name='semesterweek', name='monday', field=models.DateField(help_text='Monday of this week.'), ), migrations.AlterField( model_name='semesterweek', name='semester', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Semester'), ), migrations.AlterField( model_name='semesterweek', name='week', field=models.PositiveSmallIntegerField( help_text='Week of the semester (typically 1-13)'), ), migrations.AlterField( model_name='unit', name='acad_org', field=models.CharField(blank=True, db_index=True, help_text='ACAD_ORG field from SIMS', max_length=10, null=True, unique=True), ), migrations.AlterField( model_name='unit', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='unit', name='label', field=models.CharField(db_index=True, help_text="The unit code, e.g. 'CMPT'.", max_length=4, unique=True), ), migrations.AlterField( model_name='unit', name='name', field=models.CharField( help_text= "The full name of the unit, e.g. 'School of Computing Science'.", max_length=60), ), migrations.AlterField( model_name='unit', name='parent', field=models.ForeignKey( blank=True, help_text='Next unit up in the hierarchy.', null=True, on_delete=django.db.models.deletion.PROTECT, to='coredata.Unit'), ), migrations.AlterField( model_name='unit', name='slug', field=autoslug.fields.AutoSlugField(editable=False, populate_from='autoslug', unique=True), ), ]