it_manager/locations: редактор шаблона этикеток, раздельная печать QR/EAN и карточка поставщика.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+42
-1
@@ -165,6 +165,34 @@ def pharmacy_update_view(request, pk):
|
||||
return render_page(request, 'pharmacy-detail.html', context)
|
||||
|
||||
|
||||
def _vendor_detail_context(request, vendor, *, form=None, edit_mode=False,
|
||||
form_message=None, form_error=None):
|
||||
can_edit = user_can_manage_vendors(request.user)
|
||||
if edit_mode and can_edit and form is None:
|
||||
form = PortalVendorForm(instance=vendor)
|
||||
return {
|
||||
'vendor': vendor,
|
||||
'can_edit_vendor': can_edit,
|
||||
'vendor_edit_mode': bool(edit_mode and can_edit),
|
||||
'vendor_edit_form': form if (edit_mode and can_edit) else None,
|
||||
'vendor_form_message': form_message,
|
||||
'vendor_form_error': form_error,
|
||||
}
|
||||
|
||||
|
||||
@login_required
|
||||
def vendor_detail_view(request, pk):
|
||||
vendor = get_object_or_404(
|
||||
Location.objects.select_related('location_region'),
|
||||
pk=pk, location_type='vendor',
|
||||
)
|
||||
edit_mode = request.GET.get('edit') == '1'
|
||||
if edit_mode and not user_can_manage_vendors(request.user):
|
||||
return HttpResponseForbidden()
|
||||
context = _vendor_detail_context(request, vendor, edit_mode=edit_mode)
|
||||
return render_page(request, 'vendor-detail.html', context)
|
||||
|
||||
|
||||
@login_required
|
||||
@require_POST
|
||||
def vendor_create_view(request):
|
||||
@@ -188,9 +216,22 @@ def vendor_update_view(request, pk):
|
||||
|
||||
vendor = get_object_or_404(Location, pk=pk, location_type='vendor')
|
||||
form = PortalVendorForm(request.POST, instance=vendor)
|
||||
# Если пришли с карточки — остаёмся на ней
|
||||
from_card = request.POST.get('from_card') == '1'
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
vendor = form.save()
|
||||
if from_card:
|
||||
context = _vendor_detail_context(
|
||||
request, vendor, form_message='Изменения сохранены.',
|
||||
)
|
||||
return render_page(request, 'vendor-detail.html', context)
|
||||
return _dislocation_vendors_response(request, message='Изменения сохранены.')
|
||||
if from_card:
|
||||
context = _vendor_detail_context(
|
||||
request, vendor, form=form, edit_mode=True,
|
||||
form_error=_vendor_form_errors(form),
|
||||
)
|
||||
return render_page(request, 'vendor-detail.html', context)
|
||||
return _dislocation_vendors_response(
|
||||
request, error=_vendor_form_errors(form), form=form,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user