Commit graph

1107 commits

Author SHA1 Message Date
b914b5fc91 feat(graphene): replace Float with Decimal for price and discount_price
Switched Float fields to Decimal in Graphene for increased precision in monetary values. Updated related queries and resolvers accordingly.

Additionally:
- Added custom DynamicMail health check for runtime-based email configuration.
- Enhanced admin login flow to handle unconfigured email backends by logging users directly.
2026-03-05 14:00:49 +03:00
31d9ccb82a refactor(core): simplify code for price aggregation and formatting
Improve readability by removing unnecessary parentheses in `min_price` and `max_price` methods in `models.py`. Enhance JSON serialization error formatting in `views.py` and adjustment of field formatting in serializers. No functional changes, purely stylistic updates for code maintainability.
2026-03-05 11:03:45 +03:00
6955e6bec6 feat(models/serializers): migrate to Decimal for monetary values
Replaced `float` with `Decimal` for monetary calculations to prevent precision loss and enhance accuracy. Updated related models, serializers, and utility functions accordingly.
2026-03-05 11:03:27 +03:00
e0e3c93e63 refactor(scripts): centralize static files collection in Docker entrypoint
Moved static files collection from platform-specific scripts to the Docker entrypoint script. Simplifies maintenance by eliminating redundant logic across Windows, Unix, and restart scripts.

Updated logo/icon settings to use `static()` for better flexibility.
2026-03-05 00:07:41 +03:00
3859445c78 feat(graphene): add address_line_1 and address_line_2 to object types
Expanded the object type fields to include additional address details for better data representation.
2026-03-04 20:17:30 +03:00
6ac5636779 feat(graphene): add address line fields to CreateAddress mutation
include `address_line_1` and optional `address_line_2` to enhance address creation functionality.
2026-03-04 19:59:42 +03:00
29347d1cbc chore(docker): remove unused media-data volume from services
The `media-data` volume was unused and has been removed to simplify the configuration. This helps reduce potential confusion and unused clutter in the `docker-compose.yml` file.
2026-03-03 15:18:11 +03:00
b77c2ec547 chore(docker): remove unused volumes from docker-compose.yml
Cleaned up `static-data` and `media-data` volumes as they are no longer in use, simplifying the configuration.
2026-03-03 15:10:11 +03:00
aabd8b18b4 feat(commerce): ensure precise decimal handling in aggregated calculations
replace float-based defaults with `Decimal` in Coalesce and set `DecimalField` as the output type to improve precision when aggregating monetary values.
2026-03-03 13:49:29 +03:00
e5553ac6dd refactor(vibes_auth): update admin site structure for cleaner customization
replace `extra_urls` with `get_urls` in `SchonAdminSite` for improved URL handling and compatibility with super-class methods. Simplify `apps.py` to set `SchonAdminSite` directly as the class of `admin.site`.
2026-03-03 02:40:39 +03:00
304608adc4 feat(elasticsearch): add scripts for cleaning Elasticsearch data
Introduce `delete-elasticsearch` scripts for both Windows and Unix to stop, remove containers, and delete data volumes. Updated `Makefile` to include this command for easier management. Upgraded `django-elasticsearch-dsl` and related dependencies to their latest versions for compatibility.

Breaking change: Updated Elasticsearch image and configuration to enable xpack security. Ensure environment variables are properly set.
2026-03-03 01:44:51 +03:00
ad320235d6 feat(payments, vibes_auth, core): introduce decimal fields, 2FA, and admin OTP
- Refactored monetary fields across models to use `DecimalField` for improved precision.
- Implemented two-factor authentication (2FA) for admin logins with OTP codes.
- Added ability to generate admin OTP via management commands.
- Updated Docker Compose override for dev-specific port bindings.
- Included template for 2FA OTP verification to enhance security.

