Commit graph

124 commits

Author SHA1 Message Date
ddeafdbd53 Features: 1) Replace CelerySignalProcessor with RealTimeSignalProcessor for Elasticsearch signal processing;
Fixes: None;

Extra: 1) Update indentation for improved readability; 2) Set ELASTICSEARCH_DSL_AUTOSYNC and ELASTICSEARCH_DSL_PARALLEL to False for configuration change;
2025-05-11 22:52:45 +03:00
be76a3bb8d Features: 1) Introduce conditional check ensuring instance.finalize() execution only when no order product errors exist;
Fixes: 1) Prevent potential incorrect execution of `instance.finalize()` by adding else block;

Extra: 1) Add spacing for improved readability; 2) Minor formatting tweaks in signal logic.
2025-05-11 22:46:45 +03:00
82667216f2 Features: None;
Fixes: 1) Prevent error by adding user check when processing non-PENDING orders; 2) Remove redundant status assignment and save for CREATED orders; 3) Add missing error handler for POST requests in settings;

Extra: None;
2025-05-11 22:43:38 +03:00
3185eb8188 Features: None;
Fixes: 1) Correct typo in 'exclude' method call for categories; 2) Correct typo in 'exclude' method call for brands;

Extra: None;
2025-05-09 06:57:41 +03:00
695058128e Features: 1) Add exception handling for Category.MultipleObjectsReturned and Brand.MultipleObjectsReturned; 2) Add aiosmtpd dependency to pyproject.toml.
Fixes: None;

Extra: 1) Update poetry.lock for the new aiosmtpd package; 2) Perform formatting changes to json and hash entries in poetry.lock for consistency.
2025-05-09 06:53:53 +03:00
fb91243718 Features: 1) Add management command to clear unwanted data including duplicate stocks and categories; 2) Automatically deactivate products without stocks; 3) Remove orphaned stocks.
Fixes: 1) None.

Extra: Refactored logic for grouped deletions and added success messages for better logging.
2025-05-09 04:51:21 +03:00
60c70e50f2 Features:
1) Add "created" and "modified" fields to list_filter in CategoryAdmin;

Fixes:
(none);

Extra:
(none);
2025-05-09 04:35:07 +03:00
ed16a4fd3d Revert "Features:"
This reverts commit a31ce44dfc.
2025-05-09 04:31:48 +03:00
a31ce44dfc Features:
1) Add Celery shared_task decorator to `update_stock` method for asynchronous execution.

Fixes:
1) Replace direct `update_stock()` calls with `update_stock.delay()` to enable task queuing.

Extra:
1) Add missing import for `shared_task` in `core/vendors/__init__.py`.
2025-05-09 04:29:07 +03:00
60240d4cd9 Features:
1) Extend worker task time limits (soft: 10800 seconds, hard: 21600 seconds);

Fixes:
(none);

Extra:
1) Update `docker-compose.yml` to reflect new task time limits in Celery command;
2025-05-09 04:19:13 +03:00
0a9a6dfd6c Features:
1) Add error handling with logger and custom error message for holiday API requests;

Fixes:
(none);

Extra:
1) Replace direct API response raising with try-except block for better robustness and logging;
2025-05-09 04:17:47 +03:00
7ef0dc6fa9 Features:
1) Add `BrandProductDetailSerializer` with logo fields (small_logo, big_logo);
2) Replace `BrandDetailSerializer` with `BrandProductDetailSerializer` in `ProductDetailSerializer`;

Fixes:
(none);

Extra:
1) Minor structural adjustments for code clarity;
2025-05-08 17:57:23 +03:00
ce5c475b71 Features:
1) Enhance `OpenApiParameter` usage by introducing structured keyword arguments to improve readability and maintainability;

Fixes:
1) Remove redundant `location` parameter for consistency in parameter definitions;

Extra:
1) Refactor `extend_schema` definitions with a uniform formatting style for better clarity and alignment;
2) Update response structures to improve readability and maintain consistent indentation.
2025-05-08 17:52:30 +03:00
0b25389d39 Features:
1) Add fallback to use `msgid` when user input is empty during translation prompt.

Fixes:
1) Fix alignment and indentation issues in API request data formatting.

Extra:
1) Minor formatting and whitespace cleanup in placeholder regex and related functions;
2) Regenerate `.mo` file for `cs_CZ` locale.
2025-05-08 17:45:00 +03:00
f5c1d64d46 Features:
1) Enhance lookup logic to support UUID validation for products in viewsets;
2) Add extensive filtering, sorting, and attributes documentation for product endpoints;
3) Define new OpenAPI parameters for querying products with detailed constraints.

Fixes:
1) Add missing import for `UUID` in core viewsets.

