Добавлен столбец тегов в таблицу товаров и исправлены URL

- Добавлен столбец 'Теги' в таблицу товаров и комплектов
- Реализовано умное отображение тегов: показываются первые 2 тега + многоточие
- При наведении на ячейку тегов показывается полный список во всплывающей подсказке
- Исправлены все ссылки с устаревших URL (product-list, productkit-list) на новый (products-list)
- Обновлены шаблоны: product_detail, product_form, product_confirm_delete, productkit_detail, productkit_create, productkit_edit
- Обновлен компонент category_filter_buttons с поддержкой фильтра ?type=products и ?type=kits
- Удалена ненужная подсказка 'Ctrl+Click' под полем выбора тегов в фильтрах
This commit is contained in:
2025-11-15 23:04:49 +03:00
parent b8185f2f6c
commit bc25158bf2
8 changed files with 24 additions and 11 deletions

View File

@@ -18,7 +18,7 @@
<form method="post">
{% csrf_token %}
<div class="d-flex justify-content-between">
<a href="{% url 'products:product-list' %}" class="btn btn-secondary">Отмена</a>
<a href="{% url 'products:products-list' %}" class="btn btn-secondary">Отмена</a>
<button type="submit" class="btn btn-danger">Удалить товар</button>
</div>
</form>

View File

@@ -299,7 +299,7 @@
<h4>Действия</h4>
</div>
<div class="card-body">
<a href="{% url 'products:product-list' %}" class="btn btn-secondary btn-block">Назад к списку</a>
<a href="{% url 'products:products-list' %}" class="btn btn-secondary btn-block">Назад к списку</a>
</div>
</div>
</div>

View File

@@ -303,7 +303,7 @@
<div class="d-flex justify-content-between mt-4 gap-2 flex-wrap">
<div>
<a href="{% url 'products:product-list' %}" class="btn btn-secondary">Отмена</a>
<a href="{% url 'products:products-list' %}" class="btn btn-secondary">Отмена</a>
{% if perms.products.add_productkit %}
<a href="{% url 'products:productkit-create' %}" class="btn btn-outline-primary">
<i class="bi bi-box-seam"></i> Создать комплект

View File

@@ -7,7 +7,7 @@
<!-- Breadcrumbs -->
<nav aria-label="breadcrumb" class="mb-2">
<ol class="breadcrumb breadcrumb-sm mb-0">
<li class="breadcrumb-item"><a href="{% url 'products:productkit-list' %}">Комплекты</a></li>
<li class="breadcrumb-item"><a href="{% url 'products:products-list' %}">Комплекты</a></li>
<li class="breadcrumb-item active">Новый</li>
</ol>
</nav>
@@ -222,7 +222,7 @@
<!-- Sticky Footer -->
<div class="sticky-bottom bg-white border-top mt-4 p-3 d-flex justify-content-between align-items-center shadow-sm">
<a href="{% url 'products:productkit-list' %}" class="btn btn-outline-secondary">
<a href="{% url 'products:products-list' %}" class="btn btn-outline-secondary">
Отмена
</a>
<button type="submit" class="btn btn-success px-4">

View File

@@ -246,7 +246,7 @@
<!-- Кнопка назад -->
<div class="row mt-4">
<div class="col-12">
<a href="{% url 'products:productkit-list' %}" class="btn btn-outline-secondary">
<a href="{% url 'products:products-list' %}" class="btn btn-outline-secondary">
<i class="bi bi-arrow-left"></i> К списку комплектов
</a>
</div>

View File

@@ -7,7 +7,7 @@
<!-- Breadcrumbs -->
<nav aria-label="breadcrumb" class="mb-2">
<ol class="breadcrumb breadcrumb-sm mb-0">
<li class="breadcrumb-item"><a href="{% url 'products:productkit-list' %}">Комплекты</a></li>
<li class="breadcrumb-item"><a href="{% url 'products:products-list' %}">Комплекты</a></li>
<li class="breadcrumb-item"><a href="{% url 'products:productkit-detail' object.pk %}">{{ object.name }}</a></li>
<li class="breadcrumb-item active">Редактирование</li>
</ol>

View File

@@ -129,6 +129,7 @@
<th style="width: 120px;">Артикул</th>
<th style="width: 80px;">Тип</th>
<th>Категория</th>
<th style="width: 150px;">Теги</th>
<th style="width: 130px;">Цена</th>
<th style="width: 100px;">В наличии</th>
<th style="width: 100px;">Статус</th>
@@ -177,6 +178,18 @@
<span class="text-muted">-</span>
{% endfor %}
</td>
<td title="{% if item.tags.all|length %}{% for t in item.tags.all %}{{ t.name }}{% if not forloop.last %}, {% endif %}{% endfor %}{% else %}-{% endif %}">
{% for tag in item.tags.all|slice:":2" %}
<span class="badge bg-primary">{{ tag.name }}</span>
{% empty %}
<span class="text-muted">-</span>
{% endfor %}
{% with total=item.tags.all|length %}
{% if total > 2 %}
<span class="text-muted"></span>
{% endif %}
{% endwith %}
</td>
<td>
{% if item.sale_price %}
<div class="text-decoration-line-through text-muted small">{{ item.price|floatformat:2 }} руб.</div>