Skip to content

Commit 1e46bcc

Browse files
committed
require definition version while creating schedule
1 parent 6f2f554 commit 1e46bcc

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
@@ -168,6 +168,7 @@ def test_get_similar_schedules(
168168
},
169169
"enabled": True,
170170
"periodicity": SchedulePeriodicity.manually.value,
171+
"version": "initial",
171172
},
172173
HTTPStatus.UNPROCESSABLE_ENTITY,
173174
id="invalid-config-missing-offliner-id",
@@ -200,6 +201,7 @@ def test_get_similar_schedules(
200201
"monitor": True,
201202
},
202203
"enabled": True,
204+
"version": "initial",
203205
"periodicity": SchedulePeriodicity.manually.value,
204206
},
205207
HTTPStatus.UNPROCESSABLE_ENTITY,
@@ -266,6 +268,7 @@ def test_get_similar_schedules(
266268
},
267269
"enabled": True,
268270
"periodicity": SchedulePeriodicity.manually.value,
271+
"version": "initial",
269272
},
270273
HTTPStatus.OK,
271274
id="valid-config",
@@ -867,6 +870,7 @@ def test_create_duplicate_schedule(
867870
),
868871
"enabled": True,
869872
"periodicity": SchedulePeriodicity.manually.value,
873+
"version": "initial",
870874
},
871875
)
872876
assert response.status_code == HTTPStatus.CONFLICT

0 commit comments

Comments
 (0)