* 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
369 lines
22 KiB
Python
369 lines
22 KiB
Python
# Generated by Django 2.2.28 on 2023-03-20 19:22
|
|
|
|
import django.core.validators
|
|
from django.db import migrations, models
|
|
import django.db.models.deletion
|
|
import django.utils.timezone
|
|
import ietf.utils.models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
initial = True
|
|
|
|
dependencies = [
|
|
('name', '0001_initial'),
|
|
('person', '0001_initial'),
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='BallotType',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('slug', models.SlugField()),
|
|
('name', models.CharField(max_length=255)),
|
|
('question', models.TextField(blank=True)),
|
|
('used', models.BooleanField(default=True)),
|
|
('order', models.IntegerField(default=0)),
|
|
],
|
|
options={
|
|
'ordering': ['order'],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='DeletedEvent',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('json', models.TextField(help_text='Deleted object in JSON format, with attribute names chosen to be suitable for passing into the relevant create method.')),
|
|
('time', models.DateTimeField(default=django.utils.timezone.now)),
|
|
],
|
|
),
|
|
migrations.CreateModel(
|
|
name='DocAlias',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('name', models.CharField(max_length=255, unique=True)),
|
|
],
|
|
options={
|
|
'verbose_name': 'document alias',
|
|
'verbose_name_plural': 'document aliases',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='DocEvent',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('time', models.DateTimeField(db_index=True, default=django.utils.timezone.now, help_text='When the event happened')),
|
|
('type', models.CharField(choices=[('new_revision', 'Added new revision'), ('new_submission', 'Uploaded new revision'), ('changed_document', 'Changed document metadata'), ('added_comment', 'Added comment'), ('added_message', 'Added message'), ('edited_authors', 'Edited the documents author list'), ('deleted', 'Deleted document'), ('changed_state', 'Changed state'), ('changed_stream', 'Changed document stream'), ('expired_document', 'Expired document'), ('extended_expiry', 'Extended expiry of document'), ('requested_resurrect', 'Requested resurrect'), ('completed_resurrect', 'Completed resurrect'), ('changed_consensus', 'Changed consensus'), ('published_rfc', 'Published RFC'), ('added_suggested_replaces', 'Added suggested replacement relationships'), ('reviewed_suggested_replaces', 'Reviewed suggested replacement relationships'), ('changed_action_holders', 'Changed action holders for document'), ('changed_group', 'Changed group'), ('changed_protocol_writeup', 'Changed protocol writeup'), ('changed_charter_milestone', 'Changed charter milestone'), ('initial_review', 'Set initial review time'), ('changed_review_announcement', 'Changed WG Review text'), ('changed_action_announcement', 'Changed WG Action text'), ('started_iesg_process', 'Started IESG process on document'), ('created_ballot', 'Created ballot'), ('closed_ballot', 'Closed ballot'), ('sent_ballot_announcement', 'Sent ballot announcement'), ('changed_ballot_position', 'Changed ballot position'), ('changed_ballot_approval_text', 'Changed ballot approval text'), ('changed_ballot_writeup_text', 'Changed ballot writeup text'), ('changed_rfc_editor_note_text', 'Changed RFC Editor Note text'), ('changed_last_call_text', 'Changed last call text'), ('requested_last_call', 'Requested last call'), ('sent_last_call', 'Sent last call'), ('scheduled_for_telechat', 'Scheduled for telechat'), ('iesg_approved', 'IESG approved document (no problem)'), ('iesg_disapproved', 'IESG disapproved document (do not publish)'), ('approved_in_minute', 'Approved in minute'), ('iana_review', 'IANA review comment'), ('rfc_in_iana_registry', 'RFC is in IANA registry'), ('rfc_editor_received_announcement', 'Announcement was received by RFC Editor'), ('requested_publication', 'Publication at RFC Editor requested'), ('sync_from_rfc_editor', 'Received updated information from RFC Editor'), ('requested_review', 'Requested review'), ('assigned_review_request', 'Assigned review request'), ('closed_review_request', 'Closed review request'), ('closed_review_assignment', 'Closed review assignment'), ('downref_approved', 'Downref approved'), ('posted_related_ipr', 'Posted related IPR'), ('removed_related_ipr', 'Removed related IPR'), ('changed_editors', 'Changed BOF Request editors')], max_length=50)),
|
|
('rev', models.CharField(blank=True, max_length=16, null=True, verbose_name='revision')),
|
|
('desc', models.TextField()),
|
|
],
|
|
options={
|
|
'ordering': ['-time', '-id'],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='DocExtResource',
|
|
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)),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='DocHistory',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('time', models.DateTimeField(default=django.utils.timezone.now)),
|
|
('title', models.CharField(max_length=255, validators=[django.core.validators.RegexValidator(message='Please enter a string without control characters.', regex='^[^\x00-\x1f]*$')])),
|
|
('abstract', models.TextField(blank=True)),
|
|
('rev', models.CharField(blank=True, max_length=16, verbose_name='revision')),
|
|
('pages', models.IntegerField(blank=True, null=True)),
|
|
('words', models.IntegerField(blank=True, null=True)),
|
|
('order', models.IntegerField(blank=True, default=1)),
|
|
('expires', models.DateTimeField(blank=True, null=True)),
|
|
('notify', models.TextField(blank=True, max_length=1023)),
|
|
('external_url', models.URLField(blank=True)),
|
|
('uploaded_filename', models.TextField(blank=True)),
|
|
('note', models.TextField(blank=True)),
|
|
('internal_comments', models.TextField(blank=True)),
|
|
('name', models.CharField(max_length=255)),
|
|
],
|
|
options={
|
|
'verbose_name': 'document history',
|
|
'verbose_name_plural': 'document histories',
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='DocHistoryAuthor',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('affiliation', models.CharField(blank=True, help_text='Organization/company used by author for submission', max_length=100)),
|
|
('country', models.CharField(blank=True, help_text='Country used by author for submission', max_length=255)),
|
|
('order', models.IntegerField(default=1)),
|
|
],
|
|
options={
|
|
'ordering': ['document', 'order'],
|
|
'abstract': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='DocReminder',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('due', models.DateTimeField()),
|
|
('active', models.BooleanField(default=True)),
|
|
],
|
|
),
|
|
migrations.CreateModel(
|
|
name='Document',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('time', models.DateTimeField(default=django.utils.timezone.now)),
|
|
('title', models.CharField(max_length=255, validators=[django.core.validators.RegexValidator(message='Please enter a string without control characters.', regex='^[^\x00-\x1f]*$')])),
|
|
('abstract', models.TextField(blank=True)),
|
|
('rev', models.CharField(blank=True, max_length=16, verbose_name='revision')),
|
|
('pages', models.IntegerField(blank=True, null=True)),
|
|
('words', models.IntegerField(blank=True, null=True)),
|
|
('order', models.IntegerField(blank=True, default=1)),
|
|
('expires', models.DateTimeField(blank=True, null=True)),
|
|
('notify', models.TextField(blank=True, max_length=1023)),
|
|
('external_url', models.URLField(blank=True)),
|
|
('uploaded_filename', models.TextField(blank=True)),
|
|
('note', models.TextField(blank=True)),
|
|
('internal_comments', models.TextField(blank=True)),
|
|
('name', models.CharField(max_length=255, unique=True, validators=[django.core.validators.RegexValidator('^[-a-z0-9]+$', 'Provide a valid document name consisting of lowercase letters, numbers and hyphens.', 'invalid')])),
|
|
],
|
|
options={
|
|
'abstract': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='StateType',
|
|
fields=[
|
|
('slug', models.CharField(max_length=30, primary_key=True, serialize=False)),
|
|
('label', models.CharField(help_text='Label that should be used (e.g. in admin) for state drop-down for this type of state', max_length=255)),
|
|
],
|
|
),
|
|
migrations.CreateModel(
|
|
name='AddedMessageEvent',
|
|
fields=[
|
|
('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')),
|
|
('msgtype', models.CharField(max_length=25)),
|
|
],
|
|
bases=('doc.docevent',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='BallotDocEvent',
|
|
fields=[
|
|
('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')),
|
|
],
|
|
bases=('doc.docevent',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='BallotPositionDocEvent',
|
|
fields=[
|
|
('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')),
|
|
('discuss', models.TextField(blank=True, help_text='Discuss text if position is discuss')),
|
|
('discuss_time', models.DateTimeField(blank=True, help_text='Time discuss text was written', null=True)),
|
|
('comment', models.TextField(blank=True, help_text='Optional comment')),
|
|
('comment_time', models.DateTimeField(blank=True, help_text='Time optional comment was written', null=True)),
|
|
('send_email', models.BooleanField(default=None, null=True)),
|
|
],
|
|
bases=('doc.docevent',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='BofreqEditorDocEvent',
|
|
fields=[
|
|
('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')),
|
|
],
|
|
bases=('doc.docevent',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='BofreqResponsibleDocEvent',
|
|
fields=[
|
|
('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')),
|
|
],
|
|
bases=('doc.docevent',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='ConsensusDocEvent',
|
|
fields=[
|
|
('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')),
|
|
('consensus', models.BooleanField(default=None, null=True)),
|
|
],
|
|
bases=('doc.docevent',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='EditedAuthorsDocEvent',
|
|
fields=[
|
|
('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')),
|
|
('basis', models.CharField(help_text='What is the source or reasoning for the changes to the author list', max_length=255)),
|
|
],
|
|
bases=('doc.docevent',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='IanaExpertDocEvent',
|
|
fields=[
|
|
('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')),
|
|
],
|
|
bases=('doc.docevent',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='InitialReviewDocEvent',
|
|
fields=[
|
|
('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')),
|
|
('expires', models.DateTimeField(blank=True, null=True)),
|
|
],
|
|
bases=('doc.docevent',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='LastCallDocEvent',
|
|
fields=[
|
|
('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')),
|
|
('expires', models.DateTimeField(blank=True, null=True)),
|
|
],
|
|
bases=('doc.docevent',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='NewRevisionDocEvent',
|
|
fields=[
|
|
('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')),
|
|
],
|
|
bases=('doc.docevent',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='ReviewAssignmentDocEvent',
|
|
fields=[
|
|
('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')),
|
|
],
|
|
bases=('doc.docevent',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='ReviewRequestDocEvent',
|
|
fields=[
|
|
('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')),
|
|
],
|
|
bases=('doc.docevent',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='StateDocEvent',
|
|
fields=[
|
|
('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')),
|
|
],
|
|
bases=('doc.docevent',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='SubmissionDocEvent',
|
|
fields=[
|
|
('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')),
|
|
],
|
|
bases=('doc.docevent',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='TelechatDocEvent',
|
|
fields=[
|
|
('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')),
|
|
('telechat_date', models.DateField(blank=True, null=True)),
|
|
('returning_item', models.BooleanField(default=False)),
|
|
],
|
|
bases=('doc.docevent',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='WriteupDocEvent',
|
|
fields=[
|
|
('docevent_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='doc.DocEvent')),
|
|
('text', models.TextField(blank=True)),
|
|
],
|
|
bases=('doc.docevent',),
|
|
),
|
|
migrations.CreateModel(
|
|
name='State',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('slug', models.SlugField()),
|
|
('name', models.CharField(max_length=255)),
|
|
('used', models.BooleanField(default=True)),
|
|
('desc', models.TextField(blank=True)),
|
|
('order', models.IntegerField(default=0)),
|
|
('next_states', models.ManyToManyField(blank=True, related_name='previous_states', to='doc.State')),
|
|
('type', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='doc.StateType')),
|
|
],
|
|
options={
|
|
'ordering': ['type', 'order'],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='RelatedDocument',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('relationship', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.DocRelationshipName')),
|
|
('source', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='doc.Document')),
|
|
('target', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='doc.DocAlias')),
|
|
],
|
|
),
|
|
migrations.CreateModel(
|
|
name='RelatedDocHistory',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('relationship', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.DocRelationshipName')),
|
|
('source', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='doc.DocHistory')),
|
|
('target', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='reversely_related_document_history_set', to='doc.DocAlias')),
|
|
],
|
|
),
|
|
migrations.CreateModel(
|
|
name='DocumentURL',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('desc', models.CharField(blank=True, default='', max_length=255)),
|
|
('url', models.URLField(max_length=2083)),
|
|
('doc', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='doc.Document')),
|
|
('tag', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='name.DocUrlTagName')),
|
|
],
|
|
),
|
|
migrations.CreateModel(
|
|
name='DocumentAuthor',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('affiliation', models.CharField(blank=True, help_text='Organization/company used by author for submission', max_length=100)),
|
|
('country', models.CharField(blank=True, help_text='Country used by author for submission', max_length=255)),
|
|
('order', models.IntegerField(default=1)),
|
|
('document', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='doc.Document')),
|
|
('email', ietf.utils.models.ForeignKey(blank=True, help_text='Email address used by author for submission', null=True, on_delete=django.db.models.deletion.CASCADE, to='person.Email')),
|
|
('person', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')),
|
|
],
|
|
options={
|
|
'ordering': ['document', 'order'],
|
|
'abstract': False,
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='DocumentActionHolder',
|
|
fields=[
|
|
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
|
('time_added', models.DateTimeField(default=django.utils.timezone.now)),
|
|
('document', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='doc.Document')),
|
|
('person', ietf.utils.models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='person.Person')),
|
|
],
|
|
),
|
|
migrations.AddField(
|
|
model_name='document',
|
|
name='action_holders',
|
|
field=models.ManyToManyField(blank=True, through='doc.DocumentActionHolder', to='person.Person'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='document',
|
|
name='ad',
|
|
field=ietf.utils.models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='ad_document_set', to='person.Person', verbose_name='area director'),
|
|
),
|
|
migrations.AddField(
|
|
model_name='document',
|
|
name='formal_languages',
|
|
field=models.ManyToManyField(blank=True, help_text='Formal languages used in document', to='name.FormalLanguageName'),
|
|
),
|
|
]
|