diff options
author | Stephen Finucane <stephen@that.guru> | 2020-04-10 12:08:32 +0100 |
---|---|---|
committer | Stephen Finucane <stephen@that.guru> | 2020-04-26 13:56:38 +0100 |
commit | 9bb5caec4180f70f0d941580553994d7e36ca6f9 (patch) | |
tree | ebfbc1b97d50d1a4d26ae2a10bf9e72fafc6287d | |
parent | 0910f9771113b7b6228b745ba9a74bd77f9b68ea (diff) | |
download | patchwork-9bb5caec4180f70f0d941580553994d7e36ca6f9.tar patchwork-9bb5caec4180f70f0d941580553994d7e36ca6f9.tar.gz |
migrations: Squash 0001 to 0040
Now that we're moving a new major version, we can squash the migrations
we have to date. This coexists alongside the old migrations, which we
can remove and replace entirely when we release 4.0, per the advice of
the 'squashmigrations' tool.
You should commit this migration but leave the old ones in place; the
new migration will be used for new installs. Once you are sure all
instances of the codebase have applied the migrations you squashed,
you can delete them.
The 'squashmigrations' tool can't parse the output of 'RunPython' blocks
so the output of the tool was less optimized than it could be. As a
result, we've manually modified this change to remove the 'RunPython'
block and unnecessary 'AlterField' entries. This was done by removing
all migrations and generating a new "initial" migration, which was then
modified to mark all strings as byte strings (as they were when we were
using Python 2 to generate these migrations) so that 0041 would apply
cleanly.
The main benefit of this change is that it significantly reduces the
startup time for unit tests. Executed on my host, the run time for a
single test goes from ~ 22 seconds to ~ 14 seconds. This is obviously
reduced for additional tests.
Signed-off-by: Stephen Finucane <stephen@that.guru>
-rw-r--r-- | migrations/0001_squashed_0040_add_related_patches.py | 1097 |
1 files changed, 1097 insertions, 0 deletions
diff --git a/migrations/0001_squashed_0040_add_related_patches.py b/migrations/0001_squashed_0040_add_related_patches.py new file mode 100644 index 0000000..e07804f --- /dev/null +++ b/migrations/0001_squashed_0040_add_related_patches.py @@ -0,0 +1,1097 @@ +import datetime + +from django.conf import settings +from django.db import migrations, models +import django.db.migrations.operations.special +import django.db.models.deletion + +import patchwork.fields +import patchwork.models + + +class Migration(migrations.Migration): + + replaces = [ + ('patchwork', '0001_initial'), + ('patchwork', '0002_fix_patch_state_default_values'), + ('patchwork', '0003_add_check_model'), + ('patchwork', '0004_add_delegation_rule_model'), + ('patchwork', '0005_unselectable_maintainer_projects'), + ('patchwork', '0006_add_patch_diff'), + ('patchwork', '0007_move_comment_content_to_patch_content'), + ('patchwork', '0008_add_email_mixin'), + ('patchwork', '0009_add_submission_model'), + ('patchwork', '0010_migrate_data_from_submission_to_patch'), + ('patchwork', '0011_remove_temp_fields'), + ('patchwork', '0012_add_coverletter_model'), + ('patchwork', '0013_slug_check_context'), + ('patchwork', '0014_remove_userprofile_primary_project'), + ('patchwork', '0015_add_series_models'), + ('patchwork', '0016_series_project'), + ('patchwork', '0017_improved_delegation_rule_docs'), + ('patchwork', '0018_add_event_model'), + ('patchwork', '0019_userprofile_show_ids'), + ('patchwork', '0020_tag_show_column'), + ('patchwork', '0021_django_1_10_fixes'), + ('patchwork', '0022_add_subject_match_to_project'), + ('patchwork', '0023_timezone_unify'), + ('patchwork', '0024_patch_patch_project'), + ('patchwork', '0025_add_regex_validators'), + ('patchwork', '0026_add_user_bundles_backref'), + ('patchwork', '0027_remove_series_ordering'), + ('patchwork', '0028_add_comment_date_index'), + ('patchwork', '0029_add_list_covering_index'), + ('patchwork', '0030_add_submission_covering_index'), + ('patchwork', '0031_add_patch_series_fields'), + ('patchwork', '0032_migrate_data_from_series_patch_to_patch'), + ('patchwork', '0033_remove_patch_series_model'), + ('patchwork', '0034_project_list_archive_url'), + ('patchwork', '0035_project_list_archive_url_format'), + ('patchwork', '0036_project_commit_url_format'), + ('patchwork', '0037_event_actor'), + ('patchwork', '0038_state_slug'), + ('patchwork', '0039_unique_series_references'), + ('patchwork', '0040_add_related_patches'), + ] + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ] + + operations = [ + migrations.CreateModel( + name='Bundle', + fields=[ + ( + 'id', + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID', + ), + ), + ('name', models.CharField(max_length=50)), + ('public', models.BooleanField(default=False)), + ( + 'owner', + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name='bundles', + related_query_name='bundle', + to=settings.AUTH_USER_MODEL, + ), + ), + ], + ), + migrations.CreateModel( + name='Check', + fields=[ + ( + 'id', + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID', + ), + ), + ( + 'date', + models.DateTimeField(default=datetime.datetime.utcnow), + ), + ( + 'state', + models.SmallIntegerField( + choices=[ + (0, b'pending'), + (1, b'success'), + (2, b'warning'), + (3, b'fail'), + ], + default=0, + help_text=b'The state of the check.', + ), + ), + ( + 'target_url', + models.URLField( + blank=True, + help_text=b'The target URL to associate with this ' + b'check. This should be specific to the ' + b'patch.', + null=True, + ), + ), + ( + 'description', + models.TextField( + blank=True, + help_text=b'A brief description of the check.', + null=True, + ), + ), + ( + 'context', + models.SlugField( + default='default', + help_text=b'A label to discern check from checks of ' + b'other testing systems.', + max_length=255, + ), + ), + ( + 'user', + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to=settings.AUTH_USER_MODEL, + ), + ), + ], + ), + migrations.CreateModel( + name='EmailOptout', + fields=[ + ( + 'email', + models.CharField( + max_length=200, primary_key=True, serialize=False + ), + ), + ], + ), + migrations.CreateModel( + name='PatchRelation', + fields=[ + ( + 'id', + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID', + ), + ), + ], + ), + migrations.CreateModel( + name='Person', + fields=[ + ( + 'id', + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID', + ), + ), + ('email', models.CharField(max_length=255, unique=True)), + ( + 'name', + models.CharField(blank=True, max_length=255, null=True), + ), + ( + 'user', + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to=settings.AUTH_USER_MODEL, + ), + ), + ], + options={'verbose_name_plural': 'People'}, + ), + migrations.CreateModel( + name='Project', + fields=[ + ( + 'id', + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID', + ), + ), + ('linkname', models.CharField(max_length=255, unique=True)), + ('name', models.CharField(max_length=255, unique=True)), + ('listid', models.CharField(max_length=255)), + ('listemail', models.CharField(max_length=200)), + ( + 'subject_match', + models.CharField( + blank=True, + default='', + help_text=b'Regex to match the subject against if ' + b'only part of emails sent to the list ' + b'belongs to this project. Will be used ' + b'with IGNORECASE and MULTILINE flags. If ' + b'rules for more projects match the first ' + b'one returned from DB is chosen; empty ' + b'field serves as a default for every email ' + b'which has no other match.', + max_length=64, + validators=[patchwork.models.validate_regex_compiles], + ), + ), + ('web_url', models.CharField(blank=True, max_length=2000)), + ('scm_url', models.CharField(blank=True, max_length=2000)), + ('webscm_url', models.CharField(blank=True, max_length=2000)), + ( + 'list_archive_url', + models.CharField(blank=True, max_length=2000), + ), + ( + 'list_archive_url_format', + models.CharField( + blank=True, + help_text=b"URL format for the list archive's " + b"Message-ID redirector. {} will be " + b"replaced by the Message-ID.", + max_length=2000, + ), + ), + ( + 'commit_url_format', + models.CharField( + blank=True, + help_text=b'URL format for a particular commit. {} ' + b'will be replaced by the commit SHA.', + max_length=2000, + ), + ), + ('send_notifications', models.BooleanField(default=False)), + ('use_tags', models.BooleanField(default=True)), + ], + options={ + 'ordering': ['linkname'], + 'unique_together': {('listid', 'subject_match')}, + }, + ), + migrations.CreateModel( + name='Series', + fields=[ + ( + 'id', + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID', + ), + ), + ( + 'name', + models.CharField( + blank=True, + help_text=b'An optional name to associate with the ' + b'series, e.g. "John\'s PCI series".', + max_length=255, + null=True, + ), + ), + ('date', models.DateTimeField()), + ( + 'version', + models.IntegerField( + default=1, + help_text=b'Version of series as indicated by the ' + b'subject prefix(es)', + ), + ), + ( + 'total', + models.IntegerField( + help_text=b'Number of patches in series as indicated ' + b'by the subject prefix(es)' + ), + ), + ( + 'project', + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name='series', + to='patchwork.Project', + ), + ), + ( + 'submitter', + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to='patchwork.Person', + ), + ), + ], + options={'verbose_name_plural': 'Series'}, + bases=(patchwork.models.FilenameMixin, models.Model), + ), + migrations.CreateModel( + name='State', + fields=[ + ( + 'id', + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID', + ), + ), + ('name', models.CharField(max_length=100, unique=True)), + ('slug', models.SlugField(max_length=100, unique=True)), + ('ordering', models.IntegerField(unique=True)), + ('action_required', models.BooleanField(default=True)), + ], + options={'ordering': ['ordering']}, + ), + migrations.CreateModel( + name='Submission', + fields=[ + ( + 'id', + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID', + ), + ), + ('msgid', models.CharField(max_length=255)), + ( + 'date', + models.DateTimeField(default=datetime.datetime.utcnow), + ), + ('headers', models.TextField(blank=True)), + ('content', models.TextField(blank=True, null=True)), + ('name', models.CharField(max_length=255)), + ( + 'project', + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to='patchwork.Project', + ), + ), + ( + 'submitter', + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to='patchwork.Person', + ), + ), + ], + options={'ordering': ['date']}, + bases=(patchwork.models.FilenameMixin, models.Model), + ), + migrations.CreateModel( + name='Tag', + fields=[ + ( + 'id', + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID', + ), + ), + ('name', models.CharField(max_length=20)), + ( + 'pattern', + models.CharField( + help_text=b'A simple regex to match the tag in the ' + b'content of a message. Will be used with ' + b'MULTILINE and IGNORECASE flags. eg. ' + b'^Acked-by:', + max_length=50, + validators=[patchwork.models.validate_regex_compiles], + ), + ), + ( + 'abbrev', + models.CharField( + help_text=b'Short (one-or-two letter) abbreviation ' + b'for the tag, used in table column headers', + max_length=2, + unique=True, + ), + ), + ( + 'show_column', + models.BooleanField( + default=True, + help_text=b"Show a column displaying this tag's count " + b"in the patch list view", + ), + ), + ], + options={'ordering': ['abbrev']}, + ), + migrations.CreateModel( + name='CoverLetter', + fields=[ + ( + 'submission_ptr', + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to='patchwork.Submission', + ), + ), + ], + options={'abstract': False}, + bases=('patchwork.submission',), + ), + migrations.CreateModel( + name='Patch', + fields=[ + ( + 'submission_ptr', + models.OneToOneField( + auto_created=True, + on_delete=django.db.models.deletion.CASCADE, + parent_link=True, + primary_key=True, + serialize=False, + to='patchwork.Submission', + ), + ), + ('diff', models.TextField(blank=True, null=True)), + ( + 'commit_ref', + models.CharField(blank=True, max_length=255, null=True), + ), + ( + 'pull_url', + models.CharField(blank=True, max_length=255, null=True), + ), + ('archived', models.BooleanField(default=False)), + ( + 'hash', + patchwork.fields.HashField( + blank=True, max_length=40, null=True + ), + ), + ( + 'number', + models.PositiveSmallIntegerField( + default=None, + help_text=b'The number assigned to this patch in the ' + b'series', + null=True, + ), + ), + ], + options={ + 'verbose_name_plural': 'Patches', + 'base_manager_name': 'objects', + }, + bases=('patchwork.submission',), + ), + migrations.CreateModel( + name='UserProfile', + fields=[ + ( + 'id', + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID', + ), + ), + ( + 'send_email', + models.BooleanField( + default=False, + help_text=b'Selecting this option allows patchwork to ' + b'send email on your behalf', + ), + ), + ( + 'items_per_page', + models.PositiveIntegerField( + default=100, + help_text=b'Number of items to display per page', + ), + ), + ( + 'show_ids', + models.BooleanField( + default=False, + help_text=b'Show click-to-copy patch IDs in the list ' + b'view', + ), + ), + ( + 'maintainer_projects', + models.ManyToManyField( + blank=True, + related_name='maintainer_project', + to='patchwork.Project', + ), + ), + ( + 'user', + models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, + related_name='profile', + to=settings.AUTH_USER_MODEL, + ), + ), + ], + ), + migrations.CreateModel( + name='SeriesReference', + fields=[ + ( + 'id', + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID', + ), + ), + ('msgid', models.CharField(max_length=255)), + ( + 'project', + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to='patchwork.Project', + ), + ), + ( + 'series', + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name='references', + related_query_name=b'reference', + to='patchwork.Series', + ), + ), + ], + ), + migrations.CreateModel( + name='PatchTag', + fields=[ + ( + 'id', + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID', + ), + ), + ('count', models.IntegerField(default=1)), + ( + 'tag', + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to='patchwork.Tag', + ), + ), + ], + ), + migrations.CreateModel( + name='Event', + fields=[ + ( + 'id', + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID', + ), + ), + ( + 'category', + models.CharField( + choices=[ + (b'cover-created', b'Cover Letter Created'), + (b'patch-created', b'Patch Created'), + (b'patch-completed', b'Patch Completed'), + (b'patch-state-changed', b'Patch State Changed'), + (b'patch-delegated', b'Patch Delegate Changed'), + (b'patch-relation-changed', b'Patch Relation Changed'), # noqa + (b'check-created', b'Check Created'), + (b'series-created', b'Series Created'), + (b'series-completed', b'Series Completed'), + ], + db_index=True, + help_text=b'The category of the event.', + max_length=25, + ), + ), + ( + 'date', + models.DateTimeField( + default=datetime.datetime.utcnow, + help_text=b'The time this event was created.', + ), + ), + ( + 'actor', + models.ForeignKey( + blank=True, + help_text=b'The user that caused/created this event.', + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name='+', + to=settings.AUTH_USER_MODEL, + ), + ), + ( + 'created_check', + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name='+', + to='patchwork.Check', + ), + ), + ( + 'current_delegate', + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name='+', + to=settings.AUTH_USER_MODEL, + ), + ), + ( + 'current_relation', + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name='+', + to='patchwork.PatchRelation', + ), + ), + ( + 'current_state', + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name='+', + to='patchwork.State', + ), + ), + ( + 'previous_delegate', + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name='+', + to=settings.AUTH_USER_MODEL, + ), + ), + ( + 'previous_relation', + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name='+', + to='patchwork.PatchRelation', + ), + ), + ( + 'previous_state', + models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name='+', + to='patchwork.State', + ), + ), + ( + 'project', + models.ForeignKey( + help_text=b'The project that the events belongs to.', + on_delete=django.db.models.deletion.CASCADE, + related_name='+', + to='patchwork.Project', + ), + ), + ( + 'series', + models.ForeignKey( + blank=True, + help_text=b'The series that this event was created ' + b'for.', + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name='+', + to='patchwork.Series', + ), + ), + ], + options={'ordering': ['-date']}, + ), + migrations.CreateModel( + name='EmailConfirmation', + fields=[ + ( + 'id', + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID', + ), + ), + ( + 'type', + models.CharField( + choices=[ + (b'userperson', b'User-Person association'), + (b'registration', b'Registration'), + (b'optout', b'Email opt-out'), + ], + max_length=20, + ), + ), + ('email', models.CharField(max_length=200)), + ('key', patchwork.fields.HashField(max_length=40)), + ( + 'date', + models.DateTimeField(default=datetime.datetime.utcnow), + ), + ('active', models.BooleanField(default=True)), + ( + 'user', + models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + to=settings.AUTH_USER_MODEL, + ), + ), + ], + ), + migrations.CreateModel( + name='DelegationRule', + fields=[ + ( + 'id', + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID', + ), + ), + ( + 'path', + models.CharField( + help_text=b'An fnmatch-style pattern to match ' + b'filenames against.', + max_length=255, + ), + ), + ( + 'priority', + models.IntegerField( + default=0, + help_text=b'The priority of the rule. Rules with a ' + b'higher priority will override rules with ' + b'lower priorities', + ), + ), + ( + 'project', + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to='patchwork.Project', + ), + ), + ( + 'user', + models.ForeignKey( + help_text=b'A user to delegate the patch to.', + on_delete=django.db.models.deletion.CASCADE, + to=settings.AUTH_USER_MODEL, + ), + ), + ], + options={'ordering': ['-priority', 'path']}, + ), + migrations.CreateModel( + name='Comment', + fields=[ + ( + 'id', + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID', + ), + ), + ('msgid', models.CharField(max_length=255)), + ( + 'date', + models.DateTimeField(default=datetime.datetime.utcnow), + ), + ('headers', models.TextField(blank=True)), + ('content', models.TextField(blank=True, null=True)), + ( + 'submission', + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + related_name='comments', + related_query_name=b'comment', + to='patchwork.Submission', + ), + ), + ( + 'submitter', + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to='patchwork.Person', + ), + ), + ], + options={'ordering': ['date']}, + ), + migrations.CreateModel( + name='BundlePatch', + fields=[ + ( + 'id', + models.AutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name='ID', + ), + ), + ('order', models.IntegerField()), + ( + 'bundle', + models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to='patchwork.Bundle', + ), + ), + ], + options={'ordering': ['order']}, + ), + migrations.AddField( + model_name='bundle', + name='project', + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to='patchwork.Project', + ), + ), + migrations.CreateModel( + name='PatchChangeNotification', + fields=[ + ( + 'patch', + models.OneToOneField( + on_delete=django.db.models.deletion.CASCADE, + primary_key=True, + serialize=False, + to='patchwork.Patch', + ), + ), + ( + 'last_modified', + models.DateTimeField(default=datetime.datetime.utcnow), + ), + ], + ), + migrations.AddIndex( + model_name='submission', + index=models.Index( + fields=['date', 'project', 'submitter', 'name'], + name='submission_covering_idx', + ), + ), + migrations.AlterUniqueTogether( + name='submission', unique_together={('msgid', 'project')}, + ), + migrations.AlterUniqueTogether( + name='seriesreference', unique_together={('project', 'msgid')}, + ), + migrations.AddField( + model_name='series', + name='cover_letter', + field=models.OneToOneField( + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name='series', + to='patchwork.CoverLetter', + ), + ), + migrations.AddField( + model_name='patchtag', + name='patch', + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to='patchwork.Patch', + ), + ), + migrations.AddField( + model_name='patch', + name='delegate', + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + to=settings.AUTH_USER_MODEL, + ), + ), + migrations.AddField( + model_name='patch', + name='patch_project', + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to='patchwork.Project', + ), + ), + migrations.AddField( + model_name='patch', + name='related', + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.SET_NULL, + related_name='patches', + related_query_name='patch', + to='patchwork.PatchRelation', + ), + ), + migrations.AddField( + model_name='patch', + name='series', + field=models.ForeignKey( + blank=True, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name='patches', + related_query_name='patch', + to='patchwork.Series', + ), + ), + migrations.AddField( + model_name='patch', + name='state', + field=models.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + to='patchwork.State', + ), + ), + migrations.AddField( + model_name='patch', + name='tags', + field=models.ManyToManyField( + through='patchwork.PatchTag', to='patchwork.Tag' + ), + ), + migrations.AddField( + model_name='event', + name='cover', + field=models.ForeignKey( + blank=True, + help_text=b'The cover letter that this event was created for.', + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name='+', + to='patchwork.CoverLetter', + ), + ), + migrations.AddField( + model_name='event', + name='patch', + field=models.ForeignKey( + blank=True, + help_text=b'The patch that this event was created for.', + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name='+', + to='patchwork.Patch', + ), + ), + migrations.AlterUniqueTogether( + name='delegationrule', unique_together={('path', 'project')}, + ), + migrations.AddIndex( + model_name='comment', + index=models.Index( + fields=['submission', 'date'], name='submission_date_idx' + ), + ), + migrations.AlterUniqueTogether( + name='comment', unique_together={('msgid', 'submission')}, + ), + migrations.AddField( + model_name='check', + name='patch', + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to='patchwork.Patch', + ), + ), + migrations.AddField( + model_name='bundlepatch', + name='patch', + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to='patchwork.Patch', + ), + ), + migrations.AddField( + model_name='bundle', + name='patches', + field=models.ManyToManyField( + through='patchwork.BundlePatch', to='patchwork.Patch' + ), + ), + migrations.AlterUniqueTogether( + name='patchtag', unique_together={('patch', 'tag')}, + ), + migrations.AddField( + model_name='patchchangenotification', + name='orig_state', + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, + to='patchwork.State', + ), + ), + migrations.AddIndex( + model_name='patch', + index=models.Index( + fields=['archived', 'patch_project', 'state', 'delegate'], + name='patch_list_covering_idx', + ), + ), + migrations.AlterUniqueTogether( + name='patch', unique_together={('series', 'number')}, + ), + migrations.AlterUniqueTogether( + name='bundlepatch', unique_together={('bundle', 'patch')}, + ), + migrations.AlterUniqueTogether( + name='bundle', unique_together={('owner', 'name')}, + ), + ] |