feat: replace pipeline profile and source health
This commit is contained in:
@@ -274,6 +274,31 @@ def track_application_changes(
|
||||
return events
|
||||
|
||||
|
||||
def change_application_status(*, application: Application, user, status: str) -> Application:
|
||||
"""Persist an accessible pipeline status change and its audit event."""
|
||||
|
||||
valid_statuses = {value for value, _label in Application.Status.choices}
|
||||
if status not in valid_statuses:
|
||||
raise ValueError("Ongeldige sollicitatiestatus.")
|
||||
previous = application.status
|
||||
if previous == status:
|
||||
return application
|
||||
with transaction.atomic():
|
||||
application.status = status
|
||||
update_fields = ["status", "updated_at"]
|
||||
if status == Application.Status.APPLIED and application.applied_at is None:
|
||||
application.applied_at = timezone.now()
|
||||
update_fields.append("applied_at")
|
||||
application.save(update_fields=update_fields)
|
||||
_record_timeline_event(
|
||||
application=application,
|
||||
user=user,
|
||||
event_type=ApplicationTimelineEvent.EventType.STATUS_CHANGED,
|
||||
metadata={"from": previous, "to": status},
|
||||
)
|
||||
return application
|
||||
|
||||
|
||||
def build_print_html(application: Application) -> str:
|
||||
snapshot = application.snapshot if isinstance(application.snapshot, dict) else {}
|
||||
job = application.job
|
||||
|
||||
Reference in New Issue
Block a user