from django.urls import path from . import views from .views import api_views from .views import photo_status_api app_name = 'products' urlpatterns = [ # Main unified list for products and kits (default view) path('', views.CombinedProductListView.as_view(), name='products-list'), # Каталог с drag-n-drop path('catalog/', views.CatalogView.as_view(), name='catalog'), # CRUD URLs for Product path('product/create/', views.ProductCreateView.as_view(), name='product-create'), path('product//', views.ProductDetailView.as_view(), name='product-detail'), path('product//update/', views.ProductUpdateView.as_view(), name='product-update'), path('product//delete/', views.ProductDeleteView.as_view(), name='product-delete'), # Import/Export path('import/', views.product_import_view, name='product-import'), path('import/status//', views.product_import_status_view, name='product-import-status'), path('import/status//api/', views.product_import_status_api, name='product-import-status-api'), path('import/errors/download/', views.download_import_errors, name='product-import-errors-download'), # Photo management for Product path('product/photo//delete/', views.product_photo_delete, name='product-photo-delete'), path('product/photo//set-main/', views.product_photo_set_main, name='product-photo-set-main'), path('product/photo//move-up/', views.product_photo_move_up, name='product-photo-move-up'), path('product/photo//move-down/', views.product_photo_move_down, name='product-photo-move-down'), path('product/photos/delete-bulk/', views.product_photos_delete_bulk, name='product-photos-delete-bulk'), # CRUD URLs for ProductKit (комплекты/букеты) path('kit/create/', views.ProductKitCreateView.as_view(), name='productkit-create'), path('kit//', views.ProductKitDetailView.as_view(), name='productkit-detail'), path('kit//update/', views.ProductKitUpdateView.as_view(), name='productkit-update'), path('kit//delete/', views.ProductKitDeleteView.as_view(), name='productkit-delete'), path('kit//make-permanent/', views.ProductKitMakePermanentView.as_view(), name='productkit-make-permanent'), # Photo management for ProductKit path('kit/photo//delete/', views.productkit_photo_delete, name='productkit-photo-delete'), path('kit/photo//set-main/', views.productkit_photo_set_main, name='productkit-photo-set-main'), path('kit/photo//move-up/', views.productkit_photo_move_up, name='productkit-photo-move-up'), path('kit/photo//move-down/', views.productkit_photo_move_down, name='productkit-photo-move-down'), path('kit/photos/delete-bulk/', views.productkit_photos_delete_bulk, name='productkit-photos-delete-bulk'), # API endpoints path('api/search-products-variants/', views.search_products_and_variants, name='api-search-products-variants'), path('api/products//sales-units/', api_views.get_product_sales_units_api, name='api-product-sales-units'), path('api/kits/temporary/create/', views.create_temporary_kit_api, name='api-temporary-kit-create'), path('api/tags/create/', api_views.create_tag_api, name='api-tag-create'), path('api/tags//toggle/', api_views.toggle_tag_status_api, name='api-tag-toggle'), path('api/categories/create/', api_views.create_category_api, name='api-category-create'), path('api/categories//rename/', api_views.rename_category_api, name='api-category-rename'), path('api/products//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'), path('api/filtered-items-ids/', api_views.get_filtered_items_ids, name='api-filtered-items-ids'), path('api/bulk-update-categories/', api_views.bulk_update_categories, name='api-bulk-update-categories'), # Photo processing status API (for AJAX polling) path('api/photos/status//', photo_status_api.photo_processing_status, name='api-photo-status'), path('api/photos/batch-status/', photo_status_api.batch_photo_status, name='api-batch-photo-status'), # CRUD URLs for ProductVariantGroup (Варианты товаров) path('variant-groups/', views.ProductVariantGroupListView.as_view(), name='variantgroup-list'), path('variant-groups/create/', views.ProductVariantGroupCreateView.as_view(), name='variantgroup-create'), path('variant-groups//', views.ProductVariantGroupDetailView.as_view(), name='variantgroup-detail'), path('variant-groups//update/', views.ProductVariantGroupUpdateView.as_view(), name='variantgroup-update'), path('variant-groups//delete/', views.ProductVariantGroupDeleteView.as_view(), name='variantgroup-delete'), # AJAX endpoints for ProductVariantGroup item management path('variant-groups/item//move//', views.product_variant_group_item_move, name='variantgroup-item-move'), # CRUD URLs for ProductCategory path('categories/', views.ProductCategoryListView.as_view(), name='category-list'), path('categories/create/', views.ProductCategoryCreateView.as_view(), name='category-create'), path('categories//', views.ProductCategoryDetailView.as_view(), name='category-detail'), path('categories//update/', views.ProductCategoryUpdateView.as_view(), name='category-update'), path('categories//delete/', views.ProductCategoryDeleteView.as_view(), name='category-delete'), # Category photo management path('categories/photo//delete/', views.category_photo_delete, name='category-photo-delete'), path('categories/photo//set-main/', views.category_photo_set_main, name='category-photo-set-main'), path('categories/photo//move-up/', views.category_photo_move_up, name='category-photo-move-up'), path('categories/photo//move-down/', views.category_photo_move_down, name='category-photo-move-down'), # CRUD URLs for ProductTag path('tags/', views.ProductTagListView.as_view(), name='tag-list'), path('tags/create/', views.ProductTagCreateView.as_view(), name='tag-create'), path('tags//', views.ProductTagDetailView.as_view(), name='tag-detail'), path('tags//update/', views.ProductTagUpdateView.as_view(), name='tag-update'), path('tags//delete/', views.ProductTagDeleteView.as_view(), name='tag-delete'), # CRUD URLs for ProductAttribute (справочник атрибутов) path('attributes/', views.ProductAttributeListView.as_view(), name='attribute-list'), path('attributes/create/', views.ProductAttributeCreateView.as_view(), name='attribute-create'), path('attributes//', views.ProductAttributeDetailView.as_view(), name='attribute-detail'), path('attributes//update/', views.ProductAttributeUpdateView.as_view(), name='attribute-update'), path('attributes//delete/', views.ProductAttributeDeleteView.as_view(), name='attribute-delete'), # API для атрибутов path('api/attributes/', views.get_attributes_list_api, name='api-attributes-list'), path('api/attributes/create/', views.create_attribute_api, name='api-attribute-create'), path('api/attributes//values/add/', views.add_attribute_value_api, name='attribute-add-value'), path('api/attributes//values//delete/', views.delete_attribute_value_api, name='attribute-delete-value'), # CRUD URLs for ConfigurableProduct path('configurable/', views.ConfigurableProductListView.as_view(), name='configurableproduct-list'), path('configurable/create/', views.ConfigurableProductCreateView.as_view(), name='configurableproduct-create'), path('configurable//', views.ConfigurableProductDetailView.as_view(), name='configurableproduct-detail'), path('configurable//update/', views.ConfigurableProductUpdateView.as_view(), name='configurableproduct-update'), path('configurable//delete/', views.ConfigurableProductDeleteView.as_view(), name='configurableproduct-delete'), # API для управления вариантами ConfigurableProduct path('configurable//options/add/', views.add_option_to_configurable, name='configurableproduct-add-option'), path('configurable//options//remove/', views.remove_option_from_configurable, name='configurableproduct-remove-option'), path('configurable//options//set-default/', views.set_option_as_default, name='configurableproduct-set-default-option'), # Управление единицами измерения (справочник) path('units/', views.unit_of_measure_list, name='unit-list'), path('units/create/', views.unit_of_measure_create, name='unit-create'), path('units//edit/', views.unit_of_measure_update, name='unit-update'), path('units//delete/', views.unit_of_measure_delete, name='unit-delete'), # Единицы продажи (устаревшие отдельные страницы, для совместимости) path('sales-units/', views.product_sales_unit_list, name='sales-unit-list'), path('sales-units/create/', views.product_sales_unit_create, name='sales-unit-create'), path('sales-units//edit/', views.product_sales_unit_update, name='sales-unit-update'), path('sales-units//delete/', views.product_sales_unit_delete, name='sales-unit-delete'), ]