class Migration(migrations.Migration): initial = True dependencies = [ ('contenttypes', '0002_remove_content_type_name'), ('email_auth', '0002_auto_20160327_1119'), ] operations = [ migrations.CreateModel( name='AdditionalEntityCharacteristicOrMark', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('value', models.CharField(max_length=255, verbose_name='Value')), ('view_class', models.CharField( blank=True, help_text= 'Space delimited class attribute, specifies one or more classnames for an entity.', max_length=255, null=True, verbose_name='View Class')), ], options={ 'abstract': False, 'verbose_name': 'Additional Entity Characteristic or Mark', 'verbose_name_plural': 'Additional Entity Characteristics or Marks', }, ), migrations.CreateModel( name='Book', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created at')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated at')), ('active', models.BooleanField( default=True, help_text='Is this object publicly visible.', verbose_name='Active')), ('name', models.CharField(max_length=255, verbose_name='Book Name')), ('slug', models.SlugField(unique=True, verbose_name='Slug')), ('description', models.TextField(blank=True, null=True, verbose_name='Description')), ('order', models.PositiveIntegerField(db_index=True, default=1, verbose_name='Sort by')), ], options={ 'ordering': ('order', ), 'verbose_name': 'Book', 'verbose_name_plural': 'Books', }, ), migrations.CreateModel( name='Customer', fields=[ ('user', models.OneToOneField( on_delete=django.db.models.deletion.CASCADE, primary_key=True, serialize=False, to=settings.AUTH_USER_MODEL)), ('recognized', models.PositiveSmallIntegerField( choices=[(0, 'Unrecognized'), (1, 'Guest'), (2, 'Registered')], default=0, help_text= 'Designates the state the customer is recognized as.', verbose_name='Recognized as')), ('salutation', models.CharField(choices=[('mrs', 'Mrs.'), ('mr', 'Mr.'), ('na', '(n/a)')], max_length=5, verbose_name='Salutation')), ('last_access', models.DateTimeField(default=django.utils.timezone.now, verbose_name='Last accessed')), ('extra', jsonfield.fields.JSONField( default={}, editable=False, verbose_name='Extra information about this customer')), ('number', models.PositiveIntegerField(default=None, null=True, unique=True, verbose_name='Customer Number')), ], ), migrations.CreateModel( name='DataMart', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255, verbose_name='Name')), ('slug', models.SlugField( help_text= 'Used for URLs, auto-generated from name if blank', verbose_name='Slug')), ('path', models.CharField(db_index=True, editable=False, max_length=255, unique=True, verbose_name='Path')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created at')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated at')), ('view_class', models.CharField( blank=True, help_text= 'Space delimited class attribute, specifies one or more classnames for an data mart.', max_length=255, null=True, verbose_name='View Class')), ('description', models.TextField(blank=True, null=True, verbose_name='Description')), ('active', models.BooleanField(db_index=True, default=True, help_text='Is this data mart active.', verbose_name='Active')), ('system_flags', bitfield.models.BitField( [('delete_restriction', 'Delete restriction'), ('change_parent_restriction', 'Change parent restriction'), ('change_slug_restriction', 'Change slug restriction'), ('has_child_restriction', 'Has child restriction')], default=None, null=True, verbose_name='system flags')), ('lft', models.PositiveIntegerField(db_index=True, editable=False)), ('rght', models.PositiveIntegerField(db_index=True, editable=False)), ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), ('level', models.PositiveIntegerField(db_index=True, editable=False)), ('parent', edw.models.fields.TreeForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='sample.DataMart', verbose_name='Parent')), ('polymorphic_ctype', models.ForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_sample.datamart_set+', to='contenttypes.ContentType')), ], options={ 'abstract': False, 'verbose_name': 'Data mart', 'verbose_name_plural': 'Data marts', }, bases=(edw.signals.mptt.MPTTModelSignalSenderMixin, models.Model), ), migrations.CreateModel( name='Term', fields=[ ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255, verbose_name='Name')), ('slug', models.SlugField( help_text= 'Used for URLs, auto-generated from name if blank', verbose_name='Slug')), ('path', models.CharField(db_index=True, editable=False, max_length=255, unique=True, verbose_name='Path')), ('semantic_rule', models.PositiveSmallIntegerField( choices=[(10, 'OR'), (20, 'XOR'), (30, 'AND')], default=10, verbose_name='Semantic Rule')), ('attributes', bitfield.models.BitField( [('is_characteristic', 'Is characteristic'), ('is_mark', 'Is mark'), ('is_relation', 'Is relation')], default=None, help_text='Specifying attributes of term.', null=True, verbose_name='attributes')), ('specification_mode', models.PositiveSmallIntegerField( choices=[(10, 'Standard'), (20, 'Expanded'), (30, 'Reduced')], default=10, verbose_name='Specification Mode')), ('created_at', models.DateTimeField(auto_now_add=True, verbose_name='Created at')), ('updated_at', models.DateTimeField(auto_now=True, verbose_name='Updated at')), ('view_class', models.CharField( blank=True, help_text= 'Space delimited class attribute, specifies one or more classnames for an entity.', max_length=255, null=True, verbose_name='View Class')), ('description', models.TextField(blank=True, null=True, verbose_name='Description')), ('active', models.BooleanField(db_index=True, default=True, help_text='Is this term active.', verbose_name='Active')), ('system_flags', bitfield.models.BitField( [('delete_restriction', 'Delete restriction'), ('change_parent_restriction', 'Change parent restriction'), ('change_slug_restriction', 'Change slug restriction'), ('change_semantic_rule_restriction', 'Change semantic rule restriction'), ('has_child_restriction', 'Has child restriction'), ('external_tagging_restriction', 'External tagging restriction')], default=None, null=True, verbose_name='system flags')), ('lft', models.PositiveIntegerField(db_index=True, editable=False)), ('rght', models.PositiveIntegerField(db_index=True, editable=False)), ('tree_id', models.PositiveIntegerField(db_index=True, editable=False)), ('level', models.PositiveIntegerField(db_index=True, editable=False)), ('parent', edw.models.fields.TreeForeignKey( blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='children', to='sample.Term', verbose_name='Parent')), ], options={ 'abstract': False, 'verbose_name': 'Term', 'verbose_name_plural': 'Topic model', }, bases=(edw.models.term.AndRuleFilterMixin, edw.models.term.OrRuleFilterMixin, edw.signals.mptt.MPTTModelSignalSenderMixin, models.Model), ), migrations.CreateModel( name='CustomerProxy', fields=[], options={ 'verbose_name': 'Customer', 'proxy': True, 'verbose_name_plural': 'Customers', }, bases=('email_auth.user', ), managers=[ ('objects', email_auth.models.UserManager()), ], ), migrations.CreateModel( name='AdultBook', fields=[ ('book_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='sample.Book')), ('genre', models.PositiveSmallIntegerField(choices=[(1, 'Fantastic'), (2, 'Drama'), (3, 'Mistics')], verbose_name='Genre')), ], options={ 'verbose_name': 'Adult book', 'verbose_name_plural': 'Adult books', }, bases=('sample.book', ), ), migrations.CreateModel( name='ChildBook', fields=[ ('book_ptr', models.OneToOneField( auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='sample.Book')), ('age', models.PositiveSmallIntegerField(choices=[(1, '0-6 month'), (2, '6-12 month'), (3, '1+ year')], verbose_name='Age')), ], options={ 'verbose_name': 'Child book', 'verbose_name_plural': 'Child books', }, bases=('sample.book', ), ), migrations.AddField( model_name='datamart', name='terms', field=models.ManyToManyField( blank=True, help_text='Use "ctrl" key for choose multiple terms', related_name='_datamart_terms_+', to='sample.Term', verbose_name='Terms'), ), migrations.AddField( model_name='book', name='additional_characteristics_or_marks', field=models.ManyToManyField( through='sample.AdditionalEntityCharacteristicOrMark', to='sample.Term'), ), migrations.AddField( model_name='book', name='polymorphic_ctype', field=models.ForeignKey( editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='polymorphic_sample.book_set+', to='contenttypes.ContentType'), ), migrations.AddField( model_name='book', name='terms', field=models.ManyToManyField( blank=True, help_text='Use "ctrl" key for choose multiple terms', related_name='entities', to='sample.Term', verbose_name='Terms'), ), migrations.AddField( model_name='additionalentitycharacteristicormark', name='entity', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='sample.Book', verbose_name='Entity'), ), migrations.AddField( model_name='additionalentitycharacteristicormark', name='term', field=models.ForeignKey( on_delete=django.db.models.deletion.CASCADE, to='sample.Term', verbose_name='Term'), ), ]
class Migration(migrations.Migration): dependencies = [("accounts", "0040_add_message_model")] operations = [ migrations.AddField( model_name="child", name="gestational_age_at_birth", field=models.PositiveSmallIntegerField( choices=[ (None, "Not sure or prefer not to answer"), (0, "Under 24 weeks"), (1, "24 weeks"), (2, "25 weeks"), (3, "26 weeks"), (4, "27 weeks"), (5, "28 weeks"), (6, "29 weeks"), (7, "30 weeks"), (8, "31 weeks"), (9, "32 weeks"), (10, "33 weeks"), (11, "34 weeks"), (12, "35 weeks"), (13, "36 weeks"), (14, "37 weeks"), (15, "38 weeks"), (16, "39 weeks"), (17, "40 or more weeks"), ], default=None, null=True, ), ), migrations.RunPython( _forwards_migrate_ga_birth_char_field_to_int, reverse_code=_backwards_reverse_int_field_to_char, ), migrations.AlterField( # manually added to enable migration reversal, see https://stackoverflow.com/a/28879030 model_name="child", name="age_at_birth", field=models.CharField( max_length=25, choices=AGE_AT_BIRTH_CHOICES, default="na" ), preserve_default=False, ), migrations.RemoveField(model_name="child", name="age_at_birth"), migrations.AddField( model_name="child", name="existing_conditions", field=bitfield.models.BitField( ( ("autism_spectrum_disorder", "Autism Spectrum Disorder"), ("aspergers_syndrome", "Asperger's Syndrome"), ("down_syndrome", "Down Syndrome"), ("williams_syndrome", "Williams Syndrome"), ("stroke", "Stroke"), ("blind", "Blind"), ("visual_impairment", "Visual Impairment"), ("deaf", "Deaf"), ("hearing_impairment", "Hearing Impairment"), ("dyslexia", "Dyslexia"), ( "attention_deficit_hyperactivity_disorder", "Attention Deficit/Hyperactivity Disorder", ), ("learning_disability", "Learning Disability"), ("generalized_anxiety_disorder", "Generalized Anxiety Disorder"), ("obsessive_compulsive_disorder", "Obsessive-Compulsive Disorder"), ("panic_disorder", "Panic Disorder"), ( "post_traumatic_stress_disorder", "Post-Traumatic Stress Disorder", ), ( "social_phobia_social_anxiety_disorder", "Social Phobia/Social Anxiety Disorder", ), ("depression", "Depression"), ("other_mood_disorder", "Other Mood Disorder"), ("allergies", "Allergies"), ("fetal_alcohol_syndrome", "Fetal Alcohol Syndrome"), ("epilepsy", "Epilepsy"), ("diabetes", "Diabetes"), ( "other_chronic_medical_condition", "Other Chronic Medical Condition", ), ("other_genetic_condition", "Other Genetic Condition"), ( "gifted_advanced_learning_needs", "Gifted/Advanced learning needs", ), ("adopted", "Adopted"), ( "multiple birth", "Multiple Birth (twin, triplet, or higher order)", ), ("has_older_sibling", "Has at least one older sibling"), ("has_younger_sibling", "Has at least one younger sibling"), ), default=0, ), ), migrations.AddField( model_name="child", name="languages_spoken", field=bitfield.models.BitField( ( ("cmn", "Mandarin"), ("es", "Spanish"), ("en", "English"), ("hi", "Hindi"), ("bn", "Bengali"), ("pt", "Portuguese"), ("ru", "Russian"), ("ja", "Japanese"), ("lah", "Western Punjabi"), ("mr", "Marathi"), ("te", "Telugu"), ("wuu", "Wu"), ("tr", "Turkish"), ("ko", "Korean"), ("fr", "French"), ("de", "German"), ("vi", "Vietnamese"), ("ta", "Tamil"), ("yue", "Yue"), ("ur", "Urdu"), ("jv", "Javanese"), ("it", "Italian"), ("egy", "Egyptian Spoken Arabic"), ("gu", "Gujarati"), ("pes", "Iranian Persian"), ("bho", "Bhojpuri"), ("nan", "Min Nan"), ("hak", "Hakka"), ("cjy", "Jinyu"), ("ha", "Hausa"), ("kn", "Kannada"), ("id", "Indonesian"), ("pl", "Polish"), ("yo", "Yoruba"), ("hsn", "Xiang Chinese"), ("ml", "Malayalam"), ("or", "Odia"), ("mai", "Maithili"), ("my", "Burmese"), ("su", "Sunda"), ("mor", "Moroccan Spoken Arabic"), ("uk", "Ukrainian"), ("ig", "Igbo"), ("uzn", "Northern Uzbek"), ("sd", "Sindhi"), ("ro", "Romanian"), ("tl", "Tagalog"), ("nl", "Dutch"), ("gan", "Gan"), ("am", "Amharic"), ("pbu", "Northern Pashto"), ("mag", "Magahi"), ("th", "Thai"), ("skr", "Saraiki"), ("km", "Khmer"), ("hne", "Chhattisgarhi"), ("so", "Somali"), ("ms", "Malay"), ("ceb", "Cebuano"), ), default=0, ), ), ]
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): 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): dependencies = [("studies", "0046_feedback-related-managers")] operations = [ migrations.CreateModel( name="EligibleParticipantQueryModel", fields=[ ( "include_conditions", bitfield.models.BitField( ( ("autism_spectrum_disorder", "Autism Spectrum Disorder"), ("aspergers_syndrome", "Asperger's Syndrome"), ("down_syndrome", "Down Syndrome"), ("williams_syndrome", "Williams Syndrome"), ("stroke", "Stroke"), ("blind", "Blind"), ("visual_impairment", "Visual Impairment"), ("deaf", "Deaf"), ("hearing_impairment", "Hearing Impairment"), ("dyslexia", "Dyslexia"), ( "attention_deficit_hyperactivity_disorder", "Attention Deficit/Hyperactivity Disorder", ), ("learning_disability", "Learning Disability"), ( "generalized_anxiety_disorder", "Generalized Anxiety Disorder", ), ( "obsessive_compulsive_disorder", "Obsessive-Compulsive Disorder", ), ("panic_disorder", "Panic Disorder"), ( "post_traumatic_stress_disorder", "Post-Traumatic Stress Disorder", ), ( "social_phobia_social_anxiety_disorder", "Social Phobia/Social Anxiety Disorder", ), ("depression", "Depression"), ("other_mood_disorder", "Other Mood Disorder"), ("allergies", "Allergies"), ("fetal_alcohol_syndrome", "Fetal Alcohol Syndrome"), ("epilepsy", "Epilepsy"), ("diabetes", "Diabetes"), ( "other_chronic_medical_condition", "Other Chronic Medical Condition", ), ("other_genetic_condition", "Other Genetic Condition"), ( "gifted_advanced_learning_needs", "Gifted/Advanced learning needs", ), ("adopted", "Adopted"), ( "multiple birth", "Multiple Birth (twin, triplet, or higher order)", ), ("has_older_sibling", "Has at least one older sibling"), ("has_younger_sibling", "Has at least one younger sibling"), ), default=0, ), ), ( "exclude_conditions", bitfield.models.BitField( ( ("autism_spectrum_disorder", "Autism Spectrum Disorder"), ("aspergers_syndrome", "Asperger's Syndrome"), ("down_syndrome", "Down Syndrome"), ("williams_syndrome", "Williams Syndrome"), ("stroke", "Stroke"), ("blind", "Blind"), ("visual_impairment", "Visual Impairment"), ("deaf", "Deaf"), ("hearing_impairment", "Hearing Impairment"), ("dyslexia", "Dyslexia"), ( "attention_deficit_hyperactivity_disorder", "Attention Deficit/Hyperactivity Disorder", ), ("learning_disability", "Learning Disability"), ( "generalized_anxiety_disorder", "Generalized Anxiety Disorder", ), ( "obsessive_compulsive_disorder", "Obsessive-Compulsive Disorder", ), ("panic_disorder", "Panic Disorder"), ( "post_traumatic_stress_disorder", "Post-Traumatic Stress Disorder", ), ( "social_phobia_social_anxiety_disorder", "Social Phobia/Social Anxiety Disorder", ), ("depression", "Depression"), ("other_mood_disorder", "Other Mood Disorder"), ("allergies", "Allergies"), ("fetal_alcohol_syndrome", "Fetal Alcohol Syndrome"), ("epilepsy", "Epilepsy"), ("diabetes", "Diabetes"), ( "other_chronic_medical_condition", "Other Chronic Medical Condition", ), ("other_genetic_condition", "Other Genetic Condition"), ( "gifted_advanced_learning_needs", "Gifted/Advanced learning needs", ), ("adopted", "Adopted"), ( "multiple birth", "Multiple Birth (twin, triplet, or higher order)", ), ("has_older_sibling", "Has at least one older sibling"), ("has_younger_sibling", "Has at least one younger sibling"), ), default=0, ), ), ( "include_languages", bitfield.models.BitField( ( ("cmn", "Mandarin"), ("es", "Spanish"), ("en", "English"), ("hi", "Hindi"), ("bn", "Bengali"), ("pt", "Portuguese"), ("ru", "Russian"), ("ja", "Japanese"), ("lah", "Western Punjabi"), ("mr", "Marathi"), ("te", "Telugu"), ("wuu", "Wu"), ("tr", "Turkish"), ("ko", "Korean"), ("fr", "French"), ("de", "German"), ("vi", "Vietnamese"), ("ta", "Tamil"), ("yue", "Yue"), ("ur", "Urdu"), ("jv", "Javanese"), ("it", "Italian"), ("egy", "Egyptian Spoken Arabic"), ("gu", "Gujarati"), ("pes", "Iranian Persian"), ("bho", "Bhojpuri"), ("nan", "Min Nan"), ("hak", "Hakka"), ("cjy", "Jinyu"), ("ha", "Hausa"), ("kn", "Kannada"), ("id", "Indonesian"), ("pl", "Polish"), ("yo", "Yoruba"), ("hsn", "Xiang Chinese"), ("ml", "Malayalam"), ("or", "Odia"), ("mai", "Maithili"), ("my", "Burmese"), ("su", "Sunda"), ("mor", "Moroccan Spoken Arabic"), ("uk", "Ukrainian"), ("ig", "Igbo"), ("uzn", "Northern Uzbek"), ("sd", "Sindhi"), ("ro", "Romanian"), ("tl", "Tagalog"), ("nl", "Dutch"), ("gan", "Gan"), ("am", "Amharic"), ("pbu", "Northern Pashto"), ("mag", "Magahi"), ("th", "Thai"), ("skr", "Saraiki"), ("km", "Khmer"), ("hne", "Chhattisgarhi"), ("so", "Somali"), ("ms", "Malay"), ("ceb", "Cebuano"), ), default=0, ), ), ( "exclude_languages", bitfield.models.BitField( ( ("cmn", "Mandarin"), ("es", "Spanish"), ("en", "English"), ("hi", "Hindi"), ("bn", "Bengali"), ("pt", "Portuguese"), ("ru", "Russian"), ("ja", "Japanese"), ("lah", "Western Punjabi"), ("mr", "Marathi"), ("te", "Telugu"), ("wuu", "Wu"), ("tr", "Turkish"), ("ko", "Korean"), ("fr", "French"), ("de", "German"), ("vi", "Vietnamese"), ("ta", "Tamil"), ("yue", "Yue"), ("ur", "Urdu"), ("jv", "Javanese"), ("it", "Italian"), ("egy", "Egyptian Spoken Arabic"), ("gu", "Gujarati"), ("pes", "Iranian Persian"), ("bho", "Bhojpuri"), ("nan", "Min Nan"), ("hak", "Hakka"), ("cjy", "Jinyu"), ("ha", "Hausa"), ("kn", "Kannada"), ("id", "Indonesian"), ("pl", "Polish"), ("yo", "Yoruba"), ("hsn", "Xiang Chinese"), ("ml", "Malayalam"), ("or", "Odia"), ("mai", "Maithili"), ("my", "Burmese"), ("su", "Sunda"), ("mor", "Moroccan Spoken Arabic"), ("uk", "Ukrainian"), ("ig", "Igbo"), ("uzn", "Northern Uzbek"), ("sd", "Sindhi"), ("ro", "Romanian"), ("tl", "Tagalog"), ("nl", "Dutch"), ("gan", "Gan"), ("am", "Amharic"), ("pbu", "Northern Pashto"), ("mag", "Magahi"), ("th", "Thai"), ("skr", "Saraiki"), ("km", "Khmer"), ("hne", "Chhattisgarhi"), ("so", "Somali"), ("ms", "Malay"), ("ceb", "Cebuano"), ), default=0, ), ), ("age_range_start_years", models.PositiveSmallIntegerField(null=True)), ("age_range_start_months", models.PositiveSmallIntegerField(null=True)), ("age_range_start_days", models.PositiveSmallIntegerField(null=True)), ("age_range_end_years", models.PositiveSmallIntegerField(null=True)), ("age_range_end_months", models.PositiveSmallIntegerField(null=True)), ("age_range_end_days", models.PositiveSmallIntegerField(null=True)), ( "gender_specification", models.PositiveSmallIntegerField( choices=[ ("m", "Male"), ("f", "Female"), ("o", "Other"), ("na", "Not answered"), ], null=True, ), ), ( "gestational_age_start", models.PositiveSmallIntegerField( choices=[ (0, "Under 24 weeks"), (1, "24 weeks"), (2, "25 weeks"), (3, "26 weeks"), (4, "27 weeks"), (5, "28 weeks"), (6, "29 weeks"), (7, "30 weeks"), (8, "31 weeks"), (9, "32 weeks"), (10, "33 weeks"), (11, "34 weeks"), (12, "35 weeks"), (13, "36 weeks"), (14, "37 weeks"), (15, "38 weeks"), (16, "39 weeks"), (17, "40 or more weeks"), ], null=True, ), ), ( "gestational_age_end", models.PositiveSmallIntegerField( choices=[ (0, "Under 24 weeks"), (1, "24 weeks"), (2, "25 weeks"), (3, "26 weeks"), (4, "27 weeks"), (5, "28 weeks"), (6, "29 weeks"), (7, "30 weeks"), (8, "31 weeks"), (9, "32 weeks"), (10, "33 weeks"), (11, "34 weeks"), (12, "35 weeks"), (13, "36 weeks"), (14, "37 weeks"), (15, "38 weeks"), (16, "39 weeks"), (17, "40 or more weeks"), ], null=True, ), ), ("gestational_age_include_na", models.BooleanField(default=False)), ( "study", models.OneToOneField( on_delete=django.db.models.deletion.DO_NOTHING, primary_key=True, related_name="eligible_participant_query", serialize=False, to="studies.Study", ), ), ], ) ]
class Migration(migrations.Migration): initial = True dependencies = [ ("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), ), ]