Skip to content

Commit 0f8fbe3

Browse files
ray-oxdcursoragent
andcommitted
DBC22-6813: notify when planned events become active
Return True from populate when a future delay event transitions to an active display category so route notification emails are queued. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 6788ce5 commit 0f8fbe3

2 files changed

Lines changed: 54 additions & 0 deletions

File tree

src/backend/apps/event/tasks.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ def populate_event_from_data(new_event_data):
131131
if new_display_category != EVENT_DISPLAY_CATEGORY.FUTURE_DELAYS:
132132
# Update without triggering save
133133
Event.objects.filter(id=event_id).update(display_category=new_display_category)
134+
return True
134135

135136
except ObjectDoesNotExist:
136137
event = Event(id=event_id)

src/backend/apps/event/tests/test_event_populate.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -302,3 +302,56 @@ def test_display_category(self):
302302
datetime.datetime(2025, 5, 28, 8, 1, tzinfo=zoneinfo.ZoneInfo(key='America/Vancouver'))
303303
)
304304
assert dc3 == event_enums.EVENT_DISPLAY_CATEGORY.MINOR_DELAYS
305+
306+
def test_planned_event_activation_triggers_update(self):
307+
data = {
308+
'closed': False,
309+
'closest_landmark': '5 km west of Purden Lake',
310+
'description': 'Highway 16 (Yellowhead Highway). Paving operations.',
311+
'direction': 'NONE',
312+
'event_sub_type': 'ROAD_MAINTENANCE',
313+
'event_type': 'CONSTRUCTION',
314+
'first_created': datetime.datetime(
315+
2025, 5, 27, 8, 0, 35, tzinfo=zoneinfo.ZoneInfo(key='America/Vancouver')),
316+
'highway_segment_names': '',
317+
'id': 'DBC-20342',
318+
'last_updated': datetime.datetime(2025, 5, 28, 0, 0, tzinfo=zoneinfo.ZoneInfo(key='America/Vancouver')),
319+
'location': {
320+
'coordinates': [-122.063117, 53.903021],
321+
'type': 'Point'
322+
},
323+
'location_description': 'Between Willow River Rest Area and Bowron Pit Rd',
324+
'next_update': None,
325+
'route_at': 'Highway 16',
326+
'route_from': 'Willow River Rest Area',
327+
'route_to': '',
328+
'schedule': {
329+
'recurring_schedules': [
330+
{
331+
'daily_end_time': '20:00',
332+
'daily_start_time': '08:00',
333+
'days': [3, 4, 5, 6],
334+
'end_date': '2025-06-01',
335+
'start_date': '2025-05-28'
336+
}
337+
]
338+
},
339+
'severity': 'MINOR',
340+
'start_point_linear_reference': 1076.938270924779,
341+
'status': 'ACTIVE',
342+
'timezone': 'America/Vancouver'
343+
}
344+
populate_event_from_data(data)
345+
Event.objects.filter(id='DBC-20342').update(
346+
display_category=event_enums.EVENT_DISPLAY_CATEGORY.FUTURE_DELAYS
347+
)
348+
349+
with patch(
350+
'apps.event.tasks.get_display_category',
351+
return_value=event_enums.EVENT_DISPLAY_CATEGORY.MINOR_DELAYS,
352+
):
353+
updated = populate_event_from_data(data)
354+
355+
assert updated is True
356+
event = Event.objects.get(id='DBC-20342')
357+
assert event.display_category == event_enums.EVENT_DISPLAY_CATEGORY.MINOR_DELAYS

0 commit comments

Comments
 (0)