Additional changes:
- Upgraded and downgraded various dependencies (e.g., django-celery-beat and yarl).
- Replaced float-based calculations with decimal for consistent rounding behavior.
- Improved admin user management commands for activation and OTP generation.
2026-03-03 00:42:21 +03:00
a5a9c70080 fix(mutations): require wishlist_uuid in mutations to ensure data integrity
Made `wishlist_uuid` a required argument to avoid processing without a valid identifier. Prevents potential errors caused by missing wishlist references.
2026-03-02 23:12:38 +03:00
dc94841f40 feat(core/blog): add support for product videos and blog post images
This commit introduces support for uploading optional video files to products and image files to blog posts. Enhanced admin interfaces were added to preview these files directly. Also includes adjustments to GraphQL types and serializers to expose the new fields.
2026-03-02 01:57:57 +03:00
d97e9a973b feat(viewsets, schema): unify retrieveExactProducts API in DRF and GraphQL
replace the custom Graphene mutation `RetrieveExactProducts` with a unified DRF implementation using `inline_serializer`. Updated GraphQL schema to resolve `retrieve_exact_products` query using a standardized approach.

This change improves consistency across DRF and GraphQL APIs, reduces duplicate logic, and centralizes request validations.
2026-03-02 01:31:41 +03:00
85576cf4ad feat(schema): add retrieveExactProducts query to support detailed product retrieval
Added the `RetrieveExactProducts` query to the schema to enable fetching specific product details. This addition enhances the granularity of product data retrieval in the GraphQL API.
2026-03-02 00:53:22 +03:00
cffbaf66b3 feat(graphql): make max query depth configurable with environment variable
allow setting `GRAPHQL_MAX_QUERY_DEPTH` via environment variable to provide flexibility in limiting query depth and preventing DoS attacks. Defaults to 13 if not set.
2026-03-02 00:45:42 +03:00
6d24ee0c92 refactor(core): use defaults in get_or_create and add annotations
Refactored `get_or_create` calls in `demo_data.py` to use the `defaults` parameter for cleaner code and consistency. Added type annotations for `get_min_price` and `get_max_price` in serializers for improved type safety.
2026-03-02 00:33:21 +03:00
c3b4637044 feat(uninstall): enhance volume removal for additional data types
add handling for postgres-data, redis-data, static-data, and media-data volumes in both Windows and Unix uninstall scripts. Ensures errors are logged if volume removal fails.
2026-03-02 00:15:36 +03:00
adec5503b2 feat(core/auth): enable encryption for sensitive fields and token handling
Add encryption for user PII fields (phone number, name, attributes) and address fields to enhance data security. Introduced timestamped activation tokens for improved validation. Included migrations to encrypt existing plaintext data.

Refactored GraphQL settings to limit query depth and optionally disable introspection for enhanced API defense. Implemented throttling to safeguard API rates.

Improved Dockerfiles for better user management and restored media migration tools for smooth instance upgrades.
2026-03-02 00:11:57 +03:00
c3d23be973 feat(dependencies): add django-fernet-encrypted-fields and update packages
Added `django-fernet-encrypted-fields` for encrypted field support in Django. Updated dependencies including `django-health-check` (4.0.6 → 4.1.0), `django-modeltranslation` (0.19.19 → 0.20.2), and `filelock` (3.24.3 → 3.25.0) to their latest versions for improved functionality and compatibility.
2026-03-01 22:58:49 +03:00
ff99177139 feat(viewsets): add endpoint to retrieve products by identifier
introduce `exact_list` action in `viewsets.py` to retrieve products by `uuid`, `slug`, or `sku` identifiers. Includes input validation and ratelimiting. Adds corresponding schema documentation and a GraphQL mutation for similar functionality.
2026-03-01 22:22:59 +03:00
ce689ee754 feat(serializers): add min_price and max_price fields in detail serializer
ensure pricing data is included in the serialized output for improved filtering capabilities.
2026-02-28 02:29:12 +03:00
eef774c3a3 feat(markdown): integrate markdown rendering and editor support
Replace WYSIWYG editor with Markdown editor across all relevant models and admin fields. Add utilities for rendering and stripping markdown. Adjust serializers, views, and templates to support markdown content. Introduce `PastedImage` model and upload endpoint for handling inline image uploads in markdown.

