Skip to content

Conversation

RandomProgramm3r
Copy link
Owner

This commit introduces two new endpoints for user interactions with promo codes:

  • POST /api/user/promo/{id}/activate: Allows an authenticated user to activate a specific promo code. The activation is subject to several validation checks, including promo targeting rules (age, country), promo activity status, and a new anti-fraud service verification.

  • GET /api/user/promo/history: Retrieves a paginated list of promo codes that the current user has previously activated.

Key changes include:

  • A PromoActivateView that handles the logic for activating a promo code, including validation and atomic updates to the promo's usage count or unique code status.
  • A PromoHistoryView to display the user's activation history.
  • A new antifraud_service module to communicate with an external anti-fraud system, complete with caching and retry logic.
  • A PromoActivationHistory model to log each successful activation, linking users to the promos they've activated.
  • Updates to UserPromoDetailSerializer to include an is_activated_by_user field, indicating if the user has already activated the promo.
  • New URL patterns in user/urls.py to route to the new views.

This commit introduces two new endpoints for user interactions with promo codes:

- `POST /api/user/promo/{id}/activate`: Allows an authenticated user to activate a specific promo code. The activation is subject to several validation checks, including
      promo targeting rules (age, country), promo activity status, and a new anti-fraud service verification.

- `GET /api/user/promo/history`: Retrieves a paginated list of promo codes that the current user has previously activated.

Key changes include:
- A `PromoActivateView` that handles the logic for activating a promo code, including validation and atomic updates to the promo's usage count or unique code status.
- A `PromoHistoryView` to display the user's activation history.
- A new `antifraud_service` module to communicate with an external anti-fraud system, complete with caching and retry logic.
- A `PromoActivationHistory` model to log each successful activation, linking users to the promos they've activated.
 - Updates to `UserPromoDetailSerializer` to include an `is_activated_by_user` field, indicating if the user has already activated the promo.
- New URL patterns in `user/urls.py` to route to the new views.
This commit addresses minor formatting issues in the `user/antifraud_service.py` file to align with the project's ruff linting configuration.
@RandomProgramm3r RandomProgramm3r merged commit d27f9fe into main Jul 3, 2025
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant