Переименование URL configurablekit-* → configurableproduct-*

- URL paths: configurable-kits/ → configurable/
- URL names: configurablekit-list → configurableproduct-list и т.д.
- Обновлены все ссылки в шаблонах и views

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2025-12-30 02:05:13 +03:00
parent 7954f85e05
commit f39ee5f15d
7 changed files with 27 additions and 27 deletions

View File

@@ -7,8 +7,8 @@
<div class="container-fluid px-4 py-3"> <div class="container-fluid px-4 py-3">
<nav aria-label="breadcrumb" class="mb-3"> <nav aria-label="breadcrumb" class="mb-3">
<ol class="breadcrumb breadcrumb-sm mb-0"> <ol class="breadcrumb breadcrumb-sm mb-0">
<li class="breadcrumb-item"><a href="{% url 'products:configurablekit-list' %}">Вариативные товары</a></li> <li class="breadcrumb-item"><a href="{% url 'products:configurableproduct-list' %}">Вариативные товары</a></li>
<li class="breadcrumb-item"><a href="{% url 'products:configurablekit-detail' object.pk %}">{{ object.name }}</a></li> <li class="breadcrumb-item"><a href="{% url 'products:configurableproduct-detail' object.pk %}">{{ object.name }}</a></li>
<li class="breadcrumb-item active">Удаление</li> <li class="breadcrumb-item active">Удаление</li>
</ol> </ol>
</nav> </nav>
@@ -37,7 +37,7 @@
<button type="submit" class="btn btn-danger"> <button type="submit" class="btn btn-danger">
<i class="bi bi-trash me-1"></i>Да, удалить <i class="bi bi-trash me-1"></i>Да, удалить
</button> </button>
<a href="{% url 'products:configurablekit-detail' object.pk %}" class="btn btn-secondary"> <a href="{% url 'products:configurableproduct-detail' object.pk %}" class="btn btn-secondary">
<i class="bi bi-x-circle me-1"></i>Отмена <i class="bi bi-x-circle me-1"></i>Отмена
</a> </a>
</form> </form>

View File

@@ -8,7 +8,7 @@
<div class="container-fluid px-4 py-3"> <div class="container-fluid px-4 py-3">
<nav aria-label="breadcrumb" class="mb-3"> <nav aria-label="breadcrumb" class="mb-3">
<ol class="breadcrumb breadcrumb-sm mb-0"> <ol class="breadcrumb breadcrumb-sm mb-0">
<li class="breadcrumb-item"><a href="{% url 'products:configurablekit-list' %}">Вариативные товары</a></li> <li class="breadcrumb-item"><a href="{% url 'products:configurableproduct-list' %}">Вариативные товары</a></li>
<li class="breadcrumb-item active">{{ configurable_kit.name }}</li> <li class="breadcrumb-item active">{{ configurable_kit.name }}</li>
</ol> </ol>
</nav> </nav>
@@ -17,10 +17,10 @@
<div class="mb-3 d-flex justify-content-between align-items-center"> <div class="mb-3 d-flex justify-content-between align-items-center">
<h4 class="mb-0">{{ configurable_kit.name }}</h4> <h4 class="mb-0">{{ configurable_kit.name }}</h4>
<div> <div>
<a href="{% url 'products:configurablekit-update' configurable_kit.pk %}" class="btn btn-warning btn-sm"> <a href="{% url 'products:configurableproduct-update' configurable_kit.pk %}" class="btn btn-warning btn-sm">
<i class="bi bi-pencil me-1"></i>Редактировать <i class="bi bi-pencil me-1"></i>Редактировать
</a> </a>
<a href="{% url 'products:configurablekit-delete' configurable_kit.pk %}" class="btn btn-danger btn-sm"> <a href="{% url 'products:configurableproduct-delete' configurable_kit.pk %}" class="btn btn-danger btn-sm">
<i class="bi bi-trash me-1"></i>Удалить <i class="bi bi-trash me-1"></i>Удалить
</a> </a>
</div> </div>

View File

