igorsimb / mp-monitor

Django app for scraping Wildberries
1 stars 0 forks source link

feature(payment_utils): add data validation logic and db update for payment callback view #206

Closed igorsimb closed 3 weeks ago

igorsimb commented 1 month ago

Added 3 payment_util functions:

  1. validate_callback_data compares the incoming data with expected

  2. update_payment_records updates the appropriate records in the system: Order, Payment, Tenant

  3. TinkoffTokenGenerator is self-explanatory

coderabbitai[bot] commented 1 month ago
📝 Walkthrough
📝 Walkthrough ## Walkthrough This pull request introduces multiple changes across various files, primarily focusing on the `PaymentPlan` model and its related functionalities. Key modifications include updates to the `name` field in the `PaymentPlan` model to enforce specific choices, the addition of an `order_intent` field in the `Order` model, and enhancements to payment processing through new utility functions. Additionally, several templates have been updated for dynamic content display. New tests have been added to validate the functionality of the payment-related methods. ## Changes | File | Change Summary | |--------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------| | accounts/migrations/0011_alter_paymentplan_name.py | Modified `name` field of `PaymentPlan` model to enforce specific choices. | | accounts/models.py | Updated `PaymentPlan` enum display strings; enhanced `switch_plan` method documentation. | | main/migrations/0003_order_order_intent_alter_payment_terminal_key.py | Added `order_intent` field to `Order` model; altered default value of `terminal_key` in `Payment` model. | | main/models.py | Introduced `OrderIntent` class and `order_intent` field in `Order`; updated `merchant` and `terminal_key` fields in `Payment` to use settings. | | main/payment_utils.py | Added functions for validating payment callbacks and updating payment records; introduced `TinkoffTokenGenerator` class for secure token generation. | | main/templates/main/partials/billing_tab_current_plan.html | Modified template to display dynamic user plan name and balance. | | main/templates/main/partials/payment_plan_modal.html | Updated hidden input for `description` to dynamically populate with plan name. | | main/utils.py | Enhanced error handling in `calculate_percentage_change` function. | | main/views.py | Updated `billing_view` and added `payment_callback_view` for improved payment processing and callback handling. | | mp_monitor/settings.py | Added `TINKOFF_MERCHANT_ID` environment variable for payment system configuration. | | notifier/signals.py | Improved error handling in `check_price_change` function to manage division errors. | | tests/factories.py | Introduced `PaymentPlanFactory` for creating test instances of `PaymentPlan`. | | tests/main/test_main_payment_utils.py | Added `TestUpdatePaymentRecords` class to validate `update_payment_records` functionality with multiple test cases. | ## Possibly related PRs - **#130**: Introduces demo functionality related to user management, potentially impacting payment plan assignments. - **#159**: Includes changes to the `PaymentPlan` model, directly related to the modifications in this PR. - **#177**: Sets up billing functionalities that may interact with the `PaymentPlan` model. - **#181**: Focuses on the billing frontend, likely interacting with the `PaymentPlan` model. - **#183**: Adds backend integration for payments, directly related to changes in the `PaymentPlan` model. - **#190**: Introduces a modal dialog for payment plan selection, enhancing user interaction with the `PaymentPlan`. - **#194**: Adds the ability to switch plans, directly related to changes in the `PaymentPlan` model. - **#205**: Enhances the `Tenant` model with balance manipulation methods, which may interact with `PaymentPlan` management.

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
🪧 Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): - Review comments: Directly reply to a review comment made by CodeRabbit. Example: - `I pushed a fix in commit , please review it.` - `Generate unit testing code for this file.` - `Open a follow-up GitHub issue for this discussion.` - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (Invoked using PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. ### Other keywords and placeholders - Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. - Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description. - Add `@coderabbitai` anywhere in the PR title to generate the title automatically. ### CodeRabbit Configuration File (`.coderabbit.yaml`) - You can programmatically configure CodeRabbit by adding a `.coderabbit.yaml` file to the root of your repository. - Please see the [configuration documentation](https://docs.coderabbit.ai/guides/configure-coderabbit) for more information. - If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: `# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json` ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.