This change simplifies content formatting while enhancing flexibility with markdown support.
2026-02-27 23:36:51 +03:00
b6297aefa1 feat(dependencies): add django-unfold-markdown to project
add django-unfold-markdown v0.1.2 to dependencies for enhanced markdown functionality in the application. Updated `uv.lock` and `pyproject.toml` accordingly.
2026-02-27 22:35:36 +03:00
09610d98a2 feat(demo_data): enhance data generation with get_or_create
- Replaced `create` operations with `get_or_create` to ensure idempotency during data generation.
- Avoided redundant user, product image, and post creation when duplicates exist.
- Updated user and stock handling to leverage defaults for improved clarity.
- Prevented overwriting existing blog post and product image content.
2026-02-27 22:27:39 +03:00
df0d503c13 fix(demo_data): update locale override and handle missing value_ru gracefully
Adjust override to use "en-gb" for consistency with regional settings. Improve fallback behavior by assigning default value to `value_ru_ru` when `value_ru` is missing, ensuring data integrity during demo data loading.
2026-02-27 22:21:46 +03:00
0603fe320c style(models): reformat price aggregation queries for readability
Improves code readability by restructuring the `min_price` and `max_price` methods into a more concise and consistent format. No functional changes introduced.
2026-02-27 21:58:56 +03:00
7bb05d4987 feat(models): refine price aggregation to include active stocks
update `min_price` and `max_price` methods to consider only active stocks in price aggregation. This ensures more accurate price calculations by filtering out inactive stock entries.
2026-02-27 21:58:41 +03:00
b1382b09c2 chore(gitignore): fix ignore paths for production configs
Adjusted paths in `.gitignore` to correctly handle production files, ensuring alignment with expected directory structure.
2026-02-27 21:51:51 +03:00
79be6ed4e4 feat(demo_data): use translation override to ensure consistent locale
wraps actions in a `with override("en")` block to enforce the use of the English locale during execution. This ensures consistent behavior and message formatting regardless of the server's default language settings.
2026-02-27 19:02:55 +03:00
a59c5f59dd feat(blog): enhance slug behavior and expand demo data attributes
update `slug` field for `Post` model using `TweakedAutoSlugField` to improve auto-slug behavior with Unicode and additional options. Add detailed `attribute_values` to demo products for enriched metadata. Update dependencies for stability and features.
2026-02-27 18:47:14 +03:00
a1cc0cfd30 feat(category): add min_price and max_price to serializer
enable retrieval of min and max product prices for categories to support price range filters. fixed a typo in queryset filter for brands.
2026-02-27 18:05:27 +03:00
f664b088a4 refactor(category): replace cache usage with model property for min/max price
remove redundant cache lookups for `min_price` and `max_price` in the category model by leveraging cached properties. minimizes complexity and improves maintainability while ensuring consistent behavior.
2026-02-25 12:19:39 +03:00
7efc19e081 feat(monitoring): automate Prometheus web config generation
Remove manual password hashing and web.yml setup in favor of automated generation. Add scripts for both Unix and Windows to create `monitoring/web.yml` using credentials from `.env`.

This improves maintainability and reduces manual intervention during setup and configuration.
2026-02-22 00:17:55 +03:00
069d416585 refactor(monitoring): remove django-prometheus integration
Replaced `django-prometheus` with the default Django components, including model mixins, database backends, and cache configuration. This change simplifies monitoring setup by removing unnecessary dependencies, reducing overhead, and improving compatibility.

