fix(units): добавить проверку прав PlatformAdmin и исправить запрос связи
- Добавить name="submit" к кнопке формы - Запретить PlatformAdmin доступ к CRUD операций UnitOfMeasure - Исправить запрос sales_units_using через ProductSalesUnit.objects.filter Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -97,7 +97,7 @@
|
||||
<a href="{% url 'products:unit-list' %}" class="btn btn-outline-secondary">
|
||||
Отмена
|
||||
</a>
|
||||
<button type="submit" class="btn btn-primary">
|
||||
<button type="submit" name="submit" class="btn btn-primary">
|
||||
<i class="bi bi-check-lg"></i> {{ submit_text }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
@@ -63,6 +63,11 @@ def unit_of_measure_create(request):
|
||||
"""
|
||||
Создание новой единицы измерения
|
||||
"""
|
||||
# Проверка: PlatformAdmin не имеет доступа к бизнес-данным тенантов
|
||||
if request.user.__class__.__name__ == 'PlatformAdmin':
|
||||
messages.error(request, 'У вас недостаточно прав для выполнения этого действия')
|
||||
return redirect('products:unit-list')
|
||||
|
||||
if request.method == 'POST':
|
||||
form = UnitOfMeasureForm(request.POST)
|
||||
if form.is_valid():
|
||||
@@ -85,6 +90,11 @@ def unit_of_measure_update(request, pk):
|
||||
"""
|
||||
Редактирование единицы измерения
|
||||
"""
|
||||
# Проверка: PlatformAdmin не имеет доступа к бизнес-данным тенантов
|
||||
if request.user.__class__.__name__ == 'PlatformAdmin':
|
||||
messages.error(request, 'У вас недостаточно прав для выполнения этого действия')
|
||||
return redirect('products:unit-list')
|
||||
|
||||
unit = get_object_or_404(UnitOfMeasure, pk=pk)
|
||||
|
||||
if request.method == 'POST':
|
||||
@@ -110,11 +120,16 @@ def unit_of_measure_delete(request, pk):
|
||||
"""
|
||||
Удаление единицы измерения
|
||||
"""
|
||||
# Проверка: PlatformAdmin не имеет доступа к бизнес-данным тенантов
|
||||
if request.user.__class__.__name__ == 'PlatformAdmin':
|
||||
messages.error(request, 'У вас недостаточно прав для выполнения этого действия')
|
||||
return redirect('products:unit-list')
|
||||
|
||||
unit = get_object_or_404(UnitOfMeasure, pk=pk)
|
||||
|
||||
# Проверяем использование
|
||||
products_using = unit.products.count()
|
||||
sales_units_using = unit.productsalesunit_set.count()
|
||||
sales_units_using = ProductSalesUnit.objects.filter(product__base_unit=unit).count()
|
||||
|
||||
can_delete = products_using == 0 and sales_units_using == 0
|
||||
|
||||
|
||||
Reference in New Issue
Block a user