Рефакторинг моделей заказов и добавление методов оплаты

This commit is contained in:
2025-11-26 13:38:02 +03:00
parent 08e8409a66
commit 0653ec0545
20 changed files with 1720 additions and 873 deletions

View File

@@ -50,6 +50,7 @@ urlpatterns = [
path('api/categories/create/', api_views.create_category_api, name='api-category-create'),
path('api/categories/<int:pk>/rename/', api_views.rename_category_api, name='api-category-rename'),
path('api/products/<int:pk>/update-price/', api_views.update_product_price_api, name='api-update-product-price'),
path('api/payment-methods/', api_views.get_payment_methods, name='api-payment-methods'),
# Photo processing status API (for AJAX polling)
path('api/photos/status/<str:task_id>/', photo_status_api.photo_processing_status, name='api-photo-status'),

View File

@@ -1217,3 +1217,39 @@ def update_product_price_api(request, pk):
'success': False,
'error': f'Ошибка при обновлении цены: {str(e)}'
}, status=500)
def get_payment_methods(request):
"""
API endpoint для получения списка активных способов оплаты.
Используется для динамической загрузки payment methods в JavaScript.
Возвращает JSON:
[
{
"id": 1,
"name": "Наличные курьеру",
"code": "cash_to_courier",
"description": "Оплата наличными при получении заказа"
},
...
]
"""
try:
from orders.models import PaymentMethod
# Получаем все активные способы оплаты, упорядоченные по полю order и названию
payment_methods = PaymentMethod.objects.filter(
is_active=True
).order_by('order', 'name').values('id', 'name', 'code', 'description')
# Преобразуем QuerySet в список
methods_list = list(payment_methods)
return JsonResponse(methods_list, safe=False)
except Exception as e:
logger.error(f'Ошибка при загрузке способов оплаты: {str(e)}')
return JsonResponse({
'error': f'Ошибка при загрузке способов оплаты: {str(e)}'
}, status=500)