Skip to content

Commit

Permalink
♻️ [#46] -- refactor data migrations
Browse files Browse the repository at this point in the history
  • Loading branch information
Ewen committed Aug 22, 2022
1 parent 5ef339e commit 0898e3d
Showing 1 changed file with 19 additions and 27 deletions.
46 changes: 19 additions & 27 deletions zgw_consumers/migrations/0016_auto_20220818_1412.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,35 +3,27 @@
from django.db import migrations, models


def change_certificate_model(new_model, old_model):
OldCertificate = old_model
NewCertificate = new_model
def get_operation(forwards: bool = True):
from_app = "zgw_consumers" if forwards else "simple_certmanager"
to_app = "simple_certmanager" if forwards else "zgw_consumers"

old_certs = OldCertificate.objects.all()
def migrate_data(apps, _):
NewCertificate = apps.get_model(to_app, "Certificate")
OldCertificate = apps.get_model(from_app, "Certificate")

for old_cert in old_certs:
new_cert = NewCertificate(
id=old_cert.id,
label=old_cert.label,
type=old_cert.type,
public_certificate=old_cert.public_certificate,
private_key=old_cert.private_key,
)
new_cert.save()
old_certs = OldCertificate.objects.all()

for old_cert in old_certs:
new_cert = NewCertificate(
id=old_cert.id,
label=old_cert.label,
type=old_cert.type,
public_certificate=old_cert.public_certificate,
private_key=old_cert.private_key,
)
new_cert.save()

def migrate_certificate_forward(apps, _):
change_certificate_model(
new_model=apps.get_model("simple_certmanager", "Certificate"),
old_model=apps.get_model("zgw_consumers", "Certificate"),
)


def migrate_certificate_backward(apps, _):
change_certificate_model(
new_model=apps.get_model("zgw_consumers", "Certificate"),
old_model=apps.get_model("simple_certmanager", "Certificate"),
)
return migrate_data


class Migration(migrations.Migration):
Expand All @@ -42,7 +34,7 @@ class Migration(migrations.Migration):
]

operations = [
migrations.RunPython(migrate_certificate_forward, migrations.RunPython.noop),
migrations.RunPython(get_operation(forwards=True), migrations.RunPython.noop),
migrations.AlterField(
model_name="service",
name="client_certificate",
Expand All @@ -67,5 +59,5 @@ class Migration(migrations.Migration):
to="simple_certmanager.certificate",
),
),
migrations.RunPython(migrations.RunPython.noop, migrate_certificate_backward),
migrations.RunPython(migrations.RunPython.noop, get_operation(forwards=False)),
]

0 comments on commit 0898e3d

Please sign in to comment.