Example #1
0
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
    })