From 10fea329ad0541e7519f09da7aed91d3100f851e Mon Sep 17 00:00:00 2001 From: Egor Date: Mon, 19 Jan 2026 09:31:41 +0300 Subject: [PATCH] Update admin_promocodes.py --- app/cabinet/routes/admin_promocodes.py | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/app/cabinet/routes/admin_promocodes.py b/app/cabinet/routes/admin_promocodes.py index 3c2f7d79..d262bc56 100644 --- a/app/cabinet/routes/admin_promocodes.py +++ b/app/cabinet/routes/admin_promocodes.py @@ -249,6 +249,18 @@ def _validate_create_payload(payload: PromoCodeCreateRequest) -> None: "Subscription days must be positive for this promo code type" ) + if payload.type == PromoCodeType.DISCOUNT: + if payload.balance_bonus_kopeks <= 0 or payload.balance_bonus_kopeks > 100: + raise HTTPException( + status.HTTP_400_BAD_REQUEST, + "Discount percent must be between 1 and 100" + ) + if payload.subscription_days <= 0: + raise HTTPException( + status.HTTP_400_BAD_REQUEST, + "Discount validity hours must be positive" + ) + if normalized_valid_from and normalized_valid_until and normalized_valid_from > normalized_valid_until: raise HTTPException( status.HTTP_400_BAD_REQUEST, @@ -289,6 +301,18 @@ def _validate_update_payload(payload: PromoCodeUpdateRequest, promocode: PromoCo "Subscription days must be positive for this promo code type" ) + if new_type == PromoCodeType.DISCOUNT: + if balance_bonus <= 0 or balance_bonus > 100: + raise HTTPException( + status.HTTP_400_BAD_REQUEST, + "Discount percent must be between 1 and 100" + ) + if subscription_days <= 0: + raise HTTPException( + status.HTTP_400_BAD_REQUEST, + "Discount validity hours must be positive" + ) + valid_from = ( _normalize_datetime(payload.valid_from) if payload.valid_from is not None