def _status_change(request, id, status, comments=u''): """ Изменение статуса заявки. Вызывается из других представлений! """ try: prolongation = UserProlongation.objects.get(id=id) except UserProlongation.DoesNotExist: raise Http404() manager = manager_check(request.user,prolongation.recive_library_id ) if not manager: return HttpResponseForbidden(u'У вас нет доступа. Обратитесь к администратору.') if request.method == 'POST': form = ChangeStatusForm(request.POST) if form.is_valid(): status_change = form.save(commit=False) status_change.prolongation = prolongation status_change.prolongation_manager = manager status_change.status = status if status_change.status in prolongation.next_statuses(): status_change.save() else: raise ValueError(u'Wrong status code') return redirect('prolongation_prolongation_detail', id=id) else: form = ChangeStatusForm(initial={ 'comments':comments }) return render(request, 'prolongation/administration/change_status.html', { 'form': form, 'prolongation': prolongation })