-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
issue SACGF/variantgrid_private#3676 - do some migrations to solve pr…
…oblem
- Loading branch information
Showing
4 changed files
with
98 additions
and
1 deletion.
There are no files selected for viewing
39 changes: 39 additions & 0 deletions
39
classification/migrations/0153_one_off_remind_rematch_allele_info_bad_end_norm.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
# Generated by Django 4.2.11 on 2024-08-06 11:08 | ||
|
||
from django.db import migrations | ||
from django.db.models import Q | ||
|
||
from manual.operations.manual_operations import ManualOperation | ||
|
||
|
||
def _get_iai_qs(apps): | ||
Variant = apps.get_model("snpdb", "Variant") | ||
ImportedAlleleInfo = apps.get_model("classification", "ImportedAlleleInfo") | ||
bad_norm_qs = Variant.objects.filter(svlen__isnull=False, modifiedimportedvariant__isnull=False) | ||
return ImportedAlleleInfo.objects.filter(Q(grch37__variant__in=bad_norm_qs) | Q(grch38__variant__in=bad_norm_qs)) | ||
|
||
|
||
def _needs_hard_rematch(apps): | ||
qs = _get_iai_qs(apps) | ||
return qs.exists() | ||
|
||
|
||
def _get_note(apps): | ||
qs = _get_iai_qs(apps) | ||
instructions = None | ||
if imported_allele_ids := list(qs.values_list("pk", flat=True)): | ||
iais = ", ".join((str(pk) for pk in imported_allele_ids)) | ||
instructions = f"Go to /admin/classification/importedalleleinfo/ and select {iais}" | ||
return instructions | ||
|
||
|
||
class Migration(migrations.Migration): | ||
dependencies = [ | ||
("classification", "0152_allele_origin_confirmed_ekey"), | ||
("snpdb", "0118_reminder_one_off_fix_variant_end"), | ||
] | ||
|
||
operations = [ | ||
ManualOperation.operation_other(args="AFTER fix_variant_end - Rematch hard imported alleles to badly normalized symbolic variants. ", | ||
note=_get_note, test=_needs_hard_rematch), | ||
] |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
# Generated by Django 4.2.11 on 2024-08-06 10:59 | ||
|
||
from django.db import migrations | ||
|
||
from manual.operations.manual_operations import ManualOperation | ||
|
||
|
||
def _existing_deploy_has_variants(apps): | ||
Variant = apps.get_model("snpdb", "Variant") | ||
return Variant.objects.exists() | ||
|
||
|
||
class Migration(migrations.Migration): | ||
dependencies = [ | ||
("snpdb", "0140_case_insensitive_collation"), | ||
] | ||
|
||
operations = [ | ||
ManualOperation(task_id=ManualOperation.task_id_manage(["one_off_fix_variant_end"]), | ||
test=_existing_deploy_has_variants), | ||
|
||
] |
32 changes: 32 additions & 0 deletions
32
upload/migrations/0022_one_off_delete_bad_end_bcftools_symbolic_norm.py
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
# Generated by Django 4.2.11 on 2024-08-06 12:04 | ||
import json | ||
import os | ||
|
||
from django.conf import settings | ||
from django.db import migrations | ||
|
||
from library.utils import mk_path | ||
|
||
|
||
def _delete_bad_modified_imported_variants(apps, schema_editor): | ||
ModifiedImportedVariant = apps.get_model("upload", "ModifiedImportedVariant") | ||
qs = ModifiedImportedVariant.objects.all().filter(variant__svlen__isnull=False) | ||
if miv_values := list(qs.values()): | ||
migrations_dir = os.path.join(settings.PRIVATE_DATA_ROOT, "migrations") | ||
mk_path(migrations_dir) | ||
bad_modifications_filename = os.path.join(migrations_dir, "bad_modifications_filename.json") | ||
with open(bad_modifications_filename, "w") as f: | ||
json.dump(miv_values, f) | ||
print(f"Wrote {len(miv_values)} incorretly normalized symbolic variants to '{bad_modifications_filename}'") | ||
qs.delete() | ||
|
||
|
||
class Migration(migrations.Migration): | ||
dependencies = [ | ||
("upload", "0021_remove_uploadedfile_md5_hash"), | ||
("classification", "0153_one_off_remind_rematch_allele_info_bad_end_norm") | ||
] | ||
|
||
operations = [ | ||
migrations.RunPython(_delete_bad_modified_imported_variants) | ||
] |