class Migration(migrations.Migration): initial = True dependencies = [ ('auth', '0001_initial'), ] operations = [ migrations.CreateModel( name='UserProfile', 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(default=django.utils.timezone.now, verbose_name='last login')), ('is_superuser', models.BooleanField( default=False, help_text= 'Designates that this user has all permissions without explicitly assigning them.', verbose_name='superuser status')), ('email', models.EmailField(db_index=True, max_length=75, unique=True)), ('is_staff', models.BooleanField(default=False)), ('is_active', models.BooleanField(default=True)), ('is_bot', models.BooleanField(default=False)), ('date_joined', models.DateTimeField(default=django.utils.timezone.now)), ('is_mirror_dummy', models.BooleanField(default=False)), ('full_name', models.CharField(max_length=100)), ('short_name', models.CharField(max_length=100)), ('pointer', models.IntegerField()), ('last_pointer_updater', models.CharField(max_length=64)), ('api_key', models.CharField(max_length=32)), ('enable_stream_desktop_notifications', models.BooleanField(default=True)), ('enable_stream_sounds', models.BooleanField(default=True)), ('enable_desktop_notifications', models.BooleanField(default=True)), ('enable_sounds', models.BooleanField(default=True)), ('enable_offline_email_notifications', models.BooleanField(default=True)), ('enable_offline_push_notifications', models.BooleanField(default=True)), ('enable_digest_emails', models.BooleanField(default=True)), ('default_desktop_notifications', models.BooleanField(default=True)), ('last_reminder', models.DateTimeField(default=django.utils.timezone.now, null=True)), ('rate_limits', models.CharField(default='', max_length=100)), ('default_all_public_streams', models.BooleanField(default=False)), ('enter_sends', models.NullBooleanField(default=True)), ('autoscroll_forever', models.BooleanField(default=False)), ('twenty_four_hour_time', models.BooleanField(default=False)), ('avatar_source', models.CharField(choices=[('G', 'Hosted by Gravatar'), ('U', 'Uploaded by user'), ('S', 'System generated')], default='G', max_length=1)), ('tutorial_status', models.CharField(choices=[('W', 'Waiting'), ('S', 'Started'), ('F', 'Finished')], default='W', max_length=1)), ('onboarding_steps', models.TextField(default='[]')), ('invites_granted', models.IntegerField(default=0)), ('invites_used', models.IntegerField(default=0)), ('alert_words', models.TextField(default='[]')), ('muted_topics', models.TextField(default='[]')), ('bot_owner', models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL)), ], options={ 'abstract': False, }, ), migrations.CreateModel( name='Client', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(db_index=True, max_length=30, unique=True)), ], ), migrations.CreateModel( name='DefaultStream', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ], ), migrations.CreateModel( name='Huddle', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('huddle_hash', models.CharField(db_index=True, max_length=40, unique=True)), ], ), migrations.CreateModel( name='Message', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('subject', models.CharField(db_index=True, max_length=60)), ('content', models.TextField()), ('rendered_content', models.TextField(null=True)), ('rendered_content_version', models.IntegerField(null=True)), ('pub_date', models.DateTimeField(db_index=True, verbose_name='date published')), ('last_edit_time', models.DateTimeField(null=True)), ('edit_history', models.TextField(null=True)), ('has_attachment', models.BooleanField(db_index=True, default=False)), ('has_image', models.BooleanField(db_index=True, default=False)), ('has_link', models.BooleanField(db_index=True, default=False)), ], ), migrations.CreateModel( name='PreregistrationUser', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('email', models.EmailField(max_length=75)), ('invited_at', models.DateTimeField(auto_now=True)), ('status', models.IntegerField(default=0)), ], ), migrations.CreateModel( name='PushDeviceToken', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('kind', models.PositiveSmallIntegerField( choices=[(1, 'apns'), (2, 'gcm')])), ('token', models.CharField(max_length=4096, unique=True)), ('last_updated', models.DateTimeField(auto_now=True, default=django.utils.timezone.now)), ('ios_app_id', models.TextField(null=True)), ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='Realm', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('domain', models.CharField(db_index=True, max_length=40, unique=True)), ('name', models.CharField(max_length=40, null=True)), ('restricted_to_domain', models.BooleanField(default=True)), ('invite_required', models.BooleanField(default=False)), ('invite_by_admins_only', models.BooleanField(default=False)), ('mandatory_topics', models.BooleanField(default=False)), ('show_digest_email', models.BooleanField(default=True)), ('name_changes_disabled', models.BooleanField(default=False)), ('date_created', models.DateTimeField(default=django.utils.timezone.now)), ('deactivated', models.BooleanField(default=False)), ], options={ 'permissions': (('administer', 'Administer a realm'), ), }, ), migrations.CreateModel( name='RealmAlias', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('domain', models.CharField(db_index=True, max_length=80, unique=True)), ('realm', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='zerver.Realm')), ], ), migrations.CreateModel( name='RealmEmoji', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.TextField()), ('img_url', models.TextField()), ('realm', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Realm')), ], ), migrations.CreateModel( name='RealmFilter', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('pattern', models.TextField()), ('url_format_string', models.TextField()), ('realm', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Realm')), ], ), migrations.CreateModel( name='Recipient', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('type_id', models.IntegerField(db_index=True)), ('type', models.PositiveSmallIntegerField(db_index=True)), ], ), migrations.CreateModel( name='Referral', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('email', models.EmailField(max_length=75)), ('timestamp', models.DateTimeField(auto_now_add=True)), ('user_profile', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='ScheduledJob', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('scheduled_timestamp', models.DateTimeField()), ('type', models.PositiveSmallIntegerField()), ('data', models.TextField()), ('filter_id', models.IntegerField(null=True)), ('filter_string', models.CharField(max_length=100)), ], ), migrations.CreateModel( name='Stream', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(db_index=True, max_length=60)), ('invite_only', models.NullBooleanField(default=False)), ('email_token', models.CharField( default=zerver.models.generate_email_token_for_stream, max_length=32)), ('description', models.CharField(default='', max_length=1024)), ('date_created', models.DateTimeField(default=django.utils.timezone.now)), ('deactivated', models.BooleanField(default=False)), ('realm', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Realm')), ], ), migrations.CreateModel( name='Subscription', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('active', models.BooleanField(default=True)), ('in_home_view', models.NullBooleanField(default=True)), ('color', models.CharField(default='#c2c2c2', max_length=10)), ('desktop_notifications', models.BooleanField(default=True)), ('audible_notifications', models.BooleanField(default=True)), ('notifications', models.BooleanField(default=False)), ('recipient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Recipient')), ('user_profile', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='UserActivity', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('query', models.CharField(db_index=True, max_length=50)), ('count', models.IntegerField()), ('last_visit', models.DateTimeField(verbose_name='last visit')), ('client', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Client')), ('user_profile', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='UserActivityInterval', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('start', models.DateTimeField(db_index=True, verbose_name='start time')), ('end', models.DateTimeField(db_index=True, verbose_name='end time')), ('user_profile', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='UserMessage', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('flags', bitfield.models.BitField([ 'read', 'starred', 'collapsed', 'mentioned', 'wildcard_mentioned', 'summarize_in_home', 'summarize_in_stream', 'force_expand', 'force_collapse', 'has_alert_word', 'historical', 'is_me_message' ], default=0)), ('message', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Message')), ('user_profile', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( name='UserPresence', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('timestamp', models.DateTimeField(verbose_name='presence changed')), ('status', models.PositiveSmallIntegerField(default=1)), ('client', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Client')), ('user_profile', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.AlterUniqueTogether( name='userpresence', unique_together=set([('user_profile', 'client')]), ), migrations.AlterUniqueTogether( name='usermessage', unique_together=set([('user_profile', 'message')]), ), migrations.AlterUniqueTogether( name='useractivity', unique_together=set([('user_profile', 'client', 'query')]), ), migrations.AlterUniqueTogether( name='subscription', unique_together=set([('user_profile', 'recipient')]), ), migrations.AlterUniqueTogether( name='stream', unique_together=set([('name', 'realm')]), ), migrations.AlterUniqueTogether( name='recipient', unique_together=set([('type', 'type_id')]), ), migrations.AlterUniqueTogether( name='realmfilter', unique_together=set([('realm', 'pattern')]), ), migrations.AlterUniqueTogether( name='realmemoji', unique_together=set([('realm', 'name')]), ), migrations.AddField( model_name='realm', name='notifications_stream', field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='zerver.Stream'), ), migrations.AddField( model_name='preregistrationuser', name='realm', field=models.ForeignKey( null=True, on_delete=django.db.models.deletion.CASCADE, to='zerver.Realm'), ), migrations.AddField( model_name='preregistrationuser', name='referred_by', field=models.ForeignKey( null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), ), migrations.AddField( model_name='preregistrationuser', name='streams', field=models.ManyToManyField(null=True, to='zerver.Stream'), ), migrations.AddField( model_name='message', name='recipient', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='zerver.Recipient'), ), migrations.AddField( model_name='message', name='sender', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), ), migrations.AddField( model_name='message', name='sending_client', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='zerver.Client'), ), migrations.AddField( model_name='defaultstream', name='realm', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='zerver.Realm'), ), migrations.AddField( model_name='defaultstream', name='stream', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='zerver.Stream'), ), migrations.AlterUniqueTogether( name='defaultstream', unique_together=set([('realm', 'stream')]), ), migrations.AddField( model_name='userprofile', name='default_events_register_stream', field=models.ForeignKey( null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='zerver.Stream'), ), migrations.AddField( model_name='userprofile', name='default_sending_stream', field=models.ForeignKey( null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='zerver.Stream'), ), migrations.AddField( model_name='userprofile', name='groups', field=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'), ), migrations.AddField( model_name='userprofile', name='realm', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='zerver.Realm'), ), migrations.AddField( model_name='userprofile', name='user_permissions', field=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'), ), migrations.RunSQL( sql= '\nCREATE TEXT SEARCH DICTIONARY english_us_hunspell\n (template = ispell, DictFile = en_us, AffFile = en_us, StopWords = zulip_english);\nCREATE TEXT SEARCH CONFIGURATION zulip.english_us_search (COPY=pg_catalog.english);\nALTER TEXT SEARCH CONFIGURATION zulip.english_us_search\n ALTER MAPPING FOR asciiword, asciihword, hword_asciipart, word, hword, hword_part\n WITH english_us_hunspell, english_stem;\n\nCREATE FUNCTION escape_html(text) RETURNS text IMMUTABLE LANGUAGE \'sql\' AS $$\n SELECT replace(replace(replace(replace(replace($1, \'&\', \'&\'), \'<\', \'<\'),\n \'>\', \'>\'), \'"\', \'"\'), \'\'\'\', \''\');\n$$ ;\n\nALTER TABLE zerver_message ADD COLUMN search_tsvector tsvector;\nCREATE INDEX zerver_message_search_tsvector ON zerver_message USING gin(search_tsvector);\nALTER INDEX zerver_message_search_tsvector SET (fastupdate = OFF);\n\nCREATE TABLE fts_update_log (id SERIAL PRIMARY KEY, message_id INTEGER NOT NULL);\nCREATE FUNCTION do_notify_fts_update_log() RETURNS trigger LANGUAGE plpgsql AS\n $$ BEGIN NOTIFY fts_update_log; RETURN NEW; END $$;\nCREATE TRIGGER fts_update_log_notify AFTER INSERT ON fts_update_log\n FOR EACH STATEMENT EXECUTE PROCEDURE do_notify_fts_update_log();\nCREATE FUNCTION append_to_fts_update_log() RETURNS trigger LANGUAGE plpgsql AS\n $$ BEGIN INSERT INTO fts_update_log (message_id) VALUES (NEW.id); RETURN NEW; END $$;\nCREATE TRIGGER zerver_message_update_search_tsvector_async\n BEFORE INSERT OR UPDATE OF subject, rendered_content ON zerver_message\n FOR EACH ROW EXECUTE PROCEDURE append_to_fts_update_log();\n', ), migrations.AlterModelManagers( name='userprofile', managers=[ ('objects', django.contrib.auth.models.UserManager()), ], ), migrations.AlterField( model_name='preregistrationuser', name='email', field=models.EmailField(max_length=254), ), migrations.AlterField( model_name='preregistrationuser', name='streams', field=models.ManyToManyField(to='zerver.Stream'), ), migrations.AlterField( model_name='pushdevicetoken', name='last_updated', field=models.DateTimeField(auto_now=True), ), migrations.AlterField( model_name='referral', name='email', field=models.EmailField(max_length=254), ), migrations.AlterField( model_name='userprofile', name='email', field=models.EmailField(db_index=True, max_length=254, unique=True), ), migrations.AlterField( model_name='userprofile', name='last_login', field=models.DateTimeField(blank=True, null=True, verbose_name='last login'), ), migrations.RunSQL( sql= 'CREATE INDEX upper_subject_idx ON zerver_message ((upper(subject)));', reverse_sql='DROP INDEX upper_subject_idx;', ), migrations.RunSQL( sql= 'CREATE INDEX upper_stream_name_idx ON zerver_stream ((upper(name)));', reverse_sql='DROP INDEX upper_stream_name_idx;', ), migrations.AddField( model_name='userprofile', name='left_side_userlist', field=models.BooleanField(default=False), ), migrations.AlterModelOptions( name='realm', options={ 'permissions': (('administer', 'Administer a realm'), ('api_super_user', 'Can send messages as other users for mirroring')) }, ), migrations.RunSQL( sql= 'CREATE INDEX upper_userprofile_email_idx ON zerver_userprofile ((upper(email)));', reverse_sql='DROP INDEX upper_userprofile_email_idx;', ), migrations.AlterField( model_name='userprofile', name='is_active', field=models.BooleanField(db_index=True, default=True), ), migrations.AlterField( model_name='userprofile', name='is_bot', field=models.BooleanField(db_index=True, default=False), ), migrations.RunSQL( sql= 'CREATE INDEX upper_preregistration_email_idx ON zerver_preregistrationuser ((upper(email)));', reverse_sql='DROP INDEX upper_preregistration_email_idx;', ), migrations.AlterField( model_name='userprofile', name='enable_stream_desktop_notifications', field=models.BooleanField(default=False), ), migrations.AlterField( model_name='userprofile', name='enable_stream_sounds', field=models.BooleanField(default=False), ), migrations.AddField( model_name='userprofile', name='is_api_super_user', field=models.BooleanField(db_index=True, default=False), ), migrations.AddField( model_name='userprofile', name='is_realm_admin', field=models.BooleanField(db_index=True, default=False), ), migrations.AlterField( model_name='realmemoji', name='img_url', field=models.URLField(), ), migrations.AlterField( model_name='realmemoji', name='name', field=models.TextField(validators=[ django.core.validators.MinLengthValidator(1), django.core.validators.RegexValidator( regex='^[0-9a-zA-Z.\\-_]+(?<![.\\-_])$') ]), ), migrations.AlterField( model_name='realmemoji', name='img_url', field=models.URLField(max_length=1000), ), migrations.CreateModel( name='Attachment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('file_name', models.CharField(db_index=True, max_length=100)), ('path_id', models.TextField(db_index=True)), ('create_time', models.DateTimeField(db_index=True, default=django.utils.timezone.now)), ('messages', models.ManyToManyField(to='zerver.Message')), ('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ('is_realm_public', models.BooleanField(default=False)), ], ), migrations.AddField( model_name='realm', name='create_stream_by_admins_only', field=models.BooleanField(default=False), ), migrations.AddField( model_name='userprofile', name='bot_type', field=models.PositiveSmallIntegerField(db_index=True, null=True), ), migrations.AlterField( model_name='realmemoji', name='name', field=models.TextField(validators=[ django.core.validators.MinLengthValidator(1), django.core.validators.RegexValidator( message='Invalid characters in emoji name', regex='^[0-9a-zA-Z.\\-_]+(?<![.\\-_])$') ]), ), migrations.AddField( model_name='preregistrationuser', name='realm_creation', field=models.BooleanField(default=False), ), migrations.AddField( model_name='attachment', name='realm', field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='zerver.Realm'), ), migrations.RunPython(code=migrate_existing_attachment_data, ), migrations.AddField( model_name='subscription', name='pin_to_top', field=models.BooleanField(default=False), ), migrations.AddField( model_name='userprofile', name='default_language', field=models.CharField(default='en', max_length=50), ), migrations.AddField( model_name='realm', name='allow_message_editing', field=models.BooleanField(default=True), ), migrations.AddField( model_name='realm', name='message_content_edit_limit_seconds', field=models.IntegerField(default=600), ), migrations.AddField( model_name='realm', name='default_language', field=models.CharField(default='en', max_length=50), ), migrations.AddField( model_name='userprofile', name='tos_version', field=models.CharField(max_length=10, null=True), ), ]
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): initial = True dependencies = [ ("auth", "0001_initial"), ] if settings.POSTGRESQL_MISSING_DICTIONARIES: fts_sql = """ CREATE TEXT SEARCH CONFIGURATION zulip.english_us_search (COPY=pg_catalog.english); """ else: fts_sql = """ CREATE TEXT SEARCH DICTIONARY english_us_hunspell (template = ispell, DictFile = en_us, AffFile = en_us, StopWords = zulip_english); CREATE TEXT SEARCH CONFIGURATION zulip.english_us_search (COPY=pg_catalog.english); ALTER TEXT SEARCH CONFIGURATION zulip.english_us_search ALTER MAPPING FOR asciiword, asciihword, hword_asciipart, word, hword, hword_part WITH english_us_hunspell, english_stem; """ fts_sql += """ CREATE FUNCTION escape_html(text) RETURNS text IMMUTABLE LANGUAGE 'sql' AS $$ SELECT replace(replace(replace(replace(replace($1, '&', '&'), '<', '<'), '>', '>'), '"', '"'), '''', '''); $$ ; ALTER TABLE zerver_message ADD COLUMN search_tsvector tsvector; CREATE INDEX zerver_message_search_tsvector ON zerver_message USING gin(search_tsvector); ALTER INDEX zerver_message_search_tsvector SET (fastupdate = OFF); CREATE TABLE fts_update_log (id SERIAL PRIMARY KEY, message_id INTEGER NOT NULL); CREATE FUNCTION do_notify_fts_update_log() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN NOTIFY fts_update_log; RETURN NEW; END $$; CREATE TRIGGER fts_update_log_notify AFTER INSERT ON fts_update_log FOR EACH STATEMENT EXECUTE PROCEDURE do_notify_fts_update_log(); CREATE FUNCTION append_to_fts_update_log() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN INSERT INTO fts_update_log (message_id) VALUES (NEW.id); RETURN NEW; END $$; CREATE TRIGGER zerver_message_update_search_tsvector_async BEFORE INSERT OR UPDATE OF subject, rendered_content ON zerver_message FOR EACH ROW EXECUTE PROCEDURE append_to_fts_update_log(); """ operations = [ migrations.CreateModel( name="UserProfile", 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(default=django.utils.timezone.now, verbose_name="last login"), ), ( "is_superuser", models.BooleanField( default=False, help_text= "Designates that this user has all permissions without explicitly assigning them.", verbose_name="superuser status", ), ), ("email", models.EmailField(db_index=True, max_length=75, unique=True)), ("is_staff", models.BooleanField(default=False)), ("is_active", models.BooleanField(default=True)), ("is_bot", models.BooleanField(default=False)), ("date_joined", models.DateTimeField(default=django.utils.timezone.now)), ("is_mirror_dummy", models.BooleanField(default=False)), ("full_name", models.CharField(max_length=100)), ("short_name", models.CharField(max_length=100)), ("pointer", models.IntegerField()), ("last_pointer_updater", models.CharField(max_length=64)), ("api_key", models.CharField(max_length=32)), ("enable_stream_desktop_notifications", models.BooleanField(default=True)), ("enable_stream_sounds", models.BooleanField(default=True)), ("enable_desktop_notifications", models.BooleanField(default=True)), ("enable_sounds", models.BooleanField(default=True)), ("enable_offline_email_notifications", models.BooleanField(default=True)), ("enable_offline_push_notifications", models.BooleanField(default=True)), ("enable_digest_emails", models.BooleanField(default=True)), ("default_desktop_notifications", models.BooleanField(default=True)), ( "last_reminder", models.DateTimeField(default=django.utils.timezone.now, null=True), ), ("rate_limits", models.CharField(default="", max_length=100)), ("default_all_public_streams", models.BooleanField(default=False)), ("enter_sends", models.NullBooleanField(default=True)), ("autoscroll_forever", models.BooleanField(default=False)), ("twenty_four_hour_time", models.BooleanField(default=False)), ( "avatar_source", models.CharField( choices=[ ("G", "Hosted by Gravatar"), ("U", "Uploaded by user"), ("S", "System generated"), ], default="G", max_length=1, ), ), ( "tutorial_status", models.CharField( choices=[("W", "Waiting"), ("S", "Started"), ("F", "Finished")], default="W", max_length=1, ), ), ("onboarding_steps", models.TextField(default="[]")), ("invites_granted", models.IntegerField(default=0)), ("invites_used", models.IntegerField(default=0)), ("alert_words", models.TextField(default="[]")), ("muted_topics", models.TextField(default="[]")), ( "bot_owner", models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, ), ), ], options={ "abstract": False, }, ), migrations.CreateModel( name="Client", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ("name", models.CharField(db_index=True, max_length=30, unique=True)), ], ), migrations.CreateModel( name="DefaultStream", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ], ), migrations.CreateModel( name="Huddle", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ("huddle_hash", models.CharField(db_index=True, max_length=40, unique=True)), ], ), migrations.CreateModel( name="Message", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ("subject", models.CharField(db_index=True, max_length=60)), ("content", models.TextField()), ("rendered_content", models.TextField(null=True)), ("rendered_content_version", models.IntegerField(null=True)), ("pub_date", models.DateTimeField(db_index=True, verbose_name="date published")), ("last_edit_time", models.DateTimeField(null=True)), ("edit_history", models.TextField(null=True)), ("has_attachment", models.BooleanField(db_index=True, default=False)), ("has_image", models.BooleanField(db_index=True, default=False)), ("has_link", models.BooleanField(db_index=True, default=False)), ], ), migrations.CreateModel( name="PreregistrationUser", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ("email", models.EmailField(max_length=75)), ("invited_at", models.DateTimeField(auto_now=True)), ("status", models.IntegerField(default=0)), ], ), migrations.CreateModel( name="PushDeviceToken", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ("kind", models.PositiveSmallIntegerField( choices=[(1, "apns"), (2, "gcm")])), ("token", models.CharField(max_length=4096, unique=True)), ( "last_updated", models.DateTimeField(auto_now=True, default=django.utils.timezone.now), ), ("ios_app_id", models.TextField(null=True)), ( "user", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), ), ], ), migrations.CreateModel( name="Realm", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ("domain", models.CharField(db_index=True, max_length=40, unique=True)), ("name", models.CharField(max_length=40, null=True)), ("restricted_to_domain", models.BooleanField(default=True)), ("invite_required", models.BooleanField(default=False)), ("invite_by_admins_only", models.BooleanField(default=False)), ("mandatory_topics", models.BooleanField(default=False)), ("show_digest_email", models.BooleanField(default=True)), ("name_changes_disabled", models.BooleanField(default=False)), ("date_created", models.DateTimeField(default=django.utils.timezone.now)), ("deactivated", models.BooleanField(default=False)), ], options={ "permissions": (("administer", "Administer a realm"), ), }, ), migrations.CreateModel( name="RealmAlias", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ("domain", models.CharField(db_index=True, max_length=80, unique=True)), ( "realm", models.ForeignKey( null=True, on_delete=django.db.models.deletion.CASCADE, to="zerver.Realm"), ), ], ), migrations.CreateModel( name="RealmEmoji", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ("name", models.TextField()), ("img_url", models.TextField()), ( "realm", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="zerver.Realm"), ), ], ), migrations.CreateModel( name="RealmFilter", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ("pattern", models.TextField()), ("url_format_string", models.TextField()), ( "realm", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="zerver.Realm"), ), ], ), migrations.CreateModel( name="Recipient", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ("type_id", models.IntegerField(db_index=True)), ("type", models.PositiveSmallIntegerField(db_index=True)), ], ), migrations.CreateModel( name="Referral", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ("email", models.EmailField(max_length=75)), ("timestamp", models.DateTimeField(auto_now_add=True)), ( "user_profile", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), ), ], ), migrations.CreateModel( name="ScheduledJob", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ("scheduled_timestamp", models.DateTimeField()), ("type", models.PositiveSmallIntegerField()), ("data", models.TextField()), ("filter_id", models.IntegerField(null=True)), ("filter_string", models.CharField(max_length=100)), ], ), migrations.CreateModel( name="Stream", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ("name", models.CharField(db_index=True, max_length=60)), ("invite_only", models.NullBooleanField(default=False)), ( "email_token", models.CharField(default=generate_email_token_for_stream, max_length=32), ), ("description", models.CharField(default="", max_length=1024)), ("date_created", models.DateTimeField(default=django.utils.timezone.now)), ("deactivated", models.BooleanField(default=False)), ( "realm", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="zerver.Realm"), ), ], ), migrations.CreateModel( name="Subscription", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ("active", models.BooleanField(default=True)), ("in_home_view", models.NullBooleanField(default=True)), ("color", models.CharField(default="#c2c2c2", max_length=10)), ("desktop_notifications", models.BooleanField(default=True)), ("audible_notifications", models.BooleanField(default=True)), ("notifications", models.BooleanField(default=False)), ( "recipient", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="zerver.Recipient"), ), ( "user_profile", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), ), ], ), migrations.CreateModel( name="UserActivity", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ("query", models.CharField(db_index=True, max_length=50)), ("count", models.IntegerField()), ("last_visit", models.DateTimeField(verbose_name="last visit")), ( "client", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="zerver.Client"), ), ( "user_profile", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), ), ], ), migrations.CreateModel( name="UserActivityInterval", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ("start", models.DateTimeField(db_index=True, verbose_name="start time")), ("end", models.DateTimeField(db_index=True, verbose_name="end time")), ( "user_profile", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), ), ], ), migrations.CreateModel( name="UserMessage", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ( "flags", bitfield.models.BitField( [ "read", "starred", "collapsed", "mentioned", "wildcard_mentioned", "summarize_in_home", "summarize_in_stream", "force_expand", "force_collapse", "has_alert_word", "historical", "is_me_message", ], default=0, ), ), ( "message", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="zerver.Message"), ), ( "user_profile", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), ), ], ), migrations.CreateModel( name="UserPresence", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ("timestamp", models.DateTimeField(verbose_name="presence changed")), ("status", models.PositiveSmallIntegerField(default=1)), ( "client", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="zerver.Client"), ), ( "user_profile", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), ), ], ), migrations.AlterUniqueTogether( name="userpresence", unique_together={("user_profile", "client")}, ), migrations.AlterUniqueTogether( name="usermessage", unique_together={("user_profile", "message")}, ), migrations.AlterUniqueTogether( name="useractivity", unique_together={("user_profile", "client", "query")}, ), migrations.AlterUniqueTogether( name="subscription", unique_together={("user_profile", "recipient")}, ), migrations.AlterUniqueTogether( name="stream", unique_together={("name", "realm")}, ), migrations.AlterUniqueTogether( name="recipient", unique_together={("type", "type_id")}, ), migrations.AlterUniqueTogether( name="realmfilter", unique_together={("realm", "pattern")}, ), migrations.AlterUniqueTogether( name="realmemoji", unique_together={("realm", "name")}, ), migrations.AddField( model_name="realm", name="notifications_stream", field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name="+", to="zerver.Stream", ), ), migrations.AddField( model_name="preregistrationuser", name="realm", field=models.ForeignKey( null=True, on_delete=django.db.models.deletion.CASCADE, to="zerver.Realm"), ), migrations.AddField( model_name="preregistrationuser", name="referred_by", field=models.ForeignKey( null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), ), migrations.AddField( model_name="preregistrationuser", name="streams", field=models.ManyToManyField(null=True, to="zerver.Stream"), ), migrations.AddField( model_name="message", name="recipient", field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="zerver.Recipient"), ), migrations.AddField( model_name="message", name="sender", field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), ), migrations.AddField( model_name="message", name="sending_client", field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="zerver.Client"), ), migrations.AddField( model_name="defaultstream", name="realm", field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="zerver.Realm"), ), migrations.AddField( model_name="defaultstream", name="stream", field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="zerver.Stream"), ), migrations.AlterUniqueTogether( name="defaultstream", unique_together={("realm", "stream")}, ), migrations.AddField( model_name="userprofile", name="default_events_register_stream", field=models.ForeignKey( null=True, on_delete=django.db.models.deletion.CASCADE, related_name="+", to="zerver.Stream", ), ), migrations.AddField( model_name="userprofile", name="default_sending_stream", field=models.ForeignKey( null=True, on_delete=django.db.models.deletion.CASCADE, related_name="+", to="zerver.Stream", ), ), migrations.AddField( model_name="userprofile", name="groups", field=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", ), ), migrations.AddField( model_name="userprofile", name="realm", field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to="zerver.Realm"), ), migrations.AddField( model_name="userprofile", name="user_permissions", field=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", ), ), migrations.RunSQL(sql=fts_sql, ), migrations.AlterModelManagers( name="userprofile", managers=[ ("objects", django.contrib.auth.models.UserManager()), ], ), migrations.AlterField( model_name="preregistrationuser", name="email", field=models.EmailField(max_length=254), ), migrations.AlterField( model_name="preregistrationuser", name="streams", field=models.ManyToManyField(to="zerver.Stream"), ), migrations.AlterField( model_name="pushdevicetoken", name="last_updated", field=models.DateTimeField(auto_now=True), ), migrations.AlterField( model_name="referral", name="email", field=models.EmailField(max_length=254), ), migrations.AlterField( model_name="userprofile", name="email", field=models.EmailField(db_index=True, max_length=254, unique=True), ), migrations.AlterField( model_name="userprofile", name="last_login", field=models.DateTimeField(blank=True, null=True, verbose_name="last login"), ), migrations.RunSQL( sql= "CREATE INDEX upper_subject_idx ON zerver_message ((upper(subject)));", reverse_sql="DROP INDEX upper_subject_idx;", ), migrations.RunSQL( sql= "CREATE INDEX upper_stream_name_idx ON zerver_stream ((upper(name)));", reverse_sql="DROP INDEX upper_stream_name_idx;", ), migrations.AddField( model_name="userprofile", name="left_side_userlist", field=models.BooleanField(default=False), ), migrations.AlterModelOptions( name="realm", options={ "permissions": ( ("administer", "Administer a realm"), ("api_super_user", "Can send messages as other users for mirroring"), ) }, ), migrations.RunSQL( sql= "CREATE INDEX upper_userprofile_email_idx ON zerver_userprofile ((upper(email)));", reverse_sql="DROP INDEX upper_userprofile_email_idx;", ), migrations.AlterField( model_name="userprofile", name="is_active", field=models.BooleanField(db_index=True, default=True), ), migrations.AlterField( model_name="userprofile", name="is_bot", field=models.BooleanField(db_index=True, default=False), ), migrations.RunSQL( sql= "CREATE INDEX upper_preregistration_email_idx ON zerver_preregistrationuser ((upper(email)));", reverse_sql="DROP INDEX upper_preregistration_email_idx;", ), migrations.AlterField( model_name="userprofile", name="enable_stream_desktop_notifications", field=models.BooleanField(default=False), ), migrations.AlterField( model_name="userprofile", name="enable_stream_sounds", field=models.BooleanField(default=False), ), migrations.AddField( model_name="userprofile", name="is_api_super_user", field=models.BooleanField(db_index=True, default=False), ), migrations.AddField( model_name="userprofile", name="is_realm_admin", field=models.BooleanField(db_index=True, default=False), ), migrations.AlterField( model_name="realmemoji", name="img_url", field=models.URLField(), ), migrations.AlterField( model_name="realmemoji", name="name", field=models.TextField(validators=[ django.core.validators.MinLengthValidator(1), django.core.validators.RegexValidator( regex="^[0-9a-zA-Z.\\-_]+(?<![.\\-_])$"), ]), ), migrations.AlterField( model_name="realmemoji", name="img_url", field=models.URLField(max_length=1000), ), migrations.CreateModel( name="Attachment", fields=[ ( "id", models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID"), ), ("file_name", models.CharField(db_index=True, max_length=100)), ("path_id", models.TextField(db_index=True)), ( "create_time", models.DateTimeField(db_index=True, default=django.utils.timezone.now), ), ("messages", models.ManyToManyField(to="zerver.Message")), ( "owner", models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), ), ("is_realm_public", models.BooleanField(default=False)), ], ), migrations.AddField( model_name="realm", name="create_stream_by_admins_only", field=models.BooleanField(default=False), ), migrations.AddField( model_name="userprofile", name="bot_type", field=models.PositiveSmallIntegerField(db_index=True, null=True), ), migrations.AlterField( model_name="realmemoji", name="name", field=models.TextField(validators=[ django.core.validators.MinLengthValidator(1), django.core.validators.RegexValidator( message="Invalid characters in emoji name", regex="^[0-9a-zA-Z.\\-_]+(?<![.\\-_])$", ), ]), ), migrations.AddField( model_name="preregistrationuser", name="realm_creation", field=models.BooleanField(default=False), ), migrations.AddField( model_name="attachment", name="realm", field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to="zerver.Realm", ), ), migrations.RunPython( code=migrate_existing_attachment_data, elidable=True, ), migrations.AddField( model_name="subscription", name="pin_to_top", field=models.BooleanField(default=False), ), migrations.AddField( model_name="userprofile", name="default_language", field=models.CharField(default="en", max_length=50), ), migrations.AddField( model_name="realm", name="allow_message_editing", field=models.BooleanField(default=True), ), migrations.AddField( model_name="realm", name="message_content_edit_limit_seconds", field=models.IntegerField(default=600), ), migrations.AddField( model_name="realm", name="default_language", field=models.CharField(default="en", max_length=50), ), migrations.AddField( model_name="userprofile", name="tos_version", field=models.CharField(max_length=10, null=True), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ ] operations = [ migrations.CreateModel( name='Dish', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=200)), ('is_main', models.BooleanField(default=False)), ('eating_time', bitfield.models.BitField((('breakfast', 'Breakfast'), ('lunch', 'Lunch'), ('after_lunch', 'After lunch'), ('dinner', 'Dinner')), default=None)), ('serve_type', bitfield.models.BitField((('garnier', 'Garnier'), ('desert', 'Desert'), ('bad', 'BAD')), default=None)), ('proteinsNumber', models.IntegerField(default=0)), ('lipidsNumber', models.IntegerField(default=0)), ('energyValue', models.IntegerField(default=0)), ('cost', models.DecimalField(decimal_places=4, default=0, max_digits=100)), ], options={ 'verbose_name': 'Dish', 'verbose_name_plural': 'Dishes', }, ), migrations.CreateModel( name='FoodCategory', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=200)), ], options={ 'verbose_name': 'Food category', 'verbose_name_plural': 'Food categories', }, ), migrations.CreateModel( name='FoodType', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=200)), ], ), migrations.CreateModel( name='Product', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=200)), ('proteinsNumber', models.IntegerField(default=0)), ('lipidsNumber', models.IntegerField(default=0)), ('energyValue', models.IntegerField(default=0)), ('cost', models.DecimalField(decimal_places=4, default=0, max_digits=100)), ], ), migrations.AddField( model_name='foodcategory', name='food_type', field=models.ManyToManyField(to='health_calc.FoodType'), ), migrations.AddField( model_name='dish', name='food_category', field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='health_calc.FoodCategory'), ), migrations.AddField( model_name='dish', name='food_type', field=models.ManyToManyField(to='health_calc.FoodType'), ), migrations.AddField( model_name='dish', name='products', field=models.ManyToManyField(to='health_calc.Product'), ), ]
class Migration(migrations.Migration): dependencies = [ ('zerver', '0066_realm_inline_url_embed_preview'), ] operations = [ migrations.CreateModel( name='ArchivedAttachment', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('file_name', models.TextField(db_index=True)), ('path_id', models.TextField(db_index=True)), ('is_realm_public', models.BooleanField(default=False)), ('create_time', models.DateTimeField(db_index=True, default=django.utils.timezone.now)), ('size', models.IntegerField(null=True)), ('archive_timestamp', models.DateTimeField(db_index=True, default=django.utils.timezone.now)), ], options={ 'abstract': False, }, bases=(zerver.lib.str_utils.ModelReprMixin, models.Model), ), migrations.CreateModel( name='ArchivedMessage', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('subject', models.CharField(db_index=True, max_length=60)), ('content', models.TextField()), ('rendered_content', models.TextField(null=True)), ('rendered_content_version', models.IntegerField(null=True)), ('pub_date', models.DateTimeField(db_index=True, verbose_name='date published')), ('last_edit_time', models.DateTimeField(null=True)), ('edit_history', models.TextField(null=True)), ('has_attachment', models.BooleanField(db_index=True, default=False)), ('has_image', models.BooleanField(db_index=True, default=False)), ('has_link', models.BooleanField(db_index=True, default=False)), ('archive_timestamp', models.DateTimeField(db_index=True, default=django.utils.timezone.now)), ('recipient', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Recipient')), ('sender', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ('sending_client', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Client')), ], options={ 'abstract': False, }, bases=(zerver.lib.str_utils.ModelReprMixin, models.Model), ), migrations.CreateModel( name='ArchivedUserMessage', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('flags', bitfield.models.BitField([ 'read', 'starred', 'collapsed', 'mentioned', 'wildcard_mentioned', 'summarize_in_home', 'summarize_in_stream', 'force_expand', 'force_collapse', 'has_alert_word', 'historical', 'is_me_message' ], default=0)), ('archive_timestamp', models.DateTimeField(db_index=True, default=django.utils.timezone.now)), ('message', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.ArchivedMessage')), ('user_profile', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ 'abstract': False, }, bases=(zerver.lib.str_utils.ModelReprMixin, models.Model), ), migrations.AddField( model_name='archivedattachment', name='messages', field=models.ManyToManyField(to='zerver.ArchivedMessage'), ), migrations.AddField( model_name='archivedattachment', name='owner', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), ), migrations.AddField( model_name='archivedattachment', name='realm', field=models.ForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='zerver.Realm'), ), migrations.AlterUniqueTogether( name='archivedusermessage', unique_together=set([('user_profile', 'message')]), ), ]
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", ), }, ), ]
class Migration(migrations.Migration): dependencies = [ ('coredata', '0019_switch_to_utf8mb4_columns'), ] operations = [ migrations.AlterField( model_name='combinedoffering', name='campus', field=models.CharField(choices=[ ('BRNBY', 'Burnaby Campus'), ('SURRY', 'Surrey Campus'), ('VANCR', 'Harbour Centre'), ('OFFST', 'Off-campus'), ('GNWC', 'Great Northern Way Campus'), ('METRO', 'Other Locations in Vancouver') ], max_length=5), ), migrations.AlterField( model_name='combinedoffering', name='component', field=models.CharField(choices=[('LEC', 'Lecture'), ('LAB', 'Lab'), ('TUT', 'Tutorial'), ('SEM', 'Seminar'), ('SEC', 'Section'), ('PRA', 'Practicum'), ('IND', 'Individual Work'), ('INS', 'INS'), ('WKS', 'Workshop'), ('FLD', 'Field School'), ('STD', 'Studio'), ('OLC', 'OLC'), ('RQL', 'RQL'), ('RSC', 'RSC'), ('STL', 'STL'), ('CNV', 'CNV'), ('OPL', 'Open Lab'), ('EXM', 'Exam'), ('CAN', 'Cancelled')], max_length=3), ), migrations.AlterField( model_name='combinedoffering', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='combinedoffering', name='instr_mode', field=models.CharField(choices=[('CO', 'Co-Op'), ('DE', 'Distance Education'), ('GI', 'Graduate Internship'), ('P', 'In Person'), ('PO', 'In Person - Off Campus'), ('PR', 'Practicum')], default='P', max_length=2), ), migrations.AlterField( model_name='combinedoffering', name='owner', field=models.ForeignKey( help_text='Unit that controls this offering', null=True, on_delete=django.db.models.deletion.PROTECT, to='coredata.Unit'), ), migrations.AlterField( model_name='combinedoffering', name='semester', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Semester'), ), migrations.AlterField( model_name='course', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='course', name='number', field=models.CharField( db_index=True, help_text='Course number, like "120" or "XX1".', max_length=4), ), migrations.AlterField( model_name='course', name='slug', field=autoslug.fields.AutoSlugField(editable=False, populate_from='autoslug', unique=True), ), migrations.AlterField( model_name='course', name='subject', field=models.CharField( db_index=True, help_text='Subject code, like "CMPT" or "FAN".', max_length=8), ), migrations.AlterField( model_name='course', name='title', field=models.CharField(help_text='The course title.', max_length=30), ), migrations.AlterField( model_name='courseoffering', name='campus', field=models.CharField(choices=[ ('BRNBY', 'Burnaby Campus'), ('SURRY', 'Surrey Campus'), ('VANCR', 'Harbour Centre'), ('OFFST', 'Off-campus'), ('GNWC', 'Great Northern Way Campus'), ('METRO', 'Other Locations in Vancouver') ], db_index=True, max_length=5), ), migrations.AlterField( model_name='courseoffering', name='component', field=models.CharField( choices=[ ('LEC', 'Lecture'), ('LAB', 'Lab'), ('TUT', 'Tutorial'), ('SEM', 'Seminar'), ('SEC', 'Section'), ('PRA', 'Practicum'), ('IND', 'Individual Work'), ('INS', 'INS'), ('WKS', 'Workshop'), ('FLD', 'Field School'), ('STD', 'Studio'), ('OLC', 'OLC'), ('RQL', 'RQL'), ('RSC', 'RSC'), ('STL', 'STL'), ('CNV', 'CNV'), ('OPL', 'Open Lab'), ('EXM', 'Exam'), ('CAN', 'Cancelled') ], db_index=True, help_text='Component of the offering, like "LEC" or "LAB"', max_length=3), ), migrations.AlterField( model_name='courseoffering', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='courseoffering', name='course', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Course'), ), migrations.AlterField( model_name='courseoffering', name='flags', field=bitfield.models.BitField( ['write', 'quant', 'bhum', 'bsci', 'bsoc', 'combined'], default=0), ), migrations.AlterField( model_name='courseoffering', name='instr_mode', field=models.CharField( choices=[('CO', 'Co-Op'), ('DE', 'Distance Education'), ('GI', 'Graduate Internship'), ('P', 'In Person'), ('PO', 'In Person - Off Campus'), ('PR', 'Practicum') ], db_index=True, default='P', help_text='The instructional mode of the offering', max_length=2), ), migrations.AlterField( model_name='courseoffering', name='number', field=models.CharField( db_index=True, help_text='Course number, like "120" or "XX1"', max_length=4), ), migrations.AlterField( model_name='courseoffering', name='owner', field=models.ForeignKey( help_text='Unit that controls this offering', null=True, on_delete=django.db.models.deletion.PROTECT, to='coredata.Unit'), ), migrations.AlterField( model_name='courseoffering', name='section', field=models.CharField( db_index=True, help_text='Section should be in the form "C100" or "D100"', max_length=4), ), migrations.AlterField( model_name='courseoffering', name='semester', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Semester'), ), migrations.AlterField( model_name='courseoffering', name='slug', field=autoslug.fields.AutoSlugField(editable=False, populate_from='autoslug', unique=True), ), migrations.AlterField( model_name='courseoffering', name='subject', field=models.CharField( db_index=True, help_text='Subject code, like "CMPT" or "FAN"', max_length=8), ), migrations.AlterField( model_name='courseoffering', name='title', field=models.CharField(db_index=True, help_text='The course title', max_length=30), ), migrations.AlterField( model_name='courseoffering', name='units', field=models.PositiveSmallIntegerField( help_text= 'The number of credits received by (most?) students in the course', null=True), ), migrations.AlterField( model_name='enrolmenthistory', name='offering', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.CourseOffering'), ), migrations.AlterField( model_name='futureperson', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='holiday', name='date', field=models.DateField(db_index=True, help_text='Date of the holiday'), ), migrations.AlterField( model_name='holiday', name='description', field=models.CharField( help_text='Description of holiday, e.g. "Canada Day"', max_length=30), ), migrations.AlterField( model_name='holiday', name='holiday_type', field=models.CharField( choices=[('FULL', 'Classes cancelled, offices closed'), ('CLAS', 'Classes cancelled, offices open'), ('OPEN', 'Classes as scheduled')], help_text='Type of holiday: how does it affect schedules?', max_length=4), ), migrations.AlterField( model_name='holiday', name='semester', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Semester'), ), migrations.AlterField( model_name='meetingtime', name='end_day', field=models.DateField(help_text='Ending day of the meeting'), ), migrations.AlterField( model_name='meetingtime', name='end_time', field=models.TimeField(help_text='End time of the meeting'), ), migrations.AlterField( model_name='meetingtime', name='labtut_section', field=models.CharField( blank=True, help_text= 'Section should be in the form "C101" or "D103". None/blank for the non lab/tutorial events.', max_length=4, null=True), ), migrations.AlterField( model_name='meetingtime', name='meeting_type', field=models.CharField(choices=[('LEC', 'Lecture'), ('MIDT', 'Midterm Exam'), ('EXAM', 'Exam'), ('LAB', 'Lab/Tutorial')], default='LEC', max_length=4), ), migrations.AlterField( model_name='meetingtime', name='offering', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name='meeting_time', to='coredata.CourseOffering'), ), migrations.AlterField( model_name='meetingtime', name='room', field=models.CharField( help_text='Room (or other location) for the meeting', max_length=20), ), migrations.AlterField( model_name='meetingtime', name='start_day', field=models.DateField(help_text='Starting day of the meeting'), ), migrations.AlterField( model_name='meetingtime', name='start_time', field=models.TimeField(help_text='Start time of the meeting'), ), migrations.AlterField( model_name='meetingtime', name='weekday', field=models.PositiveSmallIntegerField( choices=[(0, 'Monday'), (1, 'Tuesday'), (2, 'Wednesday'), (3, 'Thursday'), (4, 'Friday'), (5, 'Saturday'), (6, 'Sunday')], help_text='Day of week of the meeting'), ), migrations.AlterField( model_name='member', name='added_reason', field=models.CharField(choices=[('AUTO', 'Automatically added'), ('TRU', 'TRU/OU Distance Student'), ('CTA', 'CourSys-Appointed TA'), ('TAC', 'CourSys-Appointed TA'), ('TA', 'Additional TA'), ('TAIN', 'TA added by instructor'), ('INST', 'Additional Instructor'), ('UNK', 'Unknown/Other Reason')], db_index=True, max_length=4), ), migrations.AlterField( model_name='member', name='career', field=models.CharField(choices=[('UGRD', 'Undergraduate'), ('GRAD', 'Graduate'), ('NONS', 'Non-Student')], max_length=4), ), migrations.AlterField( model_name='member', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='member', name='credits', field=models.PositiveSmallIntegerField( default=3, help_text='Number of credits this course is worth.'), ), migrations.AlterField( model_name='member', name='labtut_section', field=models.CharField( blank=True, help_text='Section should be in the form "C101" or "D103".', max_length=4, null=True), ), migrations.AlterField( model_name='member', name='offering', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.CourseOffering'), ), migrations.AlterField( model_name='member', name='person', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, related_name='person', to='coredata.Person'), ), migrations.AlterField( model_name='member', name='role', field=models.CharField(choices=[('STUD', 'Student'), ('TA', 'TA'), ('INST', 'Instructor'), ('APPR', 'Grade Approver'), ('DROP', 'Dropped')], max_length=4), ), migrations.AlterField( model_name='person', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='person', name='emplid', field=models.PositiveIntegerField( db_index=True, help_text='Employee ID (i.e. student number)', unique=True, verbose_name='ID #'), ), migrations.AlterField( model_name='person', name='userid', field=models.CharField( blank=True, db_index=True, help_text= 'SFU Unix userid (i.e. part of SFU email address before the "@").', max_length=8, null=True, unique=True, verbose_name='User ID'), ), migrations.AlterField( model_name='role', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='role', name='person', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Person'), ), migrations.AlterField( model_name='role', name='role', field=models.CharField(choices=[ ('ADVS', 'Advisor'), ('FAC', 'Faculty Member'), ('SESS', 'Sessional Instructor'), ('COOP', 'Co-op Staff'), ('INST', 'Other Instructor'), ('SUPV', 'Additional Supervisor'), ('DISC', 'Discipline Case Administrator'), ('DICC', 'Discipline Case Filer (email CC)'), ('ADMN', 'Departmental Administrator'), ('TAAD', 'TA Administrator'), ('TADM', 'Teaching Administrator'), ('GRAD', 'Grad Student Administrator'), ('GRPD', 'Graduate Program Director'), ('FUND', 'Grad Funding Administrator'), ('FDCC', 'Grad Funding Reminder CC'), ('TECH', 'Tech Staff'), ('GPA', 'GPA conversion system admin'), ('OUTR', 'Outreach Administrator'), ('INV', 'Inventory Administrator'), ('FACR', 'Faculty Viewer'), ('REPV', 'Report Viewer'), ('FACA', 'Faculty Administrator'), ('RELA', 'Relationship Database User'), ('SPAC', 'Space Administrator'), ('SYSA', 'System Administrator'), ('NONE', 'none') ], max_length=4), ), migrations.AlterField( model_name='role', name='unit', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Unit'), ), migrations.AlterField( model_name='roleaccount', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='roleaccount', name='type', field=models.CharField( blank=True, choices=[('ADVS', 'Advisor'), ('FAC', 'Faculty Member'), ('SESS', 'Sessional Instructor'), ('COOP', 'Co-op Staff'), ('INST', 'Other Instructor'), ('SUPV', 'Additional Supervisor'), ('DISC', 'Discipline Case Administrator'), ('DICC', 'Discipline Case Filer (email CC)'), ('ADMN', 'Departmental Administrator'), ('TAAD', 'TA Administrator'), ('TADM', 'Teaching Administrator'), ('GRAD', 'Grad Student Administrator'), ('GRPD', 'Graduate Program Director'), ('FUND', 'Grad Funding Administrator'), ('FDCC', 'Grad Funding Reminder CC'), ('TECH', 'Tech Staff'), ('GPA', 'GPA conversion system admin'), ('OUTR', 'Outreach Administrator'), ('INV', 'Inventory Administrator'), ('FACR', 'Faculty Viewer'), ('REPV', 'Report Viewer'), ('FACA', 'Faculty Administrator'), ('RELA', 'Relationship Database User'), ('SPAC', 'Space Administrator'), ('SYSA', 'System Administrator'), ('NONE', 'none')], max_length=4, null=True), ), migrations.AlterField( model_name='roleaccount', name='userid', field=models.CharField( db_index=True, help_text= 'SFU Unix userid (i.e. part of SFU email address before the "@").', max_length=8, verbose_name='User ID'), ), migrations.AlterField( model_name='semester', name='end', field=models.DateField(help_text='Last day of classes.'), ), migrations.AlterField( model_name='semester', name='name', field=models.CharField( db_index=True, help_text='Semester name should be in the form "1097".', max_length=4, unique=True), ), migrations.AlterField( model_name='semester', name='start', field=models.DateField(help_text='First day of classes.'), ), migrations.AlterField( model_name='semesterweek', name='monday', field=models.DateField(help_text='Monday of this week.'), ), migrations.AlterField( model_name='semesterweek', name='semester', field=models.ForeignKey( on_delete=django.db.models.deletion.PROTECT, to='coredata.Semester'), ), migrations.AlterField( model_name='semesterweek', name='week', field=models.PositiveSmallIntegerField( help_text='Week of the semester (typically 1-13)'), ), migrations.AlterField( model_name='unit', name='acad_org', field=models.CharField(blank=True, db_index=True, help_text='ACAD_ORG field from SIMS', max_length=10, null=True, unique=True), ), migrations.AlterField( model_name='unit', name='config', field=courselib.json_fields.JSONField(default=dict), ), migrations.AlterField( model_name='unit', name='label', field=models.CharField(db_index=True, help_text="The unit code, e.g. 'CMPT'.", max_length=4, unique=True), ), migrations.AlterField( model_name='unit', name='name', field=models.CharField( help_text= "The full name of the unit, e.g. 'School of Computing Science'.", max_length=60), ), migrations.AlterField( model_name='unit', name='parent', field=models.ForeignKey( blank=True, help_text='Next unit up in the hierarchy.', null=True, on_delete=django.db.models.deletion.PROTECT, to='coredata.Unit'), ), migrations.AlterField( model_name='unit', name='slug', field=autoslug.fields.AutoSlugField(editable=False, populate_from='autoslug', unique=True), ), ]
class Migration(migrations.Migration): initial = True dependencies = [ ('taggit', '0002_auto_20150616_2121'), ('contenttypes', '0002_remove_content_type_name'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ migrations.CreateModel( name='Article', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('for_lang', models.BooleanField( default=True, verbose_name='Dost\u0119pne w wybranym j\u0119zyku')), ('for_lang_pl', models.BooleanField( default=True, verbose_name='Dost\u0119pne w wybranym j\u0119zyku')), ('template', models.CharField(blank=True, max_length=255, null=True, verbose_name='Szablon')), ('status', models.IntegerField(choices=[(0, b'Ukryty'), (1, b'Publikowany')], default=0, verbose_name='Status')), ('identity', models.CharField(default=b'', max_length=255, verbose_name='Tytu\u0142')), ('identity_pl', models.CharField(default=b'', max_length=255, null=True, verbose_name='Tytu\u0142')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Ostatnia aktualizacja')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Utworzono')), ('article_date', models.DateTimeField( default=datetime.datetime.now, help_text='Data wy\u015bwietlana przy artykule', verbose_name='Data')), ('shortcut', corecms.fields.CMSTextField(verbose_name='Skr\xf3t')), ('slug', models.SlugField( blank=True, help_text='Unikalny identyfikator kategorii (opcjonalny)', max_length=255, verbose_name='Klucz')), ('slug_pl', models.SlugField( blank=True, help_text='Unikalny identyfikator kategorii (opcjonalny)', max_length=255, null=True, verbose_name='Klucz')), ('content', corecms.fields.CMSTextField(blank=True, default=b'', verbose_name='Tre\u015b\u0107')), ('content_pl', corecms.fields.CMSTextField(blank=True, default=b'', null=True, verbose_name='Tre\u015b\u0107')), ('thumbnail', corecms.fields.Base64ImageField(blank=True, null=True, upload_to=b'', verbose_name='Miniaturka')), ('main_image', corecms.fields.Base64ImageField( blank=True, null=True, upload_to=b'', verbose_name='Obrazek przewodni')), ('alternative_url', models.CharField( blank=True, default=b'', help_text= b'Link na kt\xc3\xb3ry bedzie wskazywa\xc5\x82a ten artyku\xc5\x82', max_length=255, verbose_name='Link alternatywny')), ('old_cms_id', models.IntegerField(default=None, null=True)), ('created_by', models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Autor')), ], options={ 'ordering': ['-article_date'], 'abstract': False, 'verbose_name': 'Artyku\u0142', 'verbose_name_plural': 'Artyku\u0142y', }, bases=(corecms.models.base_element.ConnectedFilesMixin, models.Model), ), migrations.CreateModel( name='ConfigCMS', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('site_title', models.CharField(blank=True, default=b'', max_length=255, verbose_name='Tytu\u0142 strony')), ('site_pagination', models.IntegerField( default=5, verbose_name= 'Ilo\u015b\u0107 artyku\u0142\xf3w na jednej stronie')), ('seo_keywords', models.CharField(blank=True, default=b'', help_text='Rozdzielaj przecinkiem', max_length=255, verbose_name='S\u0142owa kluczowe')), ('seo_description', models.TextField(blank=True, default=b'', verbose_name='Opis w META')), ('tracking_code', models.TextField( blank=True, default=b'', verbose_name='Kod \u015bledz\u0105cy w znaczniku HEAD')), ('cookie_description', models.TextField( blank=True, default=b'', help_text= 'Je\u017celi puste to informacja b\u0119dzie niewidoczna', verbose_name='Informacja w informacji o ciastkach')), ], options={ 'abstract': False, 'verbose_name': 'Konfiguracja', 'verbose_name_plural': 'Konfiguracja', }, ), migrations.CreateModel( name='FormGeneratorModel', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255, verbose_name='Nazwa')), ('emails', models.TextField( blank=True, null=True, verbose_name='E-Maile rozdzielone przecinkami')), ('form_data', picklefield.fields.PickledObjectField(editable=False)), ], ), migrations.CreateModel( name='Gallery', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255, verbose_name='Nazwa')), ('for_lang', models.BooleanField( default=True, verbose_name='Dost\u0119pne w wybranym j\u0119zyku')), ], bases=(corecms.models.base_element.ConnectedFilesMixin, models.Model), ), migrations.CreateModel( name='IsSite', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('cms_id', models.IntegerField()), ('is_site', models.BooleanField(default=False)), ], ), migrations.CreateModel( name='MediaFile', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('for_lang', models.BooleanField( default=True, verbose_name='Dost\u0119pne w wybranym j\u0119zyku')), ('for_lang_pl', models.BooleanField( default=True, verbose_name='Dost\u0119pne w wybranym j\u0119zyku')), ('object_id', models.PositiveIntegerField(blank=True, null=True)), ('name', models.CharField(default=b'', max_length=255, verbose_name=b'Oryginalna nazwa pliku')), ('title', models.CharField(default=b'', max_length=255, verbose_name=b'Tytu\xc5\x82 pliku')), ('path', models.FilePathField(max_length=1000)), ('position', positions.fields.PositionField(default=0)), ('distinction', bitfield.models.BitField( ((b'downloadable', 'Do pobrania', b'glyphicon-download-alt'), (b'gallery', 'Galeria', b'glyphicon-picture'), (b'cover', 'Poka\u017c ok\u0142adk\u0119', b'glyphicon-book')), default=None)), ('create_date', models.DateTimeField(auto_now_add=True, verbose_name=b'Data utworzenia')), ('file_type', models.CharField(blank=True, max_length=100, verbose_name=b'Typ pliku')), ('file_size', models.CharField(blank=True, max_length=200, verbose_name=b'Rozmiar pliku')), ('description', models.TextField(blank=True, max_length=250, verbose_name=b'Opis')), ('repository', models.BooleanField(default=False, verbose_name='W repozytorium')), ('publish', models.BooleanField(default=True, verbose_name='Publikuj na www')), ('content_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='+', to='contenttypes.ContentType')), ('created_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name=b'Utworzone przez')), ('parent', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ghost_files', to='cms.MediaFile')), ], options={ 'ordering': ['position'], 'abstract': False, }, ), migrations.CreateModel( name='Menu', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255, verbose_name='Nazwa')), ('slug', models.SlugField(help_text='Unikalny identyfikator', max_length=32, verbose_name='Klucz')), ], options={ 'abstract': False, 'verbose_name': 'Menu', 'verbose_name_plural': 'Menu', }, ), migrations.CreateModel( name='RelationArticleSite', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('position', positions.fields.PositionField(default=-1)), ('main', models.BooleanField(default=False)), ('child', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='cms.Article')), ], options={ 'ordering': ['-id'], }, ), migrations.CreateModel( name='RelationMenuSite', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('order', positions.fields.PositionField(default=-1)), ], options={ 'ordering': ['order'], }, ), migrations.CreateModel( name='Site', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('template', models.CharField(blank=True, max_length=255, null=True, verbose_name='Szablon')), ('status', models.IntegerField(choices=[(0, b'Ukryty'), (1, b'Publikowany')], default=0, verbose_name='Status')), ('identity', models.CharField(default=b'', max_length=255, verbose_name='Tytu\u0142')), ('identity_pl', models.CharField(default=b'', max_length=255, null=True, verbose_name='Tytu\u0142')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Ostatnia aktualizacja')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Utworzono')), ('alternative_url', models.CharField( blank=True, default=b'', help_text= b'Link na kt\xc3\xb3ry bedzie wskazywa\xc5\x82a ta strona', max_length=255, verbose_name='Link alternatywny')), ('thumbnail', corecms.fields.Base64ImageField(blank=True, null=True, upload_to=b'', verbose_name='Miniaturka')), ('main_image', corecms.fields.Base64ImageField( blank=True, null=True, upload_to=b'', verbose_name='Obrazek przewodni')), ('slug', models.SlugField( blank=True, help_text='Unikalny identyfikator kategorii (opcjonalny)', max_length=255, verbose_name='Klucz')), ('slug_pl', models.SlugField( blank=True, help_text='Unikalny identyfikator kategorii (opcjonalny)', max_length=255, null=True, verbose_name='Klucz')), ('content', corecms.fields.CMSTextField(blank=True, default=b'', verbose_name='Tre\u015b\u0107')), ('content_pl', corecms.fields.CMSTextField(blank=True, default=b'', null=True, verbose_name='Tre\u015b\u0107')), ('order', models.PositiveIntegerField(default=0)), ('old_cms_id', models.IntegerField(default=None, null=True)), ('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)), ('articles', models.ManyToManyField(through='cms.RelationArticleSite', to='cms.Article')), ('created_by', models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Autor')), ('parent', mptt.fields.TreeForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='cms.Site', verbose_name='Strona nadrz\u0119dna')), ('updated_by', models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Ostatnio aktualizowa\u0142')), ], options={ 'ordering': ('lft', ), 'abstract': False, 'verbose_name': 'Strona', 'verbose_name_plural': 'Strony', }, bases=(corecms.models.base_element.ConnectedFilesMixin, models.Model), ), migrations.CreateModel( name='Slider', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('slug', models.SlugField(verbose_name='Identyfikator')), ('name', models.CharField(blank=True, default=b'', max_length=255, verbose_name='Nazwa')), ], options={ 'abstract': False, 'verbose_name': 'Slider', 'verbose_name_plural': 'Slidery', }, ), migrations.CreateModel( name='SliderRow', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(blank=True, default=b'', max_length=255, verbose_name='Nazwa')), ('text', models.TextField(blank=True, default=b'', verbose_name='Opis')), ('image', models.ImageField(blank=True, upload_to=b'public/sliders', verbose_name='Obrazek')), ('order', models.IntegerField(default=1, verbose_name='Priorytet')), ('status', models.IntegerField(choices=[(0, b'Ukryty'), (1, b'Publikowany')], default=1, verbose_name='Status')), ('url', models.CharField(blank=True, default=b'', max_length=255, verbose_name='Url')), ('parent', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='items', to='cms.Slider')), ], options={ 'ordering': ('order', ), 'abstract': False, 'verbose_name': 'Slider - wpis', 'verbose_name_plural': 'Slider - wpisy', }, ), migrations.CreateModel( name='TextBlock', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('keyword', models.SlugField(max_length=255, unique=True, verbose_name='Identyfikator')), ('content', models.TextField(blank=True, default=b'', verbose_name='Tre\u015b\u0107')), ('content_pl', models.TextField(blank=True, default=b'', null=True, verbose_name='Tre\u015b\u0107')), ], options={ 'abstract': False, 'verbose_name': 'Blok tekstowy', 'verbose_name_plural': 'Bloki tekstowe', }, bases=(corecms.models.base_element.ConnectedFilesMixin, models.Model), ), migrations.CreateModel( name='Tag', fields=[], options={ 'verbose_name': 'Tag', 'proxy': True, 'verbose_name_plural': 'Tagi', 'indexes': [], }, bases=('taggit.tag', ), ), migrations.AddField( model_name='relationmenusite', name='child', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='cms.Site'), ), migrations.AddField( model_name='relationmenusite', name='parent', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='cms.Menu'), ), migrations.AddField( model_name='relationarticlesite', name='parent', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='cms.Site'), ), migrations.AddField( model_name='mediafile', name='tags', field=taggit.managers.TaggableManager( blank=True, help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tagi'), ), migrations.AddField( model_name='article', name='sites', field=models.ManyToManyField(through='cms.RelationArticleSite', to='cms.Site'), ), migrations.AddField( model_name='article', name='tags', field=taggit.managers.TaggableManager( blank=True, help_text='A comma-separated list of tags.', through='taggit.TaggedItem', to='taggit.Tag', verbose_name='Tagi'), ), migrations.AddField( model_name='article', name='updated_by', field=models.ForeignKey( null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL, verbose_name='Ostatnio aktualizowa\u0142'), ), migrations.CreateModel( name='RepositoryMediaFile', fields=[], options={ 'verbose_name': 'Plik', 'proxy': True, 'verbose_name_plural': 'Repozytorium plik\xf3w', 'indexes': [], }, bases=('cms.mediafile', ), ), migrations.AlterUniqueTogether( name='relationmenusite', unique_together=set([('child', 'parent')]), ), migrations.AlterUniqueTogether( name='relationarticlesite', unique_together=set([('child', 'parent')]), ), ]