* refactor: Remove all existing migrations * refactor: Create clean set of migrations * chore: Skip check_statetype_slugs when DB is not yet populated * fix: Do not cache active_groups_menu on module import * fix: Do not patch timezone awareness out of oidc-provider * refactor: Migrate to create postgres schema, only use pgloader for data * ci: Use migration scripts from feat/pg-migrations branch * Revert "ci: Use migration scripts from feat/pg-migrations branch" This reverts commit c82f64c614241ccede4865a50d494725c8a47c15. * ci: Run check before migrate * fix: Remove redundant migration caused by merge error * chore: Add casts/ALTER TABLEs to eliminate pgloader errors/warnings * chore: Change schema name to match docker image assumptions * chore: Clear out schema so we get a clean start in case of a retry
243 lines
17 KiB
Python
243 lines
17 KiB
Python
# Generated by Django 2.2.28 on 2023-03-20 19:22
|
|
|
|
from django.db import migrations, models
|
|
import django.db.models.deletion
|
|
import django.utils.timezone
|
|
import ietf.name.models
|
|
import ietf.utils.db
|
|
import ietf.utils.models
|
|
import ietf.utils.validators
|
|
import jsonfield.fields
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
initial = True
|
|
|
|
dependencies = [
|
|
('name', '0001_initial'),
|
|
('person', '0001_initial'),
|
|
('doc', '0001_initial'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='Group',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('time', models.DateTimeField(default=django.utils.timezone.now)),
|
|
('name', models.CharField(max_length=80)),
|
|
('description', models.TextField(blank=True)),
|
|
('list_email', models.CharField(blank=True, max_length=64)),
|
|
('list_subscribe', models.CharField(blank=True, max_length=255)),
|
|
('list_archive', models.CharField(blank=True, max_length=255)),
|
|
('comments', models.TextField(blank=True)),
|
|
('meeting_seen_as_area', models.BooleanField(default=False, help_text='For meeting scheduling, should be considered an area meeting, even if the type is WG')),
|
|
('used_roles', jsonfield.fields.JSONField(blank=True, default=[], help_text="Leave an empty list to get the group_type's default used roles", max_length=256)),
|
|
('uses_milestone_dates', models.BooleanField(default=True)),
|
|
('acronym', models.SlugField(max_length=40, unique=True)),
|
|
('charter', ietf.utils.models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='chartered_group', to='doc.Document')),
|
|
('parent', ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='group.Group')),
|
|
('state', ietf.utils.models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='name.GroupStateName')),
|
|
('type', ietf.utils.models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='name.GroupTypeName')),
|
|
('unused_states', models.ManyToManyField(blank=True, help_text='Document states that have been disabled for the group.', to='doc.State')),
|
|
('unused_tags', models.ManyToManyField(blank=True, help_text='Document tags that have been disabled for the group.', to='name.DocTagName')),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='GroupEvent',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('time', models.DateTimeField(default=django.utils.timezone.now, help_text='When the event happened')),
|
|
('type', models.CharField(choices=[('changed_state', 'Changed state'), ('added_comment', 'Added comment'), ('info_changed', 'Changed metadata'), ('requested_close', 'Requested closing group'), ('changed_milestone', 'Changed milestone'), ('sent_notification', 'Sent notification'), ('status_update', 'Status update')], max_length=50)),
|
|
('desc', models.TextField()),
|
|
('by', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')),
|
|
('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')),
|
|
],
|
|
options={
|
|
'ordering': ['-time', 'id'],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='GroupHistory',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('time', models.DateTimeField(default=django.utils.timezone.now)),
|
|
('name', models.CharField(max_length=80)),
|
|
('description', models.TextField(blank=True)),
|
|
('list_email', models.CharField(blank=True, max_length=64)),
|
|
('list_subscribe', models.CharField(blank=True, max_length=255)),
|
|
('list_archive', models.CharField(blank=True, max_length=255)),
|
|
('comments', models.TextField(blank=True)),
|
|
('meeting_seen_as_area', models.BooleanField(default=False, help_text='For meeting scheduling, should be considered an area meeting, even if the type is WG')),
|
|
('used_roles', jsonfield.fields.JSONField(blank=True, default=[], help_text="Leave an empty list to get the group_type's default used roles", max_length=256)),
|
|
('uses_milestone_dates', models.BooleanField(default=True)),
|
|
('acronym', models.CharField(max_length=40)),
|
|
('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='history_set', to='group.Group')),
|
|
('parent', ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='group.Group')),
|
|
('state', ietf.utils.models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='name.GroupStateName')),
|
|
('type', ietf.utils.models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='name.GroupTypeName')),
|
|
('unused_states', models.ManyToManyField(blank=True, help_text='Document states that have been disabled for the group.', to='doc.State')),
|
|
('unused_tags', models.ManyToManyField(blank=True, help_text='Document tags that have been disabled for the group.', to='name.DocTagName')),
|
|
],
|
|
options={
|
|
'verbose_name_plural': 'group histories',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='GroupMilestone',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('desc', models.CharField(max_length=500, verbose_name='Description')),
|
|
('due', models.DateField(blank=True, null=True)),
|
|
('order', models.IntegerField(blank=True, null=True)),
|
|
('resolved', models.CharField(blank=True, help_text='Explanation of why milestone is resolved (usually "Done"), or empty if still due.', max_length=50)),
|
|
('time', models.DateTimeField(auto_now=True)),
|
|
('docs', models.ManyToManyField(blank=True, to='doc.Document')),
|
|
('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')),
|
|
('state', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.GroupMilestoneStateName')),
|
|
],
|
|
options={
|
|
'ordering': ['order', 'due', 'id'],
|
|
'abstract': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='ChangeStateGroupEvent',
|
|
fields=[
|
|
('groupevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='group.GroupEvent')),
|
|
],
|
|
bases=('group.groupevent',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='RoleHistory',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('email', ietf.utils.models.ForeignKey(help_text='Email address used by person for this role.', on_delete=django.db.models.deletion.CASCADE, to='person.Email')),
|
|
('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.GroupHistory')),
|
|
('name', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.RoleName')),
|
|
('person', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')),
|
|
],
|
|
options={
|
|
'verbose_name_plural': 'role histories',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='Role',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('email', ietf.utils.models.ForeignKey(help_text='Email address used by person for this role.', on_delete=django.db.models.deletion.CASCADE, to='person.Email')),
|
|
('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')),
|
|
('name', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.RoleName')),
|
|
('person', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')),
|
|
],
|
|
options={
|
|
'ordering': ['name_id'],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='GroupURL',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('name', models.CharField(max_length=255)),
|
|
('url', models.URLField()),
|
|
('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')),
|
|
],
|
|
),
|
|
migrations.CreateModel(
|
|
name='GroupStateTransitions',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')),
|
|
('next_states', models.ManyToManyField(related_name='previous_groupstatetransitions_states', to='doc.State')),
|
|
('state', ietf.utils.models.ForeignKey(help_text='State for which the next states should be overridden', on_delete=django.db.models.deletion.CASCADE, to='doc.State')),
|
|
],
|
|
),
|
|
migrations.CreateModel(
|
|
name='GroupMilestoneHistory',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('desc', models.CharField(max_length=500, verbose_name='Description')),
|
|
('due', models.DateField(blank=True, null=True)),
|
|
('order', models.IntegerField(blank=True, null=True)),
|
|
('resolved', models.CharField(blank=True, help_text='Explanation of why milestone is resolved (usually "Done"), or empty if still due.', max_length=50)),
|
|
('time', models.DateTimeField()),
|
|
('docs', models.ManyToManyField(blank=True, to='doc.Document')),
|
|
('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')),
|
|
('milestone', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='history_set', to='group.GroupMilestone')),
|
|
('state', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.GroupMilestoneStateName')),
|
|
],
|
|
options={
|
|
'ordering': ['order', 'due', 'id'],
|
|
'abstract': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='GroupFeatures',
|
|
fields=[
|
|
('type', ietf.utils.models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, primary_key=True, related_name='features', serialize=False, to='name.GroupTypeName')),
|
|
('need_parent', models.BooleanField(default=False, help_text='Does this group type require a parent group?', verbose_name='Need Parent')),
|
|
('default_parent', models.CharField(blank=True, default='', help_text='Default parent group acronym for this group type', max_length=40, verbose_name='Default Parent')),
|
|
('has_milestones', models.BooleanField(default=False, verbose_name='Milestones')),
|
|
('has_chartering_process', models.BooleanField(default=False, verbose_name='Chartering')),
|
|
('has_documents', models.BooleanField(default=False, verbose_name='Documents')),
|
|
('has_session_materials', models.BooleanField(default=False, verbose_name='Sess Matrl.')),
|
|
('has_nonsession_materials', models.BooleanField(default=False, verbose_name='Other Matrl.')),
|
|
('has_meetings', models.BooleanField(default=False, verbose_name='Meetings')),
|
|
('has_reviews', models.BooleanField(default=False, verbose_name='Reviews')),
|
|
('has_default_chat', models.BooleanField(default=False, verbose_name='Chat')),
|
|
('acts_like_wg', models.BooleanField(default=False, verbose_name='WG-Like')),
|
|
('create_wiki', models.BooleanField(default=False, verbose_name='Wiki')),
|
|
('custom_group_roles', models.BooleanField(default=False, verbose_name='Cust. Roles')),
|
|
('customize_workflow', models.BooleanField(default=False, verbose_name='Workflow')),
|
|
('is_schedulable', models.BooleanField(default=False, verbose_name='Schedulable')),
|
|
('show_on_agenda', models.BooleanField(default=False, verbose_name='On Agenda')),
|
|
('req_subm_approval', models.BooleanField(default=False, verbose_name='Subm. Approval')),
|
|
('about_page', models.CharField(default='ietf.group.views.group_about', max_length=64)),
|
|
('default_tab', models.CharField(default='ietf.group.views.group_about', max_length=64)),
|
|
('material_types', ietf.utils.db.IETFJSONField(default=['slides'], max_length=64)),
|
|
('default_used_roles', ietf.utils.db.IETFJSONField(default=[], max_length=256)),
|
|
('admin_roles', ietf.utils.db.IETFJSONField(default=['chair'], max_length=64)),
|
|
('docman_roles', ietf.utils.db.IETFJSONField(default=['ad', 'chair', 'delegate', 'secr'], max_length=128)),
|
|
('groupman_roles', ietf.utils.db.IETFJSONField(default=['ad', 'chair'], max_length=128)),
|
|
('groupman_authroles', ietf.utils.db.IETFJSONField(default=['Secretariat'], max_length=128)),
|
|
('matman_roles', ietf.utils.db.IETFJSONField(default=['ad', 'chair', 'delegate', 'secr'], max_length=128)),
|
|
('role_order', ietf.utils.db.IETFJSONField(default=['chair', 'secr', 'member'], help_text='The order in which roles are shown, for instance on photo pages. Enter valid JSON.', max_length=128)),
|
|
('session_purposes', ietf.utils.db.IETFJSONField(default=[], help_text='Allowed session purposes for this group type', max_length=256, validators=[ietf.utils.validators.JSONForeignKeyListValidator(ietf.name.models.SessionPurposeName)])),
|
|
('agenda_filter_type', models.ForeignKey(default='none', on_delete=django.db.models.deletion.PROTECT, to='name.AgendaFilterTypeName')),
|
|
('agenda_type', models.ForeignKey(default='ietf', null=True, on_delete=django.db.models.deletion.CASCADE, to='name.AgendaTypeName')),
|
|
('parent_types', models.ManyToManyField(blank=True, help_text='Group types allowed as parent of this group type', related_name='child_features', to='name.GroupTypeName')),
|
|
],
|
|
),
|
|
migrations.CreateModel(
|
|
name='GroupExtResource',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('display_name', models.CharField(blank=True, default='', max_length=255)),
|
|
('value', models.CharField(max_length=2083)),
|
|
('group', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.Group')),
|
|
('name', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.ExtResourceName')),
|
|
],
|
|
),
|
|
migrations.CreateModel(
|
|
name='MilestoneGroupEvent',
|
|
fields=[
|
|
('groupevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='group.GroupEvent')),
|
|
('milestone', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='group.GroupMilestone')),
|
|
],
|
|
bases=('group.groupevent',),
|
|
),
|
|
migrations.AddIndex(
|
|
model_name='groupevent',
|
|
index=models.Index(fields=['-time', '-id'], name='group_group_time_ee7c7c_idx'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='changestategroupevent',
|
|
name='state',
|
|
field=ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.GroupStateName'),
|
|
),
|
|
]
|