mirror of
https://github.com/zulip/zulip.git
synced 2025-11-06 15:03:34 +00:00
migrations: Remove squashed migration files.
This commit is contained in:
@@ -1,509 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
import bitfield.models
|
||||
import django.db.models.deletion
|
||||
import django.utils.timezone
|
||||
from django.conf import settings
|
||||
import zerver.models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('auth', '0001_initial'),
|
||||
]
|
||||
|
||||
if "postgres" not in settings.DATABASES["default"]["ENGINE"]:
|
||||
zulip_postgres_migrations = [] # type: ignore # https://github.com/JukkaL/mypy/issues/1164
|
||||
else:
|
||||
zulip_postgres_migrations = [
|
||||
# Full-text search
|
||||
migrations.RunSQL("""
|
||||
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;
|
||||
|
||||
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(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('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(unique=True, max_length=75, db_index=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(default='G', max_length=1, choices=[('G', 'Hosted by Gravatar'), ('U', 'Uploaded by user'), ('S', 'System generated')])),
|
||||
('tutorial_status', models.CharField(default='W', max_length=1, choices=[('W', 'Waiting'), ('S', 'Started'), ('F', 'Finished')])),
|
||||
('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(on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL, null=True)),
|
||||
],
|
||||
options={
|
||||
'abstract': False,
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='AppleDeviceToken',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('token', models.CharField(unique=True, max_length=255)),
|
||||
('last_updated', models.DateTimeField(default=django.utils.timezone.now, auto_now=True)),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Client',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('name', models.CharField(unique=True, max_length=30, db_index=True)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='DefaultStream',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Huddle',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('huddle_hash', models.CharField(unique=True, max_length=40, db_index=True)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Message',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('subject', models.CharField(max_length=60, db_index=True)),
|
||||
('content', models.TextField()),
|
||||
('rendered_content', models.TextField(null=True)),
|
||||
('rendered_content_version', models.IntegerField(null=True)),
|
||||
('pub_date', models.DateTimeField(verbose_name='date published', db_index=True)),
|
||||
('last_edit_time', models.DateTimeField(null=True)),
|
||||
('edit_history', models.TextField(null=True)),
|
||||
('has_attachment', models.BooleanField(default=False, db_index=True)),
|
||||
('has_image', models.BooleanField(default=False, db_index=True)),
|
||||
('has_link', models.BooleanField(default=False, db_index=True)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='MitUser',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('email', models.EmailField(unique=True, max_length=75)),
|
||||
('status', models.IntegerField(default=0)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='PreregistrationUser',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('email', models.EmailField(max_length=75)),
|
||||
('invited_at', models.DateTimeField(auto_now=True)),
|
||||
('status', models.IntegerField(default=0)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='PushDeviceToken',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('kind', models.PositiveSmallIntegerField(choices=[(1, 'apns'), (2, 'gcm')])),
|
||||
('token', models.CharField(unique=True, max_length=4096)),
|
||||
('last_updated', models.DateTimeField(default=django.utils.timezone.now, auto_now=True)),
|
||||
('ios_app_id', models.TextField(null=True)),
|
||||
('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Realm',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('domain', models.CharField(unique=True, max_length=40, db_index=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'),),
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='RealmAlias',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('domain', models.CharField(unique=True, max_length=80, db_index=True)),
|
||||
('realm', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Realm', null=True)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='RealmEmoji',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('name', models.TextField()),
|
||||
('img_url', models.TextField()),
|
||||
('realm', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Realm')),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='RealmFilter',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('pattern', models.TextField()),
|
||||
('url_format_string', models.TextField()),
|
||||
('realm', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Realm')),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Recipient',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('type_id', models.IntegerField(db_index=True)),
|
||||
('type', models.PositiveSmallIntegerField(db_index=True)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Referral',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('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)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ScheduledJob',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('scheduled_timestamp', models.DateTimeField()),
|
||||
('type', models.PositiveSmallIntegerField()),
|
||||
('data', models.TextField()),
|
||||
('filter_id', models.IntegerField(null=True)),
|
||||
('filter_string', models.CharField(max_length=100)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Stream',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('name', models.CharField(max_length=60, db_index=True)),
|
||||
('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')),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='StreamColor',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('color', models.CharField(max_length=10)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Subscription',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('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)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='UserActivity',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('query', models.CharField(max_length=50, db_index=True)),
|
||||
('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)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='UserActivityInterval',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('start', models.DateTimeField(verbose_name='start time', db_index=True)),
|
||||
('end', models.DateTimeField(verbose_name='end time', db_index=True)),
|
||||
('user_profile', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='UserMessage',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('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)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.Model,),
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='UserPresence',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('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)),
|
||||
],
|
||||
options={
|
||||
},
|
||||
bases=(models.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.AddField(
|
||||
model_name='streamcolor',
|
||||
name='subscription',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Subscription'),
|
||||
preserve_default=True,
|
||||
),
|
||||
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(on_delete=django.db.models.deletion.CASCADE, related_name='+', blank=True, to='zerver.Stream', null=True),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='preregistrationuser',
|
||||
name='realm',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Realm', null=True),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='preregistrationuser',
|
||||
name='referred_by',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, null=True),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='preregistrationuser',
|
||||
name='streams',
|
||||
field=models.ManyToManyField(to='zerver.Stream', null=True),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='message',
|
||||
name='recipient',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Recipient'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='message',
|
||||
name='sender',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='message',
|
||||
name='sending_client',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Client'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='defaultstream',
|
||||
name='realm',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Realm'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='defaultstream',
|
||||
name='stream',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Stream'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='defaultstream',
|
||||
unique_together=set([('realm', 'stream')]),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='userprofile',
|
||||
name='default_events_register_stream',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='zerver.Stream', null=True),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='userprofile',
|
||||
name='default_sending_stream',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='+', to='zerver.Stream', null=True),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='userprofile',
|
||||
name='groups',
|
||||
field=models.ManyToManyField(related_query_name='user', related_name='user_set', to='auth.Group', blank=True, help_text='The groups this user belongs to. A user will get all permissions granted to each of their groups.', verbose_name='groups'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='userprofile',
|
||||
name='realm',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='zerver.Realm'),
|
||||
preserve_default=True,
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='userprofile',
|
||||
name='user_permissions',
|
||||
field=models.ManyToManyField(related_query_name='user', related_name='user_set', to='auth.Permission', blank=True, help_text='Specific permissions for this user.', verbose_name='user permissions'),
|
||||
preserve_default=True,
|
||||
),
|
||||
] + zulip_postgres_migrations
|
||||
@@ -1,61 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
import django.contrib.auth.models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelManagers(
|
||||
name='userprofile',
|
||||
managers=[
|
||||
('objects', django.contrib.auth.models.UserManager()),
|
||||
],
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='appledevicetoken',
|
||||
name='last_updated',
|
||||
field=models.DateTimeField(auto_now=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='mituser',
|
||||
name='email',
|
||||
field=models.EmailField(unique=True, max_length=254),
|
||||
),
|
||||
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(unique=True, max_length=254, db_index=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='userprofile',
|
||||
name='last_login',
|
||||
field=models.DateTimeField(null=True, verbose_name='last login', blank=True),
|
||||
),
|
||||
]
|
||||
@@ -1,18 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0002_django_1_8'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunSQL("CREATE INDEX upper_subject_idx ON zerver_message ((upper(subject)));",
|
||||
reverse_sql="DROP INDEX upper_subject_idx;"),
|
||||
migrations.RunSQL("CREATE INDEX upper_stream_name_idx ON zerver_stream ((upper(name)));",
|
||||
reverse_sql="DROP INDEX upper_stream_name_idx;")
|
||||
]
|
||||
@@ -1,19 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0003_custom_indexes'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='userprofile',
|
||||
name='left_side_userlist',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
||||
@@ -1,18 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0004_userprofile_left_side_userlist'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterModelOptions(
|
||||
name='realm',
|
||||
options={'permissions': (('administer', 'Administer a realm'), ('api_super_user', 'Can send messages as other users for mirroring'))},
|
||||
),
|
||||
]
|
||||
@@ -1,16 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0005_auto_20150920_1340'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunSQL("CREATE INDEX upper_userprofile_email_idx ON zerver_userprofile ((upper(email)));",
|
||||
reverse_sql="DROP INDEX upper_userprofile_email_idx;"),
|
||||
]
|
||||
@@ -1,24 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0006_zerver_userprofile_email_upper_idx'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='userprofile',
|
||||
name='is_active',
|
||||
field=models.BooleanField(default=True, db_index=True),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='userprofile',
|
||||
name='is_bot',
|
||||
field=models.BooleanField(default=False, db_index=True),
|
||||
),
|
||||
]
|
||||
@@ -1,16 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0007_userprofile_is_bot_active_indexes'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunSQL("CREATE INDEX upper_preregistration_email_idx ON zerver_preregistrationuser ((upper(email)));",
|
||||
reverse_sql="DROP INDEX upper_preregistration_email_idx;"),
|
||||
]
|
||||
@@ -1,24 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0008_preregistrationuser_upper_email_idx'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
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),
|
||||
),
|
||||
]
|
||||
@@ -1,21 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0009_add_missing_migrations'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='streamcolor',
|
||||
name='subscription',
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='StreamColor',
|
||||
),
|
||||
]
|
||||
@@ -1,114 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db.backends.postgresql_psycopg2.schema import DatabaseSchemaEditor
|
||||
from django.db.migrations.state import StateApps
|
||||
from django.db import models, migrations, connection
|
||||
from django.conf import settings
|
||||
|
||||
# Translate the UserProfile fields back to the old Guardian model
|
||||
def unmigrate_guardian_data(apps, schema_editor):
|
||||
# type: (StateApps, DatabaseSchemaEditor) -> None
|
||||
Permission = apps.get_model('auth', 'Permission')
|
||||
ContentType = apps.get_model('contenttypes', 'ContentType')
|
||||
UserProfile = apps.get_model('zerver', 'UserProfile')
|
||||
|
||||
try:
|
||||
administer = Permission.objects.get(codename="administer")
|
||||
except Permission.DoesNotExist:
|
||||
administer = Permission.objects.create(codename="administer")
|
||||
try:
|
||||
api_super_user = Permission.objects.get(codename="api_super_user")
|
||||
except Permission.DoesNotExist:
|
||||
api_super_user = Permission.objects.create(codename="api_super_user")
|
||||
realm_content_type = ContentType.objects.get(app_label="zerver",
|
||||
model="realm")
|
||||
|
||||
# assign_perm isn't usable inside a migration, so we just directly
|
||||
# create the UserObjectPermission objects
|
||||
UserObjectPermission = apps.get_model('guardian', 'UserObjectPermission')
|
||||
for user_profile in UserProfile.objects.filter(is_realm_admin=True):
|
||||
UserObjectPermission(permission=administer,
|
||||
user_id=user_profile.id,
|
||||
object_pk=user_profile.realm_id,
|
||||
content_type=realm_content_type).save()
|
||||
for user_profile in UserProfile.objects.filter(is_api_super_user=True):
|
||||
UserObjectPermission(permission=api_super_user,
|
||||
user_id=user_profile.id,
|
||||
object_pk=user_profile.realm_id,
|
||||
content_type=realm_content_type).save()
|
||||
|
||||
# Migrate all the guardian data for which users are realm admins or
|
||||
# API super users to the new fields on the UserProfile model
|
||||
def migrate_guardian_data(apps, schema_editor):
|
||||
# type: (StateApps, DatabaseSchemaEditor) -> None
|
||||
Permission = apps.get_model('auth', 'Permission')
|
||||
ContentType = apps.get_model('contenttypes', 'ContentType')
|
||||
UserProfile = apps.get_model('zerver', 'UserProfile')
|
||||
|
||||
try:
|
||||
administer_id = Permission.objects.get(codename="administer").id
|
||||
except Permission.DoesNotExist:
|
||||
administer_id = None
|
||||
try:
|
||||
api_super_user_id = Permission.objects.get(codename="api_super_user").id
|
||||
except Permission.DoesNotExist:
|
||||
api_super_user_id = None
|
||||
|
||||
# If ContentType hasn't been initialized yet, we have a new, clean
|
||||
# database and the below is not needed
|
||||
if ContentType.objects.count() == 0:
|
||||
return
|
||||
|
||||
realm_content_type = ContentType.objects.get(app_label="zerver",
|
||||
model="realm")
|
||||
|
||||
cursor = connection.cursor()
|
||||
cursor.execute("SELECT id, object_pk, content_type_id, permission_id, user_id FROM guardian_userobjectpermission")
|
||||
for row in cursor.fetchall():
|
||||
(row_id, object_pk, content_type_id, permission_id, user_id) = row
|
||||
if content_type_id != realm_content_type.id:
|
||||
raise Exception("Unexected non-realm content type")
|
||||
user_profile = UserProfile.objects.get(id=user_id)
|
||||
if permission_id == administer_id:
|
||||
user_profile.is_realm_admin = True
|
||||
elif permission_id == api_super_user_id:
|
||||
user_profile.is_api_super_user = True
|
||||
else:
|
||||
raise Exception("Unexpected Django permission")
|
||||
user_profile.save()
|
||||
# Set the email gateway bot as an API super user so we can clean
|
||||
# up the old API_SUPER_USERS hack.
|
||||
if settings.EMAIL_GATEWAY_BOT is not None:
|
||||
try:
|
||||
email_gateway_bot = UserProfile.objects.get(email__iexact=settings.EMAIL_GATEWAY_BOT)
|
||||
email_gateway_bot.is_api_super_user = True
|
||||
email_gateway_bot.save()
|
||||
except UserProfile.DoesNotExist:
|
||||
pass
|
||||
|
||||
# Delete the old permissions data in the Guardian tables; this
|
||||
# makes the reverse-migration work safely (otherwise we'd have to
|
||||
# worry about the migrate/unmigrate process racing with a user's
|
||||
# admin permissions being revoked).
|
||||
cursor.execute("DELETE FROM guardian_userobjectpermission")
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0010_delete_streamcolor'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='userprofile',
|
||||
name='is_api_super_user',
|
||||
field=models.BooleanField(default=False, db_index=True),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='userprofile',
|
||||
name='is_realm_admin',
|
||||
field=models.BooleanField(default=False, db_index=True),
|
||||
),
|
||||
migrations.RunPython(migrate_guardian_data, unmigrate_guardian_data),
|
||||
]
|
||||
@@ -1,21 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0011_remove_guardian'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='appledevicetoken',
|
||||
name='user',
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='AppleDeviceToken',
|
||||
),
|
||||
]
|
||||
@@ -1,25 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
import django.core.validators
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0012_remove_appledevicetoken'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
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.\\-_]+(?<![.\\-_])$')]),
|
||||
),
|
||||
]
|
||||
@@ -1,19 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0013_realmemoji'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='realmemoji',
|
||||
name='img_url',
|
||||
field=models.URLField(max_length=1000),
|
||||
),
|
||||
]
|
||||
@@ -1,27 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
import django.utils.timezone
|
||||
from django.conf import settings
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0014_realm_emoji_url_length'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Attachment',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('file_name', models.CharField(max_length=100, db_index=True)),
|
||||
('path_id', models.TextField(db_index=True)),
|
||||
('create_time', models.DateTimeField(default=django.utils.timezone.now, db_index=True)),
|
||||
('messages', models.ManyToManyField(to='zerver.Message')),
|
||||
('owner', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
]
|
||||
@@ -1,19 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0015_attachment'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='realm',
|
||||
name='create_stream_by_admins_only',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
||||
@@ -1,19 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0016_realm_create_stream_by_admins_only'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='userprofile',
|
||||
name='bot_type',
|
||||
field=models.PositiveSmallIntegerField(null=True, db_index=True),
|
||||
),
|
||||
]
|
||||
@@ -1,20 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
import django.core.validators
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0017_userprofile_bot_type'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
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.\\-_]+(?<![.\\-_])$', message='Invalid characters in emoji name')]),
|
||||
),
|
||||
]
|
||||
@@ -1,19 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0018_realm_emoji_message'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='preregistrationuser',
|
||||
name='realm_creation',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
||||
@@ -1,25 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0019_preregistrationuser_realm_creation'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='attachment',
|
||||
name='is_realm_public',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='attachment',
|
||||
name='realm',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, blank=True, to='zerver.Realm', null=True),
|
||||
),
|
||||
]
|
||||
@@ -1,36 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
from django.db.backends.postgresql_psycopg2.schema import DatabaseSchemaEditor
|
||||
from django.db.migrations.state import StateApps
|
||||
from django.conf import settings
|
||||
|
||||
def migrate_existing_data(apps, schema_editor):
|
||||
# type: (StateApps, DatabaseSchemaEditor) -> None
|
||||
Attachment = apps.get_model('zerver', 'Attachment')
|
||||
Recipient = apps.get_model('zerver', 'Recipient')
|
||||
Stream = apps.get_model('zerver', 'Stream')
|
||||
|
||||
attachments = Attachment.objects.all()
|
||||
for entry in attachments:
|
||||
owner = entry.owner
|
||||
entry.realm = owner.realm
|
||||
for message in entry.messages.all():
|
||||
if owner == message.sender:
|
||||
if message.recipient.type == Recipient.STREAM:
|
||||
stream = Stream.objects.get(id=message.recipient.type_id)
|
||||
is_realm_public = not stream.realm.is_zephyr_mirror_realm and not stream.invite_only
|
||||
entry.is_realm_public = entry.is_realm_public or is_realm_public
|
||||
|
||||
entry.save()
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0020_add_tracking_attachment'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RunPython(migrate_existing_data)
|
||||
]
|
||||
@@ -1,19 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0021_migrate_attachment_data'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='subscription',
|
||||
name='pin_to_top',
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
]
|
||||
@@ -1,19 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0022_subscription_pin_to_top'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='userprofile',
|
||||
name='default_language',
|
||||
field=models.CharField(default='en', max_length=50),
|
||||
),
|
||||
]
|
||||
@@ -1,19 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0023_userprofile_default_language'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='realm',
|
||||
name='allow_message_editing',
|
||||
field=models.BooleanField(default=True),
|
||||
),
|
||||
]
|
||||
@@ -1,19 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0024_realm_allow_message_editing'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='realm',
|
||||
name='message_content_edit_limit_seconds',
|
||||
field=models.IntegerField(default=600),
|
||||
),
|
||||
]
|
||||
@@ -1,17 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0025_realm_message_content_edit_limit'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.DeleteModel(
|
||||
name='MitUser',
|
||||
),
|
||||
]
|
||||
@@ -1,19 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0026_delete_mituser'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='realm',
|
||||
name='default_language',
|
||||
field=models.CharField(default='en', max_length=50),
|
||||
),
|
||||
]
|
||||
@@ -1,19 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('zerver', '0027_realm_default_language'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='userprofile',
|
||||
name='tos_version',
|
||||
field=models.CharField(max_length=10, null=True),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user