Skip to content

Commit 812aeb9

Browse files
committed
fix(webserver): write attempt seed only after successful creation
1 parent f6dcd31 commit 812aeb9

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

questionpy_sdk/webserver/controllers/attempt/controller.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ async def get_attempt(
3636
data: dict[str, JsonValue] | None = None
3737
state: str | None = None
3838
score: ScoreModel | None = None
39+
new_seed: bool = False
3940

4041
with contextlib.suppress(webserver_errors.MissingAttemptDataError):
4142
data = await self._state_manager.read_attempt_data(question_id, attempt_id)
@@ -47,12 +48,15 @@ async def get_attempt(
4748
seed = await self._state_manager.read_attempt_seed(question_id, attempt_id)
4849
except webserver_errors.MissingAttemptSeedError:
4950
seed = random.randint(0, 1000)
50-
await self._state_manager.write_attempt_seed(question_id, attempt_id, seed)
51+
new_seed = True
5152

5253
async with self.get_worker() as worker:
5354
attempt, state = await self._get_or_start_attempt(question_id, attempt_id, state, data, score, worker)
5455
renderer = _AttemptRenderer(attempt, display_options, self.generate_api_url, worker)
55-
return await renderer.render_ui(data, state, score, seed)
56+
render_data = await renderer.render_ui(data, state, score, seed)
57+
if new_seed:
58+
await self._state_manager.write_attempt_seed(question_id, attempt_id, seed)
59+
return render_data
5660

5761
async def get_attempts(self, question_id: str) -> dict[str, AttemptData]:
5862
"""Gets all saved attempts."""

0 commit comments

Comments
 (0)