Skip to content

Commit 38342ba

Browse files
committed
require definition version while creating schedule
1 parent 4d25ebc commit 38342ba

File tree

3 files changed

+8
-18
lines changed

3 files changed

+8
-18
lines changed

backend/src/zimfarm_backend/routes/schedules/logic.py

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
create_offliner_instance,
4444
get_offliner_definition,
4545
get_offliner_definition_by_id,
46-
get_offliner_versions,
4746
)
4847
from zimfarm_backend.db.schedule import create_schedule as db_create_schedule
4948
from zimfarm_backend.db.schedule import (
@@ -135,20 +134,9 @@ def create_schedule(
135134
raise UnauthorizedError("You are not allowed to create a schedule")
136135

137136
if offliner_id := request.config.get("offliner", {}).get("offliner_id"):
138-
if request.version:
139-
offliner_definition = get_offliner_definition(
140-
session, offliner_id, request.version
141-
)
142-
else:
143-
# get the most recent offliner definition
144-
results = get_offliner_versions(session, offliner_id, limit=1, skip=0)
145-
if not results.versions:
146-
raise RecordDoesNotExistError(
147-
f"No offliner definitions found for {offliner_id}"
148-
)
149-
offliner_definition = get_offliner_definition(
150-
session, offliner_id, results.versions[0]
151-
)
137+
offliner_definition = get_offliner_definition(
138+
session, offliner_id, request.version
139+
)
152140
else:
153141
raise RequestValidationError(
154142
[

backend/src/zimfarm_backend/routes/schedules/models.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,7 @@ class ScheduleCreateSchema(BaseModel):
4141
periodicity: SchedulePeriodicity
4242
tags: list[NotEmptyString] = Field(default_factory=list)
4343
enabled: bool
44-
# version of offliner to use for validation. Determine latest version to use
45-
# if None is provided
46-
version: str | None = None
44+
version: NotEmptyString
4745
config: dict[str, Any] # will be validated in the route
4846
notification: ScheduleNotificationSchema | None = None
4947
context: NotEmptyString | None = None

backend/tests/routes/test_schedules.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ def test_get_schedules(
119119
},
120120
"enabled": True,
121121
"periodicity": SchedulePeriodicity.manually.value,
122+
"version": "initial",
122123
},
123124
HTTPStatus.UNPROCESSABLE_ENTITY,
124125
id="invalid-config-missing-offliner-id",
@@ -151,6 +152,7 @@ def test_get_schedules(
151152
"monitor": True,
152153
},
153154
"enabled": True,
155+
"version": "initial",
154156
"periodicity": SchedulePeriodicity.manually.value,
155157
},
156158
HTTPStatus.UNPROCESSABLE_ENTITY,
@@ -217,6 +219,7 @@ def test_get_schedules(
217219
},
218220
"enabled": True,
219221
"periodicity": SchedulePeriodicity.manually.value,
222+
"version": "initial",
220223
},
221224
HTTPStatus.OK,
222225
id="valid-config",
@@ -727,6 +730,7 @@ def test_create_duplicate_schedule(
727730
),
728731
"enabled": True,
729732
"periodicity": SchedulePeriodicity.manually.value,
733+
"version": "initial",
730734
},
731735
)
732736
assert response.status_code == HTTPStatus.CONFLICT

0 commit comments

Comments
 (0)