Skip to content

Commit

Permalink
moved validation to VO
Browse files Browse the repository at this point in the history
  • Loading branch information
bomzheg committed Mar 6, 2025
1 parent 0332576 commit d5a9087
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 9 deletions.
7 changes: 7 additions & 0 deletions shvatka/core/models/dto/action/keys.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
from typing import Literal

from shvatka.core.models import enums
from shvatka.core.utils.input_validation import is_key_valid
from . import StateHolder
from .decisions import NotImplementedActionDecision
from .interface import (
Expand All @@ -23,6 +24,12 @@ class BonusKey:
text: SHKey
bonus_minutes: float

def __post_init__(self):
if not is_key_valid(self.text):
raise ValueError
if not (-600 < self.bonus_minutes < 60):
raise ValueError("bonus out of available range")

def __eq__(self, other: object) -> bool:
if not isinstance(other, BonusKey):
return NotImplemented
Expand Down
12 changes: 3 additions & 9 deletions shvatka/tgbot/dialogs/level_scn/handlers.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@
is_multiple_keys_normal,
normalize_key,
validate_level_id,
is_key_valid,
)
from shvatka.infrastructure.db.dao.holder import HolderDao
from shvatka.tgbot import states
Expand Down Expand Up @@ -70,17 +69,12 @@ async def on_correct_keys(m: Message, dialog_: Any, manager: DialogManager, keys
await manager.done({"keys": keys})


def convert_bonus_keys(text: str) -> list[shvatka.core.models.dto.action.keys.BonusKey]:
def convert_bonus_keys(text: str) -> list[action.BonusKey]:
result = []
for key_str in text.splitlines():
key, bonus = key_str.split(maxsplit=1)
if not is_key_valid(key):
raise ValueError
parsed_bonus = float(bonus)
if not (-600 < parsed_bonus < 60):
raise ValueError("bonus out of available range")
parsed_key = shvatka.core.models.dto.action.keys.BonusKey(
text=key, bonus_minutes=parsed_bonus
parsed_key = action.BonusKey(
text=key, bonus_minutes=float(bonus)
)
result.append(parsed_key)
return result
Expand Down

0 comments on commit d5a9087

Please sign in to comment.