datatracker/ietf/group/migrations/0001_initial.py
Jennifer Richards 6b826fd985
refactor: Purge old migrations and update ci to build on a clean schema (#5431)
* 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
2023-03-28 18:06:07 +09:00

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'),
),
]