@@ -36,7 +36,7 @@ input[name*="DELETE"] {
<div class="container-fluid px-4 py-3"> <div class="container-fluid px-4 py-3">
<nav aria-label="breadcrumb" class="mb-3"> <nav aria-label="breadcrumb" class="mb-3">
<ol class="breadcrumb breadcrumb-sm mb-0"> <ol class="breadcrumb breadcrumb-sm mb-0">
<li class="breadcrumb-item"><a href="{% url 'products:configurablekit-list' %}">Вариативные товары</a></li> <li class="breadcrumb-item"><a href="{% url 'products:configurableproduct-list' %}">Вариативные товары</a></li>
<li class="breadcrumb-item active">{% if object %}Редактирование{% else %}Создание{% endif %}</li> <li class="breadcrumb-item active">{% if object %}Редактирование{% else %}Создание{% endif %}</li>
</ol> </ol>
</nav> </nav>
@@ -196,7 +196,7 @@ input[name*="DELETE"] {
<button type="submit" class="btn btn-primary"> <button type="submit" class="btn btn-primary">
<i class="bi bi-check-circle me-1"></i>Сохранить <i class="bi bi-check-circle me-1"></i>Сохранить
</button> </button>
<a href="{% if object %}{% url 'products:configurablekit-detail' object.pk %}{% else %}{% url 'products:configurablekit-list' %}{% endif %}" <a href="{% if object %}{% url 'products:configurableproduct-detail' object.pk %}{% else %}{% url 'products:configurableproduct-list' %}{% endif %}"
class="btn btn-secondary"> class="btn btn-secondary">
<i class="bi bi-x-circle me-1"></i>Отмена <i class="bi bi-x-circle me-1"></i>Отмена
</a> </a>

View File

@@ -68,7 +68,7 @@
{% for item in configurable_kits %} {% for item in configurable_kits %}
<tr> <tr>
<td class="fw-semibold"> <td class="fw-semibold">
<a href="{% url 'products:configurablekit-detail' item.pk %}" class="text-decoration-none"> <a href="{% url 'products:configurableproduct-detail' item.pk %}" class="text-decoration-none">
{{ item.name }} {{ item.name }}
</a> </a>
</td> </td>
@@ -92,15 +92,15 @@
</td> </td>
<td><small class="text-muted">{{ item.created_at|date:"d.m.Y H:i" }}</small></td> <td><small class="text-muted">{{ item.created_at|date:"d.m.Y H:i" }}</small></td>
<td> <td>
<a href="{% url 'products:configurablekit-detail' item.pk %}" <a href="{% url 'products:configurableproduct-detail' item.pk %}"
class="btn btn-sm btn-outline-primary" title="Просмотр"> class="btn btn-sm btn-outline-primary" title="Просмотр">
<i class="bi bi-eye"></i> <i class="bi bi-eye"></i>
</a> </a>
<a href="{% url 'products:configurablekit-update' item.pk %}" <a href="{% url 'products:configurableproduct-update' item.pk %}"
class="btn btn-sm btn-outline-warning" title="Редактировать"> class="btn btn-sm btn-outline-warning" title="Редактировать">
<i class="bi bi-pencil"></i> <i class="bi bi-pencil"></i>
</a> </a>
<a href="{% url 'products:configurablekit-delete' item.pk %}" <a href="{% url 'products:configurableproduct-delete' item.pk %}"
class="btn btn-sm btn-outline-danger" title="Удалить"> class="btn btn-sm btn-outline-danger" title="Удалить">
<i class="bi bi-trash"></i> <i class="bi bi-trash"></i>
</a> </a>
@@ -109,7 +109,7 @@
{% empty %} {% empty %}
<tr> <tr>
<td colspan="7" class="text-center text-muted py-4"> <td colspan="7" class="text-center text-muted py-4">
Нет вариативных товаров. <a href="{% url 'products:configurablekit-create' %}">Создать первый</a> Нет вариативных товаров. <a href="{% url 'products:configurableproduct-create' %}">Создать первый</a>
</td> </td>
</tr> </tr>
{% endfor %} {% endfor %}

View File

@@ -99,14 +99,14 @@ urlpatterns = [
path('api/attributes/<int:pk>/values/<int:value_id>/delete/', views.delete_attribute_value_api, name='attribute-delete-value'), path('api/attributes/<int:pk>/values/<int:value_id>/delete/', views.delete_attribute_value_api, name='attribute-delete-value'),
# CRUD URLs for ConfigurableProduct # CRUD URLs for ConfigurableProduct
path('configurable-kits/', views.ConfigurableProductListView.as_view(), name='configurablekit-list'), path('configurable/', views.ConfigurableProductListView.as_view(), name='configurableproduct-list'),
path('configurable-kits/create/', views.ConfigurableProductCreateView.as_view(), name='configurablekit-create'), path('configurable/create/', views.ConfigurableProductCreateView.as_view(), name='configurableproduct-create'),
path('configurable-kits/<int:pk>/', views.ConfigurableProductDetailView.as_view(), name='configurablekit-detail'), path('configurable/<int:pk>/', views.ConfigurableProductDetailView.as_view(), name='configurableproduct-detail'),
path('configurable-kits/<int:pk>/update/', views.ConfigurableProductUpdateView.as_view(), name='configurablekit-update'), path('configurable/<int:pk>/update/', views.ConfigurableProductUpdateView.as_view(), name='configurableproduct-update'),
path('configurable-kits/<int:pk>/delete/', views.ConfigurableProductDeleteView.as_view(), name='configurablekit-delete'), path('configurable/<int:pk>/delete/', views.ConfigurableProductDeleteView.as_view(), name='configurableproduct-delete'),
# API для управления вариантами ConfigurableProduct # API для управления вариантами ConfigurableProduct
path('configurable-kits/<int:pk>/options/add/', views.add_option_to_configurable, name='configurablekit-add-option'), path('configurable/<int:pk>/options/add/', views.add_option_to_configurable, name='configurableproduct-add-option'),
path('configurable-kits/<int:pk>/options/<int:option_id>/remove/', views.remove_option_from_configurable, name='configurablekit-remove-option'), path('configurable/<int:pk>/options/<int:option_id>/remove/', views.remove_option_from_configurable, name='configurableproduct-remove-option'),
path('configurable-kits/<int:pk>/options/<int:option_id>/set-default/', views.set_option_as_default, name='configurablekit-set-default-option'), path('configurable/<int:pk>/options/<int:option_id>/set-default/', views.set_option_as_default, name='configurableproduct-set-default-option'),
] ]

View File

@@ -69,7 +69,7 @@ class ConfigurableProductListView(LoginRequiredMixin, ManagerOwnerRequiredMixin,
if self.request.user.has_perm('products.add_configurablekitproduct'): if self.request.user.has_perm('products.add_configurablekitproduct'):
action_buttons.append({ action_buttons.append({
'url': reverse_lazy('products:configurablekit-create'), 'url': reverse_lazy('products:configurableproduct-create'),
'text': 'Создать вариативный товар', 'text': 'Создать вариативный товар',
'class': 'btn-primary', 'class': 'btn-primary',
'icon': 'plus-circle' 'icon': 'plus-circle'
@@ -373,7 +373,7 @@ class ConfigurableProductCreateView(LoginRequiredMixin, ManagerOwnerRequiredMixi
return form.cleaned_data.get(deletion_field_name, False) return form.cleaned_data.get(deletion_field_name, False)
def get_success_url(self): def get_success_url(self):
return reverse_lazy('products:configurablekit-detail', kwargs={'pk': self.object.pk}) return reverse_lazy('products:configurableproduct-detail', kwargs={'pk': self.object.pk})
class ConfigurableProductUpdateView(LoginRequiredMixin, ManagerOwnerRequiredMixin, UpdateView): class ConfigurableProductUpdateView(LoginRequiredMixin, ManagerOwnerRequiredMixin, UpdateView):
@@ -650,13 +650,13 @@ class ConfigurableProductUpdateView(LoginRequiredMixin, ManagerOwnerRequiredMixi
return form.cleaned_data.get(deletion_field_name, False) return form.cleaned_data.get(deletion_field_name, False)
def get_success_url(self): def get_success_url(self):
return reverse_lazy('products:configurablekit-detail', kwargs={'pk': self.object.pk}) return reverse_lazy('products:configurableproduct-detail', kwargs={'pk': self.object.pk})
class ConfigurableProductDeleteView(LoginRequiredMixin, ManagerOwnerRequiredMixin, DeleteView): class ConfigurableProductDeleteView(LoginRequiredMixin, ManagerOwnerRequiredMixin, DeleteView):
model = ConfigurableProduct model = ConfigurableProduct
template_name = 'products/configurableproduct_confirm_delete.html' template_name = 'products/configurableproduct_confirm_delete.html'
success_url = reverse_lazy('products:configurablekit-list') success_url = reverse_lazy('products:configurableproduct-list')
def form_valid(self, form): def form_valid(self, form):
messages.success(self.request, f'Вариативный товар "{self.object.name}" успешно удалён!') messages.success(self.request, f'Вариативный товар "{self.object.name}" успешно удалён!')

View File

@@ -27,7 +27,7 @@
<ul class="dropdown-menu" aria-labelledby="productsDropdown"> <ul class="dropdown-menu" aria-labelledby="productsDropdown">
<li><a class="dropdown-item" href="{% url 'products:all-products' %}">Все товары</a></li> <li><a class="dropdown-item" href="{% url 'products:all-products' %}">Все товары</a></li>
<li><a class="dropdown-item" href="{% url 'products:catalog' %}"><i class="bi bi-grid-3x3-gap"></i> Каталог</a></li> <li><a class="dropdown-item" href="{% url 'products:catalog' %}"><i class="bi bi-grid-3x3-gap"></i> Каталог</a></li>
<li><a class="dropdown-item" href="{% url 'products:configurablekit-list' %}">Вариативные товары</a></li> <li><a class="dropdown-item" href="{% url 'products:configurableproduct-list' %}">Вариативные товары</a></li>
<li><hr class="dropdown-divider"></li> <li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="{% url 'products:category-list' %}">Категории</a></li> <li><a class="dropdown-item" href="{% url 'products:category-list' %}">Категории</a></li>
<li><a class="dropdown-item" href="{% url 'products:tag-list' %}">Теги</a></li> <li><a class="dropdown-item" href="{% url 'products:tag-list' %}">Теги</a></li>