class Migration(migrations.Migration): initial = True dependencies = [ ('contenttypes', '0002_remove_content_type_name'), ('email_auth', '0002_auto_20160327_1119'), ] operations = [ migrations.CreateModel( name='AdditionalEntityCharacteristicOrMark', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('value', models.CharField(max_length=255, verbose_name='Value')), ('view_class', models.CharField( blank=True, help_text= 'Space delimited class attribute, specifies one or more classnames for an entity.', max_length=255, null=True, verbose_name='View Class')), ], options={ 'abstract': False, 'verbose_name': 'Additional Entity Characteristic or Mark', 'verbose_name_plural': 'Additional Entity Characteristics or Marks', }, ), migrations.CreateModel( name='Book', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created at')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated at')), ('active', models.BooleanField( default=True, help_text='Is this object publicly visible.', verbose_name='Active')), ('name', models.CharField(max_length=255, verbose_name='Book Name')), ('slug', models.SlugField(unique=True, verbose_name='Slug')), ('description', models.TextField(blank=True, null=True, verbose_name='Description')), ('order', models.PositiveIntegerField(db_index=True, default=1, verbose_name='Sort by')), ], options={ 'ordering': ('order', ), 'verbose_name': 'Book', 'verbose_name_plural': 'Books', }, ), migrations.CreateModel( name='Customer', fields=[ ('user', models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL)), ('recognized', models.PositiveSmallIntegerField( choices=[(0, 'Unrecognized'), (1, 'Guest'), (2, 'Registered')], default=0, help_text= 'Designates the state the customer is recognized as.', verbose_name='Recognized as')), ('salutation', models.CharField(choices=[('mrs', 'Mrs.'), ('mr', 'Mr.'), ('na', '(n/a)')], max_length=5, verbose_name='Salutation')), ('last_access', models.DateTimeField(default=django.utils.timezone.now, verbose_name='Last accessed')), ('extra', jsonfield.fields.JSONField( default={}, editable=False, verbose_name='Extra information about this customer')), ('number', models.PositiveIntegerField(default=None, null=True, unique=True, verbose_name='Customer Number')), ], ), migrations.CreateModel( name='DataMart', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255, verbose_name='Name')), ('slug', models.SlugField( help_text= 'Used for URLs, auto-generated from name if blank', verbose_name='Slug')), ('path', models.CharField(db_index=True, editable=False, max_length=255, unique=True, verbose_name='Path')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created at')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated at')), ('view_class', models.CharField( blank=True, help_text= 'Space delimited class attribute, specifies one or more classnames for an data mart.', max_length=255, null=True, verbose_name='View Class')), ('description', models.TextField(blank=True, null=True, verbose_name='Description')), ('active', models.BooleanField(db_index=True, default=True, help_text='Is this data mart active.', verbose_name='Active')), ('system_flags', bitfield.models.BitField( [('delete_restriction', 'Delete restriction'), ('change_parent_restriction', 'Change parent restriction'), ('change_slug_restriction', 'Change slug restriction'), ('has_child_restriction', 'Has child restriction')], default=None, null=True, verbose_name='system flags')), ('lft', models.PositiveIntegerField(db_index=True, editable=False)), ('rght', models.PositiveIntegerField(db_index=True, editable=False)), ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), ('level', models.PositiveIntegerField(db_index=True, editable=False)), ('parent', edw.models.fields.TreeForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='sample.DataMart', verbose_name='Parent')), ('polymorphic_ctype', models.ForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_sample.datamart_set+', to='contenttypes.ContentType')), ], options={ 'abstract': False, 'verbose_name': 'Data mart', 'verbose_name_plural': 'Data marts', }, bases=(edw.signals.mptt.MPTTModelSignalSenderMixin, models.Model), ), migrations.CreateModel( name='Term', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255, verbose_name='Name')), ('slug', models.SlugField( help_text= 'Used for URLs, auto-generated from name if blank', verbose_name='Slug')), ('path', models.CharField(db_index=True, editable=False, max_length=255, unique=True, verbose_name='Path')), ('semantic_rule', models.PositiveSmallIntegerField( choices=[(10, 'OR'), (20, 'XOR'), (30, 'AND')], default=10, verbose_name='Semantic Rule')), ('attributes', bitfield.models.BitField( [('is_characteristic', 'Is characteristic'), ('is_mark', 'Is mark'), ('is_relation', 'Is relation')], default=None, help_text='Specifying attributes of term.', null=True, verbose_name='attributes')), ('specification_mode', models.PositiveSmallIntegerField( choices=[(10, 'Standard'), (20, 'Expanded'), (30, 'Reduced')], default=10, verbose_name='Specification Mode')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created at')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated at')), ('view_class', models.CharField( blank=True, help_text= 'Space delimited class attribute, specifies one or more classnames for an entity.', max_length=255, null=True, verbose_name='View Class')), ('description', models.TextField(blank=True, null=True, verbose_name='Description')), ('active', models.BooleanField(db_index=True, default=True, help_text='Is this term active.', verbose_name='Active')), ('system_flags', bitfield.models.BitField( [('delete_restriction', 'Delete restriction'), ('change_parent_restriction', 'Change parent restriction'), ('change_slug_restriction', 'Change slug restriction'), ('change_semantic_rule_restriction', 'Change semantic rule restriction'), ('has_child_restriction', 'Has child restriction'), ('external_tagging_restriction', 'External tagging restriction')], default=None, null=True, verbose_name='system flags')), ('lft', models.PositiveIntegerField(db_index=True, editable=False)), ('rght', models.PositiveIntegerField(db_index=True, editable=False)), ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), ('level', models.PositiveIntegerField(db_index=True, editable=False)), ('parent', edw.models.fields.TreeForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='sample.Term', verbose_name='Parent')), ], options={ 'abstract': False, 'verbose_name': 'Term', 'verbose_name_plural': 'Topic model', }, bases=(edw.models.term.AndRuleFilterMixin, edw.models.term.OrRuleFilterMixin, edw.signals.mptt.MPTTModelSignalSenderMixin, models.Model), ), migrations.CreateModel( name='CustomerProxy', fields=[], options={ 'verbose_name': 'Customer', 'proxy': True, 'verbose_name_plural': 'Customers', }, bases=('email_auth.user', ), managers=[ ('objects', email_auth.models.UserManager()), ], ), migrations.CreateModel( name='AdultBook', fields=[ ('book_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='sample.Book')), ('genre', models.PositiveSmallIntegerField(choices=[(1, 'Fantastic'), (2, 'Drama'), (3, 'Mistics')], verbose_name='Genre')), ], options={ 'verbose_name': 'Adult book', 'verbose_name_plural': 'Adult books', }, bases=('sample.book', ), ), migrations.CreateModel( name='ChildBook', fields=[ ('book_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='sample.Book')), ('age', models.PositiveSmallIntegerField(choices=[(1, '0-6 month'), (2, '6-12 month'), (3, '1+ year')], verbose_name='Age')), ], options={ 'verbose_name': 'Child book', 'verbose_name_plural': 'Child books', }, bases=('sample.book', ), ), migrations.AddField( model_name='datamart', name='terms', field=models.ManyToManyField( blank=True, help_text='Use "ctrl" key for choose multiple terms', related_name='_datamart_terms_+', to='sample.Term', verbose_name='Terms'), ), migrations.AddField( model_name='book', name='additional_characteristics_or_marks', field=models.ManyToManyField( through='sample.AdditionalEntityCharacteristicOrMark', to='sample.Term'), ), migrations.AddField( model_name='book', name='polymorphic_ctype', field=models.ForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_sample.book_set+', to='contenttypes.ContentType'), ), migrations.AddField( model_name='book', name='terms', field=models.ManyToManyField( blank=True, help_text='Use "ctrl" key for choose multiple terms', related_name='entities', to='sample.Term', verbose_name='Terms'), ), migrations.AddField( model_name='additionalentitycharacteristicormark', name='entity', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='sample.Book', verbose_name='Entity'), ), migrations.AddField( model_name='additionalentitycharacteristicormark', name='term', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='sample.Term', verbose_name='Term'), ), ]
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): initial = True dependencies = [ ('auth', '0009_alter_user_last_name_max_length'), ] operations = [ migrations.CreateModel( name='User', 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( error_messages={ 'unique': 'A user with that username already exists.' }, help_text= 'Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.', max_length=150, unique=True, validators=[ django.contrib.auth.validators. UnicodeUsernameValidator() ], verbose_name='username')), ('first_name', models.CharField(blank=True, max_length=30, verbose_name='first name')), ('last_name', models.CharField(blank=True, max_length=150, verbose_name='last name')), ('email', models.EmailField(blank=True, max_length=254, verbose_name='email address')), ('is_staff', models.BooleanField( default=False, help_text= 'Designates whether the user can log into this admin site.', verbose_name='staff status')), ('is_active', models.BooleanField( default=True, help_text= 'Designates whether this user should be treated as active. Unselect this instead of deleting accounts.', verbose_name='active')), ('date_joined', models.DateTimeField(default=django.utils.timezone.now, verbose_name='date joined')), ('account_number', models.CharField(max_length=64, verbose_name='Account Number')), ('phone_number', models.CharField(blank=True, max_length=32, verbose_name='Phone Number')), ('automatic_user', models.BooleanField(default=False, verbose_name='Automatically Created')), ('notification_preference', models.CharField(choices=[('S', 'sms'), ('E', 'email')], default='S', max_length=1, verbose_name='Notification Preference')), ('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')), ], managers=[ ('objects', django.contrib.auth.models.UserManager()), ], ), migrations.CreateModel( name='Clerk', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('salary', models.PositiveIntegerField(default=0, verbose_name='Salary')), ('is_employee', models.BooleanField(default=True, verbose_name='is Employee')), ('user', models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='User')), ], ), migrations.CreateModel( name='Company', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('user', models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='PaymentGroup', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255, verbose_name='Name')), ], ), migrations.CreateModel( name='PaymentType', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255, verbose_name='Name')), ('description', models.TextField(blank=True, verbose_name='Description')), ('min_amount', dollarial.fields.PriceField(default=1, null=True, verbose_name='Minimum Amount')), ('max_amount', dollarial.fields.PriceField(default=1000000, null=True, verbose_name='Maximum Amount')), ('price', dollarial.fields.PriceField(default=0, null=True, verbose_name='Fixed Price')), ('wage_percentage', models.PositiveSmallIntegerField( default=9, validators=[ django.core.validators.MaxValueValidator(100) ], verbose_name='Wage Percentage')), ('currency', dollarial.fields.CurrencyField(choices=[('D', '$'), ('R', '﷼'), ('E', '€')], default='R', max_length=1, verbose_name='Currency')), ('fixed_price', models.BooleanField(default=True, verbose_name='Fixed Price')), ('is_active', models.BooleanField(default=True, verbose_name='Active')), ('required_fields', bitfield.models.BitField(('general_info', 'personal_info', 'exam_info', 'university_info'), default=None)), ('transaction_group', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='dollarial.PaymentGroup', verbose_name='Group')), ], ), migrations.CreateModel( name='Wallet', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('credit', dollarial.fields.PriceField(default=0, verbose_name='Credit')), ('currency', dollarial.fields.CurrencyField(choices=[('D', '$'), ('R', '﷼'), ('E', '€')], default='R', max_length=1, verbose_name='Currency')), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='User')), ], ), migrations.AlterUniqueTogether( name='wallet', unique_together={('user', 'currency')}, ), migrations.AlterUniqueTogether( name='user', unique_together={('automatic_user', 'account_number')}, ), ]
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): dependencies = [("studies", "0046_feedback-related-managers")] operations = [ migrations.CreateModel( name="EligibleParticipantQueryModel", fields=[ ( "include_conditions", bitfield.models.BitField( ( ("autism_spectrum_disorder", "Autism Spectrum Disorder"), ("aspergers_syndrome", "Asperger's Syndrome"), ("down_syndrome", "Down Syndrome"), ("williams_syndrome", "Williams Syndrome"), ("stroke", "Stroke"), ("blind", "Blind"), ("visual_impairment", "Visual Impairment"), ("deaf", "Deaf"), ("hearing_impairment", "Hearing Impairment"), ("dyslexia", "Dyslexia"), ( "attention_deficit_hyperactivity_disorder", "Attention Deficit/Hyperactivity Disorder", ), ("learning_disability", "Learning Disability"), ( "generalized_anxiety_disorder", "Generalized Anxiety Disorder", ), ( "obsessive_compulsive_disorder", "Obsessive-Compulsive Disorder", ), ("panic_disorder", "Panic Disorder"), ( "post_traumatic_stress_disorder", "Post-Traumatic Stress Disorder", ), ( "social_phobia_social_anxiety_disorder", "Social Phobia/Social Anxiety Disorder", ), ("depression", "Depression"), ("other_mood_disorder", "Other Mood Disorder"), ("allergies", "Allergies"), ("fetal_alcohol_syndrome", "Fetal Alcohol Syndrome"), ("epilepsy", "Epilepsy"), ("diabetes", "Diabetes"), ( "other_chronic_medical_condition", "Other Chronic Medical Condition", ), ("other_genetic_condition", "Other Genetic Condition"), ( "gifted_advanced_learning_needs", "Gifted/Advanced learning needs", ), ("adopted", "Adopted"), ( "multiple birth", "Multiple Birth (twin, triplet, or higher order)", ), ("has_older_sibling", "Has at least one older sibling"), ("has_younger_sibling", "Has at least one younger sibling"), ), default=0, ), ), ( "exclude_conditions", bitfield.models.BitField( ( ("autism_spectrum_disorder", "Autism Spectrum Disorder"), ("aspergers_syndrome", "Asperger's Syndrome"), ("down_syndrome", "Down Syndrome"), ("williams_syndrome", "Williams Syndrome"), ("stroke", "Stroke"), ("blind", "Blind"), ("visual_impairment", "Visual Impairment"), ("deaf", "Deaf"), ("hearing_impairment", "Hearing Impairment"), ("dyslexia", "Dyslexia"), ( "attention_deficit_hyperactivity_disorder", "Attention Deficit/Hyperactivity Disorder", ), ("learning_disability", "Learning Disability"), ( "generalized_anxiety_disorder", "Generalized Anxiety Disorder", ), ( "obsessive_compulsive_disorder", "Obsessive-Compulsive Disorder", ), ("panic_disorder", "Panic Disorder"), ( "post_traumatic_stress_disorder", "Post-Traumatic Stress Disorder", ), ( "social_phobia_social_anxiety_disorder", "Social Phobia/Social Anxiety Disorder", ), ("depression", "Depression"), ("other_mood_disorder", "Other Mood Disorder"), ("allergies", "Allergies"), ("fetal_alcohol_syndrome", "Fetal Alcohol Syndrome"), ("epilepsy", "Epilepsy"), ("diabetes", "Diabetes"), ( "other_chronic_medical_condition", "Other Chronic Medical Condition", ), ("other_genetic_condition", "Other Genetic Condition"), ( "gifted_advanced_learning_needs", "Gifted/Advanced learning needs", ), ("adopted", "Adopted"), ( "multiple birth", "Multiple Birth (twin, triplet, or higher order)", ), ("has_older_sibling", "Has at least one older sibling"), ("has_younger_sibling", "Has at least one younger sibling"), ), default=0, ), ), ( "include_languages", bitfield.models.BitField( ( ("cmn", "Mandarin"), ("es", "Spanish"), ("en", "English"), ("hi", "Hindi"), ("bn", "Bengali"), ("pt", "Portuguese"), ("ru", "Russian"), ("ja", "Japanese"), ("lah", "Western Punjabi"), ("mr", "Marathi"), ("te", "Telugu"), ("wuu", "Wu"), ("tr", "Turkish"), ("ko", "Korean"), ("fr", "French"), ("de", "German"), ("vi", "Vietnamese"), ("ta", "Tamil"), ("yue", "Yue"), ("ur", "Urdu"), ("jv", "Javanese"), ("it", "Italian"), ("egy", "Egyptian Spoken Arabic"), ("gu", "Gujarati"), ("pes", "Iranian Persian"), ("bho", "Bhojpuri"), ("nan", "Min Nan"), ("hak", "Hakka"), ("cjy", "Jinyu"), ("ha", "Hausa"), ("kn", "Kannada"), ("id", "Indonesian"), ("pl", "Polish"), ("yo", "Yoruba"), ("hsn", "Xiang Chinese"), ("ml", "Malayalam"), ("or", "Odia"), ("mai", "Maithili"), ("my", "Burmese"), ("su", "Sunda"), ("mor", "Moroccan Spoken Arabic"), ("uk", "Ukrainian"), ("ig", "Igbo"), ("uzn", "Northern Uzbek"), ("sd", "Sindhi"), ("ro", "Romanian"), ("tl", "Tagalog"), ("nl", "Dutch"), ("gan", "Gan"), ("am", "Amharic"), ("pbu", "Northern Pashto"), ("mag", "Magahi"), ("th", "Thai"), ("skr", "Saraiki"), ("km", "Khmer"), ("hne", "Chhattisgarhi"), ("so", "Somali"), ("ms", "Malay"), ("ceb", "Cebuano"), ), default=0, ), ), ( "exclude_languages", bitfield.models.BitField( ( ("cmn", "Mandarin"), ("es", "Spanish"), ("en", "English"), ("hi", "Hindi"), ("bn", "Bengali"), ("pt", "Portuguese"), ("ru", "Russian"), ("ja", "Japanese"), ("lah", "Western Punjabi"), ("mr", "Marathi"), ("te", "Telugu"), ("wuu", "Wu"), ("tr", "Turkish"), ("ko", "Korean"), ("fr", "French"), ("de", "German"), ("vi", "Vietnamese"), ("ta", "Tamil"), ("yue", "Yue"), ("ur", "Urdu"), ("jv", "Javanese"), ("it", "Italian"), ("egy", "Egyptian Spoken Arabic"), ("gu", "Gujarati"), ("pes", "Iranian Persian"), ("bho", "Bhojpuri"), ("nan", "Min Nan"), ("hak", "Hakka"), ("cjy", "Jinyu"), ("ha", "Hausa"), ("kn", "Kannada"), ("id", "Indonesian"), ("pl", "Polish"), ("yo", "Yoruba"), ("hsn", "Xiang Chinese"), ("ml", "Malayalam"), ("or", "Odia"), ("mai", "Maithili"), ("my", "Burmese"), ("su", "Sunda"), ("mor", "Moroccan Spoken Arabic"), ("uk", "Ukrainian"), ("ig", "Igbo"), ("uzn", "Northern Uzbek"), ("sd", "Sindhi"), ("ro", "Romanian"), ("tl", "Tagalog"), ("nl", "Dutch"), ("gan", "Gan"), ("am", "Amharic"), ("pbu", "Northern Pashto"), ("mag", "Magahi"), ("th", "Thai"), ("skr", "Saraiki"), ("km", "Khmer"), ("hne", "Chhattisgarhi"), ("so", "Somali"), ("ms", "Malay"), ("ceb", "Cebuano"), ), default=0, ), ), ("age_range_start_years", models.PositiveSmallIntegerField(null=True)), ("age_range_start_months", models.PositiveSmallIntegerField(null=True)), ("age_range_start_days", models.PositiveSmallIntegerField(null=True)), ("age_range_end_years", models.PositiveSmallIntegerField(null=True)), ("age_range_end_months", models.PositiveSmallIntegerField(null=True)), ("age_range_end_days", models.PositiveSmallIntegerField(null=True)), ( "gender_specification", models.PositiveSmallIntegerField( choices=[ ("m", "Male"), ("f", "Female"), ("o", "Other"), ("na", "Not answered"), ], null=True, ), ), ( "gestational_age_start", models.PositiveSmallIntegerField( choices=[ (0, "Under 24 weeks"), (1, "24 weeks"), (2, "25 weeks"), (3, "26 weeks"), (4, "27 weeks"), (5, "28 weeks"), (6, "29 weeks"), (7, "30 weeks"), (8, "31 weeks"), (9, "32 weeks"), (10, "33 weeks"), (11, "34 weeks"), (12, "35 weeks"), (13, "36 weeks"), (14, "37 weeks"), (15, "38 weeks"), (16, "39 weeks"), (17, "40 or more weeks"), ], null=True, ), ), ( "gestational_age_end", models.PositiveSmallIntegerField( choices=[ (0, "Under 24 weeks"), (1, "24 weeks"), (2, "25 weeks"), (3, "26 weeks"), (4, "27 weeks"), (5, "28 weeks"), (6, "29 weeks"), (7, "30 weeks"), (8, "31 weeks"), (9, "32 weeks"), (10, "33 weeks"), (11, "34 weeks"), (12, "35 weeks"), (13, "36 weeks"), (14, "37 weeks"), (15, "38 weeks"), (16, "39 weeks"), (17, "40 or more weeks"), ], null=True, ), ), ("gestational_age_include_na", models.BooleanField(default=False)), ( "study", models.OneToOneField( on_delete=django.db.models.deletion.DO_NOTHING, primary_key=True, related_name="eligible_participant_query", serialize=False, to="studies.Study", ), ), ], ) ]
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'), ] operations = [ migrations.CreateModel( name='Cargo', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('дата создания', models.DateTimeField(auto_now_add=True)), ('дата изменения', models.DateTimeField(auto_now=True)), ('plomb_id', models.CharField(default='', max_length=255, unique=True)), ('barcode', models.CharField(default='', max_length=255, unique=True)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='Flight', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('дата создания', models.DateTimeField(auto_now_add=True)), ('дата изменения', models.DateTimeField(auto_now=True)), ('number', models.CharField(max_length=255)), ('description', models.TextField()), ], options={ 'verbose_name': 'Рейс', 'verbose_name_plural': 'Рейсы', }, ), migrations.CreateModel( name='SystemUser', 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)), ('flags', bitfield.models.BitField((('board_conductor', '0'), ('deliveryman', '1')), default=None)), ], options={ 'verbose_name': 'user', 'verbose_name_plural': 'users', 'abstract': False, }, bases=('auth.user',), managers=[ ('objects', django.contrib.auth.models.UserManager()), ], ), migrations.CreateModel( name='ServiceClass', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('дата создания', models.DateTimeField(auto_now_add=True)), ('дата изменения', models.DateTimeField(auto_now=True)), ('description', models.CharField(max_length=255)), ('fligth', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='servise_classes', to='ahck.Flight')), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='Packet', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('дата создания', models.DateTimeField(auto_now_add=True)), ('дата изменения', models.DateTimeField(auto_now=True)), ('barcode', models.CharField(default='', max_length=255, unique=True)), ('description_in_json', models.TextField(verbose_name='json packet description')), ('cargo', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='packets', to='ahck.Cargo')), ], options={ 'verbose_name': 'индивидуальный комплект', 'verbose_name_plural': 'индивидуальные комплекты', }, ), migrations.AddField( model_name='cargo', name='serviceclass', field=models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='cargos', to='ahck.ServiceClass'), ), ]
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", ), }, ), ]