示例#1
0
文件: views.py 项目: Noyer/ExmoNew
def claim_create(request, score_id):
    """
    Добавление претензии на странице параметра.

    """
    user = request.user
    score = get_object_or_404(Score, pk=score_id)
    redirect = reverse('exmo2010:score_view', args=[score.pk, ])
    redirect += '#claims'  # Named Anchor для открытия нужной вкладки
    title = _('Add new claim for %s') % score
    if request.method == 'POST' and (
            user.has_perm('exmo2010.add_claim_score', score) or
            user.has_perm('exmo2010.answer_claim_score', score)):
        form = ClaimAddForm(request.POST, prefix="claim")
        if form.is_valid():
            # Если заполнено поле claim_id, значит это ответ на претензию
            if form.cleaned_data['claim_id'] is not None and user.has_perm('exmo2010.answer_claim_score', score):
                claim_id = form.cleaned_data['claim_id']
                claim = get_object_or_404(Claim, pk=claim_id)
                answer = form.cleaned_data['comment']
                claim.add_answer(user, answer)
            else:
            # Если поле claim_id пустое, значит это выставление претензии
                claim = score.add_claim(user, form.cleaned_data['comment'])

            claim_was_posted_or_deleted.send(
                sender=Claim.__class__,
                claim=claim,
                request=request,
                creation=True,
            )
            return HttpResponseRedirect(redirect)
        else:

            crumbs = ['Home', 'Monitoring', 'Organization', 'ScoreList', 'ScoreView']
            breadcrumbs(request, crumbs, score)
            current_title = _('Create claim')

            return render_to_response(
                'claim_form.html',
                {
                    'monitoring': score.task.organization.monitoring,
                    'task': score.task,
                    'score': score,
                    'current_title': current_title,
                    'title': title,
                    'form': form,
                },
                context_instance=RequestContext(request),
            )
    else:
        raise Http404
示例#2
0
文件: views.py 项目: Noyer/ExmoNew
def claim_manager(request, score_id, claim_id=None, method=None):
    """
    Вью для манипуляции с претензиями.

    """
    score = get_object_or_404(Score, pk=score_id)
    redirect = reverse('exmo2010:score_view', args=[score.pk])
    title = _('Add new claim for %s') % score

    if claim_id:
        claim = get_object_or_404(Claim, pk=claim_id)
    elif not method:  # create new
        if not request.user.has_perm('exmo2010.add_claim', score):
            return HttpResponseForbidden(_('Forbidden'))
        if request.method == 'GET':
            form = ClaimForm()
            form.fields['creator'].initial = request.user.pk
            form.fields['score'].initial = score.pk
        elif request.method == 'POST':
            form = ClaimForm(request.POST)
            if form.is_valid():
                if form.cleaned_data['score'] == score and form.cleaned_data['creator'] == request.user:
                    claim = score.add_claim(request.user,
                                            form.cleaned_data['comment'])
                    claim_was_posted_or_deleted.send(
                        sender=Claim.__class__,
                        claim=claim,
                        request=request,
                        creation=True,
                    )
                    return HttpResponseRedirect(redirect)

        crumbs = ['Home', 'Monitoring', 'Organization', 'ScoreList', 'ScoreView']
        breadcrumbs(request, crumbs, score)
        current_title = _('Edit claim')

        return render_to_response(
            'claim_form.html',
            {
                'monitoring': score.task.organization.monitoring,
                'task': score.task,
                'score': score,
                'current_title': current_title,
                'title': title,
                'form': form,
            },
            context_instance=RequestContext(request),
        )
示例#3
0
文件: views.py 项目: Noyer/ExmoNew
def claim_delete(request):
    """
    Удаление претензии (AJAX).

    """
    if request.is_ajax() and request.method == 'POST':
        claim_id = request.POST.get('pk')
        if claim_id is not None:
            claim = get_object_or_404(Claim, pk=claim_id)
            claim.delete()
            result = simplejson.dumps({'success': True})

            claim_was_posted_or_deleted.send(
                sender=Claim.__class__,
                claim=claim,
                request=request,
                creation=False,
            )

            return HttpResponse(result, mimetype='application/json')
    raise Http404