Skip to content

Commit

Permalink
🗃️ [#182] made sure that the reverse datamigration of klantinteractie…
Browse files Browse the repository at this point in the history
…s works
  • Loading branch information
bart-maykin committed Aug 15, 2024
1 parent 4537ab1 commit b9e4b58
Show file tree
Hide file tree
Showing 6 changed files with 68 additions and 23 deletions.
4 changes: 2 additions & 2 deletions src/openklant/components/klantinteracties/admin/actoren.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
Medewerker,
OrganisatorischeEenheid,
)
from ..models.internetaken import InterneActorenThoughModel
from ..models.internetaken import InterneTakenActorenThoughModel


class GeautomatiseerdeActorInlineAdmin(admin.StackedInline):
Expand Down Expand Up @@ -38,7 +38,7 @@ class ActorKlantcontactInlineAdmin(admin.StackedInline):


class ActorThoughTabularInlineAdmin(OrderedTabularInline):
model = InterneActorenThoughModel
model = InterneTakenActorenThoughModel
fields = (
"actor",
"order",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
from openklant.components.klantinteracties.models.actoren import Actor
from openklant.components.klantinteracties.models.constants import Taakstatus
from openklant.components.klantinteracties.models.internetaken import (
InterneActorenThoughModel,
InterneTakenActorenThoughModel,
InterneTaak,
)
from openklant.components.klantinteracties.models.klantcontacten import Klantcontact
Expand Down Expand Up @@ -88,12 +88,12 @@ class Meta:
def to_representation(self, instance):
response = super().to_representation(instance)
response["toegewezen_aan_actor"] = ActorForeignKeySerializer(
instance.actoren.order_by("interneactorenthoughmodel__order").first(),
instance.actoren.order_by("internetakenactorenthoughmodel__order").first(),
context={**self.context},
).data

response["toegewezen_aan_actoren"] = ActorForeignKeySerializer(
instance.actoren.all().order_by("interneactorenthoughmodel__order"),
instance.actoren.all().order_by("internetakenactorenthoughmodel__order"),
context={**self.context},
many=True,
).data
Expand Down Expand Up @@ -159,10 +159,10 @@ def create(self, validated_data):
internetaak = super().create(validated_data)
if actoren:
bulk_create_instances = [
InterneActorenThoughModel(internetaak=internetaak, actor=actor)
InterneTakenActorenThoughModel(internetaak=internetaak, actor=actor)
for actor in self._get_actoren(actoren)
]
InterneActorenThoughModel.objects.bulk_create(bulk_create_instances)
InterneTakenActorenThoughModel.objects.bulk_create(bulk_create_instances)

return internetaak

Expand All @@ -172,10 +172,10 @@ def update(self, instance, validated_data):
actoren = validated_data.pop("actoren")
instance.actoren.clear()
bulk_create_instances = [
InterneActorenThoughModel(internetaak=instance, actor=actor)
InterneTakenActorenThoughModel(internetaak=instance, actor=actor)
for actor in self._get_actoren(actoren)
]
InterneActorenThoughModel.objects.bulk_create(bulk_create_instances)
InterneTakenActorenThoughModel.objects.bulk_create(bulk_create_instances)

if "klantcontact" in validated_data:
if klantcontact := validated_data.pop("klantcontact", None):
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,13 @@


class Migration(migrations.Migration):
def sync_actor_and_actoren(apps, schema_editor):
Internetaak = apps.get_model("klantinteracties", "internetaak")
for internetaak in Internetaak.objects.all():
internetaak.actoren.add(internetaak.actor)

dependencies = [
("klantinteracties", "0015_internetaak_afgehandeld_op"),
]

operations = [
migrations.CreateModel(
name="InterneActorenThoughModel",
name="InterneTakenActorenThoughModel",
fields=[
(
"id",
Expand Down Expand Up @@ -57,14 +52,9 @@ def sync_actor_and_actoren(apps, schema_editor):
name="actoren",
field=models.ManyToManyField(
help_text="De actoren aan wie de interne taak werd toegewezen.",
through="klantinteracties.InterneActorenThoughModel",
through="klantinteracties.InterneTakenActorenThoughModel",
to="klantinteracties.actor",
verbose_name="actoren",
),
),
migrations.RunPython(sync_actor_and_actoren),
migrations.RemoveField(
model_name="internetaak",
name="actor",
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# Generated by Django 4.2.11 on 2024-08-15 22:34

from django.db import migrations


class Migration(migrations.Migration):
def sync_actor_and_actoren(apps, schema_editor):
Internetaak = apps.get_model("klantinteracties", "internetaak")
for internetaak in Internetaak.objects.all():
internetaak.actoren.add(internetaak.actor)

def reverse_sync_actor_and_actoren(apps, schema_editor):
Internetaak = apps.get_model("klantinteracties", "internetaak")
for internetaak in Internetaak.objects.all():
internetaak.actor = internetaak.actoren.first()
internetaak.save()

dependencies = [
("klantinteracties", "0016_internetaak_actoren"),
]

operations = [
migrations.RunPython(
sync_actor_and_actoren, reverse_code=reverse_sync_actor_and_actoren
),
]
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
# Generated by Django 4.2.11 on 2024-08-15 22:35

from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

dependencies = [
("klantinteracties", "0017_auto_20240815_2234"),
]

operations = [
migrations.AlterField(
model_name="internetaak",
name="actor",
field=models.ForeignKey(
help_text="De actor aan wie de interne taak werd toegewezen.",
on_delete=django.db.models.deletion.CASCADE,
to="klantinteracties.actor",
verbose_name="actor",
default=1,
),
),
migrations.RemoveField(
model_name="internetaak",
name="actor",
),
]
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ class InterneTaak(models.Model):
"klantinteracties.Actor",
verbose_name=_("actoren"),
help_text=_("De actoren aan wie de interne taak werd toegewezen."),
through="klantinteracties.InterneActorenThoughModel",
through="klantinteracties.InterneTakenActorenThoughModel",
)
klantcontact = models.ForeignKey(
Klantcontact,
Expand Down Expand Up @@ -102,7 +102,7 @@ def __str__(self):


# Added for deprecated toegewezen_aan_actor field to return correct order
class InterneActorenThoughModel(OrderedModel):
class InterneTakenActorenThoughModel(OrderedModel):
actor = models.ForeignKey("klantinteracties.Actor", on_delete=models.CASCADE)
internetaak = models.ForeignKey(
"klantinteracties.InterneTaak", on_delete=models.CASCADE
Expand Down

0 comments on commit b9e4b58

Please sign in to comment.