Extra:
1) Refactor and reorganize product API schema for clarity and consistency.
2025-05-08 17:33:40 +03:00
9941b45bd3 Features:
1) Add PRODUCT_SCHEMA to supported schemas;
2) Implement @extend_schema_view decorator for ProductViewSet;

Fixes:
1) None;

Extra:
1) None;
2025-05-08 17:25:14 +03:00
9f64b4214b Features:
1) None;

Fixes:
1) Corrected formatting of "fuzzy" flags in multiple locale `.po` files for consistent syntax;

Extra:
1) No functional changes, only formatting updates in translation files;
2025-05-08 17:15:33 +03:00
808e2aae25 Refactor category and brand resolution logic.
Improve handling of duplicate and inactive objects during category and brand resolution. Ensures only the most relevant entry is retained while unused duplicates are deleted. Fixes potential issues with object retrieval and creation logic.
2025-05-07 19:55:36 +03:00
0ed8a8d48e Remove unused serializer and update ignored error settings
The `BuyAsBusinessOrderSerializer` import was removed as it is no longer used. Additionally, new error types were added to the `ignore_errors` list in the base settings file to prevent unnecessary logging of expected exceptions.
2025-05-07 18:18:23 +03:00
974568cdee Fix fallback logic for object name extraction in search.
Updated the fallback chain to check for "title" if "name" is unavailable when extracting object names in Elasticsearch results. This ensures better handling of hits where "title" is present instead of "name".
2025-05-07 16:07:38 +03:00
0cb4ae42a4 Add support for search results for posts
Extended the search functionality to include results for posts. Updated `SearchResultsType` and related types to handle `posts`, adding a new `SearchPostsResultsType` with `uuid`, `name`, and `slug`. Adjusted mutations to populate posts in the search response.
2025-05-07 15:57:10 +03:00
80e1b0335b "Enhance product filtering and permissions handling
Ensure inactive products without stock are excluded from queries by updating the filter. Add 'buy_unregistered' action to permissions for better access control."
2025-05-07 15:07:48 +03:00
50fe95e713 Remove unused filters from admin panel configuration
This change eliminates redundant filters like "category", "attributes__attribute", and "brand" from the admin panel. This helps simplify the interface and improve usability.
2025-05-07 10:52:22 +03:00
e1f54304b6 Refactor error handling in auto_resolve methods.
Replaced context manager suppress(KeyError) with try-except blocks to handle both KeyError and IndexError in auto_resolve_category and auto_resolve_brand methods. This improves clarity and ensures proper handling of potential IndexError cases.
2025-05-07 10:40:40 +03:00
7f9f2d66f3 Ignore database backup files in .gitignore
Added `db_backups` to the `.gitignore` file to prevent accidental inclusion of backup files in version control. This helps maintain a cleaner repository and avoids potential security risks.
2025-05-07 09:49:21 +03:00
d1cd8515b5 Set console production log level to WARNING.
Updated the log level from INFO to WARNING in the console production handler. This change aims to reduce log noise and surface only warnings and errors in production environments.
2025-05-07 04:57:18 +03:00
4d63bde7a3 Refactor attribute retrieval logic in detail serializer.
Simplify the conditional logic for fetching attributes based on user permissions. This improves code readability and maintains the same functionality.
2025-05-07 04:40:44 +03:00
6c04faf97b Simplify Celery command formatting in docker-compose.yml
Consolidate the Celery worker command into a single line for improved readability and maintainability. This change reduces unnecessary line breaks without altering functionality.
2025-05-07 04:12:35 +03:00
1db400be6f Refactor celery command formatting in docker-compose.yml
Updated the Celery worker command in docker-compose.yml for better readability and consistency using line continuation characters. Ensured no functional changes were introduced during the formatting update.
2025-05-07 04:08:36 +03:00
5537830592 Update Dockerfile to configure PostgreSQL repository and client
Replaced Debian's PostgreSQL client with version 17 and added the PostgreSQL apt repository for more control over versions. Switched from `apt` to `apt-get` for consistency, and included necessary dependencies like `wget` and `gnupg` for repository setup.
2025-05-07 03:57:15 +03:00
5295948b8c Add postgresql-client to Dockerfile dependencies
The addition of `postgresql-client` ensures tools relying on PostgreSQL are available within the container. This change improves compatibility with PostgreSQL-based workflows and resolves potential missing dependencies.
2025-05-07 03:20:30 +03:00
87e124f614 Handle errors in vendor stock updates and inactive vendors
Add error handling during the stock update process to log and skip problematic vendors without halting execution. Additionally, ensure `get_vendor_instance` only returns active vendors, raising an error if the vendor is inactive. This improves system resilience and data integrity.
2025-05-07 03:15:23 +03:00
6e19d9f65f Add new dependencies and standardize file formatting
Added `paramiko`, `django-dbbackup`, `django-storages`, and `bcrypt` to the dependency list in `pyproject.toml`. Reformatted file entries in `poetry.lock` to ensure consistent alignment with style guidelines, improving readability and maintainability.
2025-05-07 03:10:50 +03:00
5aca04cf55 Reorder imports in core/vendors/__init__.py
Adjusted the import order in compliance with PEP 8 guidelines. This helps improve code readability and maintain consistency across the codebase.
2025-05-07 02:41:41 +03:00
5d007c07a2 Add auto_resolve_brand method to handle brand resolution
Introduced a new static method, auto_resolve_brand, to simplify and automate the resolution or creation of Brand objects based on a given brand name. Updated imports in core/vendors/__init__.py to include the Brand model. This enhances the system's ability to process brands effectively.
2025-05-07 02:40:23 +03:00
70cf2c23a1 Add auto_resolve_category method to vendor logic
Introduced the auto_resolve_category method to streamline category resolution using Elasticsearch. This enhances category lookup efficiency and ensures seamless creation or retrieval of categories when necessary.
2025-05-07 02:38:28 +03:00
0e86c96ad3 Set default value for is_composite_pk in admin config
Added an `is_composite_pk` attribute with a default value of `False` to the admin configuration. This ensures clarity in object definition and supports better configurability for composite primary key scenarios.
2025-05-06 19:26:47 +03:00
12ccd04943 Update API version to 2.6.0 and reformat migration files
Updated the API version from 2.5.0 to 2.6.0 in the DRF settings for consistency across configurations. Reformatted migration files for better readability, ensuring consistency in code style and improving maintainability. These changes do not alter functionality but enhance clarity and documentation.
2025-05-06 19:19:49 +03:00
7d6eb8a27a Refine API key validation in task configuration.
Previously, an "example key" could mistakenly pass the check, leading to potential misuse. This update ensures features are disabled if the API key is invalid or set to default.
2025-05-06 17:57:35 +03:00
ce66513488 Refactor email sending to use reusable connections
Updated email sending logic across multiple modules to utilize `django.core.mail.get_connection` for better email connection management and efficiency. Adjusted filters in `conditions.py` to correctly handle dictionary inputs when checking attribute lengths.
2025-05-06 17:44:55 +03:00
6fd0a48c0c Handle IntegrityError when creating orders.
Added logic to handle IntegrityError by generating unique human-readable IDs for orders during creation. This ensures no duplicate order entries are created in case of integrity constraints.
2025-05-06 17:35:35 +03:00
3e53224092 Add support for human_readable_id in filters and models
Added a `human_readable_id` filter to the `OrderFilter` class and enabled ordering by this field. Updated the `create_customer_payload` method to include the `is_business` attribute, ensuring compatibility with new functionality.
2025-05-06 17:29:02 +03:00
65812190a2 Fix is_business property to handle missing attributes
Previously, the method could raise an error if `attributes` was None. This update ensures the method returns `False` when `attributes` is not defined, preventing potential runtime issues.
2025-05-06 17:22:48 +03:00
4f322456e9 Fix order sorting by changing ordering field to UUID
Previously, orders with duplicate `human_readable_id` were sorted by `id`, which could lead to inconsistencies. Updated the code to sort by `uuid` to ensure a more reliable and unique ordering. This prevents potential issues when resolving duplicate entries.
2025-05-06 17:18:57 +03:00
ef2830d36a Fix duplicate detection by using UUID in migration script
The migration script now counts duplicates based on the "uuid" field instead of "id". This ensures more accurate identification of duplicate "human_readable_id" entries.
2025-05-06 17:16:52 +03:00
146bbc3539 Fix duplicate human_readable_id values in Order model
This migration resolves duplicate human_readable_id values by assigning unique IDs where necessary. A data migration script is introduced to identify and fix duplicates before altering the field.
2025-05-06 17:13:33 +03:00
ca60bf09a6 Increase max_length of human_readable_id to 8.
Updated the `human_readable_id` field in the `Order` model to support a maximum length of 8 instead of 6. Removed the redundant migration file `0019_alter_order_human_readable_id.py` for cleanup.
2025-05-06 17:06:39 +03:00
dc9effdd5b Update human_readable_id field in Order model
Alter the `human_readable_id` field to use a custom generator function and ensure uniqueness. This improves the readability and integrity of order identifiers.
2025-05-06 17:04:29 +03:00
4deece673f Increase max_length of human_readable_id to 8.
Updated the field definition of `human_readable_id` to allow up to 8 characters instead of 6. This change accommodates longer identifiers as required for recent updates.
2025-05-06 17:01:55 +03:00
0c1caa422c Add human-readable ID field to Order model
Introduced a `human_readable_id` field to the Order model to provide a concise and recognizable identifier, initialized with a default generator. Updated the field to enforce uniqueness to ensure consistent identification across orders.
2025-05-06 16:58:44 +03:00