feat: manage external source lifecycle
This commit is contained in:
@@ -68,6 +68,7 @@ def stage_observations(
|
||||
"weight_g": _integer(payload.get("weight_g"), minimum=1, maximum=3_000_000),
|
||||
"published_at": _datetime(payload.get("published_at")),
|
||||
"last_seen_at": fetched_at, "payload": payload,
|
||||
"source_check_status": "available", "source_checked_at": fetched_at,
|
||||
}
|
||||
if observation is None:
|
||||
observation = ExternalObservation(
|
||||
@@ -89,8 +90,17 @@ def stage_observations(
|
||||
observation.fish = None
|
||||
observation.waterbody = None
|
||||
observation.review_note = "Source record changed; manual mapping and publication required"
|
||||
observation.reviewed_at = fetched_at
|
||||
observation.moderation_version += 1
|
||||
for key, value in values.items():
|
||||
setattr(observation, key, value)
|
||||
if observation.status == "withdrawn":
|
||||
observation.status = "staged"
|
||||
observation.fish = None
|
||||
observation.waterbody = None
|
||||
observation.review_note = "Source record reappeared; manual confirmation required"
|
||||
observation.reviewed_at = fetched_at
|
||||
observation.moderation_version += 1
|
||||
updated += 1
|
||||
touched.append(observation)
|
||||
session.commit()
|
||||
|
||||
Reference in New Issue
Block a user