refactor(core, business): unify pagination and promo serializers with enhanced validation #58
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Introduces a shared pagination serializer and consolidates promo-related serializers,
validation logic, and country-code handling to improve structure, DRY-ness, and maintainability.
Key changes:
Core pagination
BaseLimitOffsetPaginationSerializer
to centralizelimit
/offset
validation for all endpoints.Promo serializers overhaul
PromoValidator
into serializers to co‑locate validation and data representation.BasePromoSerializer
to extract common fields and methods, reducing duplication across create, detail, and read-only serializers.CountryField
andMultiCountryField
for reusable ISO 3166‑1 α‑2 code validation.PromoListQuerySerializer
by inheriting from the base pagination serializer and usingMultiCountryField
.Enhanced promo validation
PATCH
), inferringmode
from instance when absent in request data.max_count
below the currentused_count
.get_used_codes_count
returns accurate counts forCOMMON
‑mode promotions.