Skip to content

Commit

Permalink
Migrations to add CampaignEvent.fire_uuid correctly
Browse files Browse the repository at this point in the history
  • Loading branch information
rowanseymour committed Feb 28, 2025
1 parent 834aa73 commit 46a78a4
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Generated by Django 5.1.4 on 2025-02-28 15:24

import uuid

from django.db import migrations, models

import temba.utils.uuid


class Migration(migrations.Migration):

Expand All @@ -15,7 +15,12 @@ class Migration(migrations.Migration):
migrations.AddField(
model_name="campaignevent",
name="fire_uuid",
field=models.UUIDField(db_index=True, default=uuid.uuid4),
field=models.UUIDField(null=True),
),
migrations.AlterField(
model_name="campaignevent",
name="fire_uuid",
field=models.UUIDField(default=temba.utils.uuid.uuid4, null=True),
),
migrations.AddField(
model_name="campaignevent",
Expand Down
24 changes: 24 additions & 0 deletions temba/campaigns/migrations/0068_backfill_event_fire_uuid.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# Generated by Django 5.1.4 on 2025-02-28 20:53

from django.db import migrations

from temba.utils.uuid import uuid4


def backfill_event_fire_uuid(apps, schema_editor): # pragma: no cover
CampaignEvent = apps.get_model("campaigns", "CampaignEvent")

for event in CampaignEvent.objects.filter(fire_uuid=None).only("id"):
event.fire_uuid = uuid4()
event.save(update_fields=("fire_uuid",))


class Migration(migrations.Migration):

dependencies = [
("campaigns", "0067_campaignevent_fire_uuid_campaignevent_status"),
]

operations = [
migrations.RunPython(backfill_event_fire_uuid, migrations.RunPython.noop),
]
20 changes: 20 additions & 0 deletions temba/campaigns/migrations/0069_alter_campaignevent_fire_uuid.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Generated by Django 5.1.4 on 2025-02-28 20:55

from django.db import migrations, models

import temba.utils.uuid


class Migration(migrations.Migration):

dependencies = [
("campaigns", "0068_backfill_event_fire_uuid"),
]

operations = [
migrations.AlterField(
model_name="campaignevent",
name="fire_uuid",
field=models.UUIDField(default=temba.utils.uuid.uuid4),
),
]
4 changes: 2 additions & 2 deletions temba/campaigns/models.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
from datetime import datetime, timezone as tzone
from uuid import uuid4

from django_redis import get_redis_connection
from smartmin.models import SmartModel
Expand All @@ -15,6 +14,7 @@
from temba.orgs.models import Org
from temba.utils import json, on_transaction_commit
from temba.utils.models import TembaModel, TembaUUIDMixin, TranslatableField
from temba.utils.uuid import uuid4


class Campaign(TembaModel):
Expand Down Expand Up @@ -283,7 +283,7 @@ class CampaignEvent(TembaUUIDMixin, SmartModel):

# TODO switch contact fires to reference event by this instead of it's ID/UUID so we can invalidate fires without
# recreating events
fire_uuid = models.UUIDField(default=uuid4, db_index=True)
fire_uuid = models.UUIDField(default=uuid4)

# the contact specific date value this is event is based on
relative_to = models.ForeignKey(ContactField, on_delete=models.PROTECT, related_name="campaign_events")
Expand Down

0 comments on commit 46a78a4

Please sign in to comment.