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)
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)
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))
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)
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)
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)
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)
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)