**Details:**
- Removed Prometheus metrics endpoints and middleware.
- Updated database, cache, and model configurations to remove `django-prometheus`.
- Adjusted WSGI settings to integrate OpenTelemetry instrumentation instead of Prometheus.
- Updated dependency files and migration schemas accordingly.
2026-02-21 23:44:15 +03:00
1756c3f2b2 feat(debug): integrate django-debug-toolbar for enhanced debugging
Add `django-debug-toolbar` to assist with in-depth debugging during development. Updates were made to `settings`, `urls`, and dependency files to enable this feature.
2026-02-21 22:45:04 +03:00
b6d5409fa0 fix(settings): update health check link to correct URL path
Updated the `health_check` menu link to use the correct URL path, ensuring navigation works as expected.
2026-02-21 22:33:08 +03:00
236323b93b feat(urls): add name to health_check route
Add a name to the health_check URL pattern to improve readability and enable reverse lookups.
2026-02-21 22:26:04 +03:00
8883b9f43d feat(core): replace AutoSlugField with TweakedAutoSlugField for product slugs
Updated `product.slug` to use `TweakedAutoSlugField` for improved functionality, allowing unicode, overwrite capabilities, and enhanced population logic. Adjusted the corresponding migration script to ensure seamless database schema updates.

Also marked `brand.categories` as deprecated.
2026-02-21 22:13:36 +03:00
ec167d4e9c refactor(health-check): replace default views with custom configuration
migrated health check configuration to custom settings for more precise control. Removed unused `health_check` submodules to streamline dependencies. Updated URLs to use `HealthCheckView` with tailored checks. Streamlines health monitoring and reduces unnecessary bloat.
2026-02-21 20:24:33 +03:00
72834f01f6 feat(configuration): add support for configurable language code
allow setting `SCHON_LANGUAGE_CODE` via environment files for both Windows and Unix. Default remains `en-gb`. Updated `LANGUAGE_CODE` in settings to use the new environment variable for increased flexibility.
2026-02-21 20:06:41 +03:00
0962376252 refactor(engine): downgrade ty version and clean up unused code
- Downgrade `ty` dependency from 0.0.18 to 0.0.16 in `pyproject.toml` and related files to address compatibility issues.
- Refactor `filters.py` to use safer attribute handling for field errors.
- Remove unused `TestModelDocument` and `TestModel` references from `documents.py`, reducing unnecessary overhead.
- Minor cleanup in `serializers.py` for improved readability.
2026-02-21 20:01:28 +03:00
f8f051f4e9 feat(admin-docs): add base structure and templates for admin documentation
Introduce templates for admin documentation, including model details, views, template tags, filters, and bookmarklets. This enhances the admin interface by providing detailed documentation directly within the application.
2026-02-21 19:52:28 +03:00
c728204cb1 chore(deps): update dependencies in uv.lock
upgrade versions for `aiogram` (3.24.0 → 3.25.0), `async-lru` (2.1.0 → 2.2.0), `coverage` (7.13.3 → 7.13.4), and `cryptography` (46.0.4 → 46.0.5) to incorporate latest bug fixes and enhancements.
2026-02-21 19:49:47 +03:00
87ed875fe6 feat(category): add brands relationship and resolve method
enable brands association with categories and allow querying of active brands within a category. Updated GraphQL schema, models, and serializers to include this relationship while deprecating redundant category-to-brand ManyToManyField.
2026-02-21 18:27:10 +03:00
10f5c798d4 style(demo_data): fix line break for product image save method
Simplify readability by unifying the method call into a single line. No functional changes.
2026-02-21 18:08:22 +03:00
1c10d5ca53 feat(demo_data): enhance data with images, new categories, and multilingual updates
Expanded demo content with additional images for products and blog posts, improving user experience. Added new categories such as "Jewelry" and "Services," along with their subcategories. Supported richer multilingual descriptions and included new brands, ensuring broader and detailed offerings.
2026-02-21 18:07:07 +03:00
83a8ecfcee chore(gitignore): adjust entries for queries and nginx.conf paths
Modified `.gitignore` to include relative paths for `queries` and `nginx.conf`. This ensures consistency and prevents unintended exclusions.
2026-02-17 01:09:52 +03:00
4504019100 chore(gitignore): add nginx.conf to ignored files
Add `nginx.conf` to the `.gitignore` file to prevent accidental commits of server configuration files.
2026-02-17 00:48:30 +03:00