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
BaseLimitOffsetPaginationSerializerto centralizelimit/offsetvalidation for all endpoints.Promo serializers overhaul
PromoValidatorinto serializers to co‑locate validation and data representation.BasePromoSerializerto extract common fields and methods, reducing duplication across create, detail, and read-only serializers.CountryFieldandMultiCountryFieldfor reusable ISO 3166‑1 α‑2 code validation.PromoListQuerySerializerby inheriting from the base pagination serializer and usingMultiCountryField.Enhanced promo validation
PATCH), inferringmodefrom instance when absent in request data.max_countbelow the currentused_count.get_used_codes_countreturns accurate counts forCOMMON‑mode promotions.