Skip to content

Commit 46a78a4

Browse files
committed
Migrations to add CampaignEvent.fire_uuid correctly
1 parent 834aa73 commit 46a78a4

File tree

4 files changed

+54
-5
lines changed

4 files changed

+54
-5
lines changed

temba/campaigns/migrations/0067_campaignevent_fire_uuid_campaignevent_status.py

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
# Generated by Django 5.1.4 on 2025-02-28 15:24
22

3-
import uuid
4-
53
from django.db import migrations, models
64

5+
import temba.utils.uuid
6+
77

88
class Migration(migrations.Migration):
99

@@ -15,7 +15,12 @@ class Migration(migrations.Migration):
1515
migrations.AddField(
1616
model_name="campaignevent",
1717
name="fire_uuid",
18-
field=models.UUIDField(db_index=True, default=uuid.uuid4),
18+
field=models.UUIDField(null=True),
19+
),
20+
migrations.AlterField(
21+
model_name="campaignevent",
22+
name="fire_uuid",
23+
field=models.UUIDField(default=temba.utils.uuid.uuid4, null=True),
1924
),
2025
migrations.AddField(
2126
model_name="campaignevent",
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# Generated by Django 5.1.4 on 2025-02-28 20:53
2+
3+
from django.db import migrations
4+
5+
from temba.utils.uuid import uuid4
6+
7+
8+
def backfill_event_fire_uuid(apps, schema_editor): # pragma: no cover
9+
CampaignEvent = apps.get_model("campaigns", "CampaignEvent")
10+
11+
for event in CampaignEvent.objects.filter(fire_uuid=None).only("id"):
12+
event.fire_uuid = uuid4()
13+
event.save(update_fields=("fire_uuid",))
14+
15+
16+
class Migration(migrations.Migration):
17+
18+
dependencies = [
19+
("campaigns", "0067_campaignevent_fire_uuid_campaignevent_status"),
20+
]
21+
22+
operations = [
23+
migrations.RunPython(backfill_event_fire_uuid, migrations.RunPython.noop),
24+
]
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# Generated by Django 5.1.4 on 2025-02-28 20:55
2+
3+
from django.db import migrations, models
4+
5+
import temba.utils.uuid
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
("campaigns", "0068_backfill_event_fire_uuid"),
12+
]
13+
14+
operations = [
15+
migrations.AlterField(
16+
model_name="campaignevent",
17+
name="fire_uuid",
18+
field=models.UUIDField(default=temba.utils.uuid.uuid4),
19+
),
20+
]

temba/campaigns/models.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
from datetime import datetime, timezone as tzone
2-
from uuid import uuid4
32

43
from django_redis import get_redis_connection
54
from smartmin.models import SmartModel
@@ -15,6 +14,7 @@
1514
from temba.orgs.models import Org
1615
from temba.utils import json, on_transaction_commit
1716
from temba.utils.models import TembaModel, TembaUUIDMixin, TranslatableField
17+
from temba.utils.uuid import uuid4
1818

1919

2020
class Campaign(TembaModel):
@@ -283,7 +283,7 @@ class CampaignEvent(TembaUUIDMixin, SmartModel):
283283

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

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

0 commit comments

Comments
 (0)