Example #1
0
def flag(request, addon, review_id):
    review = get_object_or_404(Rating.objects, pk=review_id, addon=addon)
    if review.user_id == request.user.id:
        raise PermissionDenied
    if not review.body:
        return {
            'msg':
            ugettext('This rating can\'t be flagged because it has '
                     'no review text.')
        }
    data = {'rating': review_id, 'user': request.user.id}
    try:
        instance = RatingFlag.objects.get(**data)
    except RatingFlag.DoesNotExist:
        instance = None
    data = dict(request.POST.items(), **data)
    form = forms.RatingFlagForm(data, instance=instance)
    if form.is_valid():
        form.save()
        Rating.objects.filter(id=review_id).update(editorreview=True)
        return {
            'msg':
            ugettext('Thanks; this review has been flagged '
                     'for reviewer approval.')
        }
    else:
        return json_view.error(form.errors)
Example #2
0
def edit(request, addon, review_id):
    review = get_object_or_404(Review, pk=review_id, addon=addon)
    is_admin = acl.action_allowed(request, 'Addons', 'Edit')
    if not (request.user.id == review.user.id or is_admin):
        raise PermissionDenied
    cls = forms.ReviewReplyForm if review.reply_to else forms.ReviewForm
    form = cls(request.POST)
    if form.is_valid():
        for field in form.fields:
            if field in form.cleaned_data:
                setattr(review, field, form.cleaned_data[field])
        amo.log(amo.LOG.EDIT_REVIEW, addon, review)
        review.save()
        return {}
    else:
        return json_view.error(form.errors)
Example #3
0
def edit(request, addon, review_id):
    review = get_object_or_404(Review, pk=review_id, addon=addon)
    is_admin = acl.action_allowed(request, 'Addons', 'Edit')
    if not (request.user.id == review.user.id or is_admin):
        raise PermissionDenied
    cls = forms.ReviewReplyForm if review.reply_to else forms.ReviewForm
    form = cls(request.POST)
    if form.is_valid():
        for field in form.fields:
            if field in form.cleaned_data:
                setattr(review, field, form.cleaned_data[field])
        amo.log(amo.LOG.EDIT_REVIEW, addon, review)
        review.save()
        return {}
    else:
        return json_view.error(form.errors)
Example #4
0
def flag(request, addon, review_id):
    review = get_object_or_404(Review, pk=review_id, addon=addon)
    if review.user_id == request.user.id:
        raise http.Http404()
    d = dict(review=review_id, user=request.user.id)
    try:
        instance = ReviewFlag.objects.get(**d)
    except ReviewFlag.DoesNotExist:
        instance = None
    data = dict(request.POST.items(), **d)
    form = forms.ReviewFlagForm(data, instance=instance)
    if form.is_valid():
        form.save()
        Review.objects.filter(id=review_id).update(editorreview=True)
        return {'msg': _('Thanks; this review has been flagged '
                         'for editor approval.')}
    else:
        return json_view.error(unicode(form.errors))
Example #5
0
def edit(request, addon, review_id):
    rating = get_object_or_404(Rating.objects, pk=review_id, addon=addon)
    is_admin = acl.action_allowed(request, amo.permissions.ADDONS_EDIT)
    if not (request.user.id == rating.user.id or is_admin):
        raise PermissionDenied
    cls = forms.RatingReplyForm if rating.reply_to else forms.RatingForm
    form = cls(request.POST)
    if form.is_valid():
        data = _review_details(request, addon, form, create=False)
        for field, value in data.items():
            setattr(rating, field, value)
        # Resist the temptation to use rating.update(): it'd be more direct but
        # doesn't work with extra fields that are not meant to be saved like
        # 'user_responsible'.
        rating.save()
        return {}
    else:
        return json_view.error(form.errors)
Example #6
0
def flag(request, addon, review_id):
    review = get_object_or_404(Review.objects, pk=review_id, addon=addon)
    if review.user_id == request.user.id:
        raise PermissionDenied
    d = dict(review=review_id, user=request.user.id)
    try:
        instance = ReviewFlag.objects.get(**d)
    except ReviewFlag.DoesNotExist:
        instance = None
    data = dict(request.POST.items(), **d)
    form = forms.ReviewFlagForm(data, instance=instance)
    if form.is_valid():
        form.save()
        Review.objects.filter(id=review_id).update(editorreview=True)
        return {'msg': _('Thanks; this review has been flagged '
                         'for editor approval.')}
    else:
        return json_view.error(form.errors)
Example #7
0
def edit(request, addon, review_id):
    review = get_object_or_404(Review.objects, pk=review_id, addon=addon)
    is_admin = acl.action_allowed(request, 'Addons', 'Edit')
    if not (request.user.id == review.user.id or is_admin):
        raise PermissionDenied
    cls = forms.ReviewReplyForm if review.reply_to else forms.ReviewForm
    form = cls(request.POST)
    if form.is_valid():
        data = _review_details(request, addon, form, create=False)
        for field, value in data.items():
            setattr(review, field, value)
        # Resist the temptation to use review.update(): it'd be more direct but
        # doesn't work with extra fields that are not meant to be saved like
        # 'user_responsible'.
        review.save()
        return {}
    else:
        return json_view.error(form.errors)
Example #8
0
def flag(request, addon, review_id):
    review = get_object_or_404(Rating.objects, pk=review_id, addon=addon)
    if review.user_id == request.user.id:
        raise PermissionDenied
    data = {'rating': review_id, 'user': request.user.id}
    try:
        instance = RatingFlag.objects.get(**data)
    except RatingFlag.DoesNotExist:
        instance = None
    data = dict(request.POST.items(), **data)
    form = forms.RatingFlagForm(data, instance=instance)
    if form.is_valid():
        form.save()
        Rating.objects.filter(id=review_id).update(editorreview=True)
        return {'msg': ugettext('Thanks; this review has been flagged '
                                'for reviewer approval.')}
    else:
        return json_view.error(form.errors)
Example #9
0
def edit(request, addon, review_id):
    rating = get_object_or_404(Rating.objects, pk=review_id, addon=addon)
    is_admin = acl.action_allowed(request, amo.permissions.ADDONS_EDIT)
    if not (request.user.id == rating.user.id or is_admin):
        raise DjangoPermissionDenied
    cls = forms.RatingReplyForm if rating.reply_to else forms.RatingForm
    form = cls(request.POST)
    if form.is_valid():
        pre_save_body = rating.body
        data = _review_details(request, addon, form, create=False)
        for field, value in data.items():
            setattr(rating, field, value)
        # Resist the temptation to use rating.update(): it'd be more direct but
        # doesn't work with extra fields that are not meant to be saved like
        # 'user_responsible'.
        rating.save()
        maybe_check_with_akismet(request, rating, pre_save_body)
        return {}
    else:
        return json_view.error(form.errors)