示例#1
0
def eventlog_detail(request, id):
    log = get_object_or_404(ActivityLog.objects.editor_events(), pk=id)

    review = None
    # I really cannot express the depth of the insanity incarnate in
    # our logging code...
    if len(log.arguments) > 1 and isinstance(log.arguments[1], Review):
        review = log.arguments[1]

    is_admin = acl.action_allowed(request, 'ReviewerAdminTools', 'View')

    can_undelete = review and review.deleted and (is_admin or request.user.pk
                                                  == log.user.pk)

    if request.method == 'POST':
        # A Form seems overkill for this.
        if request.POST['action'] == 'undelete':
            if not can_undelete:
                raise PermissionDenied

            ReviewerScore.award_moderation_points(log.user,
                                                  review.addon,
                                                  review.id,
                                                  undo=True)
            review.undelete()
        return redirect('editors.eventlog.detail', id)

    data = context(request, log=log, can_undelete=can_undelete)
    return render(request, 'editors/eventlog_detail.html', data)
示例#2
0
def eventlog_detail(request, id):
    log = get_object_or_404(ActivityLog.objects.editor_events(), pk=id)

    review = None
    # I really cannot express the depth of the insanity incarnate in
    # our logging code...
    if len(log.arguments) > 1 and isinstance(log.arguments[1], Review):
        review = log.arguments[1]

    is_admin = acl.action_allowed(request, 'ReviewerAdminTools', 'View')

    can_undelete = review and review.deleted and (
        is_admin or request.user.pk == log.user.pk)

    if request.method == 'POST':
        # A Form seems overkill for this.
        if request.POST['action'] == 'undelete':
            if not can_undelete:
                raise PermissionDenied

            ReviewerScore.award_moderation_points(
                log.user, review.addon, review.id, undo=True)
            review.undelete()
        return redirect('editors.eventlog.detail', id)

    data = context(request, log=log, can_undelete=can_undelete)
    return render(request, 'editors/eventlog_detail.html', data)
示例#3
0
文件: models.py 项目: Osmose/olympia
    def delete(self, user_responsible=None):
        if user_responsible is None:
            user_responsible = self.user

        review_was_moderated = False
        # Log deleting reviews to moderation log,
        # except if the author deletes it
        if user_responsible != self.user:
            # Remember moderation state
            review_was_moderated = True
            from olympia.editors.models import ReviewerScore

            activity.log_create(
                amo.LOG.DELETE_REVIEW, self.addon, self, user=user_responsible,
                details=dict(
                    title=unicode(self.title),
                    body=unicode(self.body),
                    addon_id=self.addon.pk,
                    addon_title=unicode(self.addon.name),
                    is_flagged=self.reviewflag_set.exists()))
            for flag in self.reviewflag_set.all():
                flag.delete()

        log.info(u'Review deleted: %s deleted id:%s by %s ("%s": "%s")',
                 user_responsible.name, self.pk, self.user.name,
                 unicode(self.title), unicode(self.body))
        self.update(deleted=True)
        # Force refreshing of denormalized data (it wouldn't happen otherwise
        # because we're not dealing with a creation).
        self.update_denormalized_fields()

        if (review_was_moderated):
            ReviewerScore.award_moderation_points(user_responsible,
                                                  self.addon,
                                                  self.pk)
示例#4
0
    def moderator_delete(self, user):
        from olympia.editors.models import ReviewerScore

        amo.log(amo.LOG.DELETE_REVIEW, self.addon, self,
                user=user,
                details=dict(title=unicode(self.title),
                             body=unicode(self.body),
                             addon_id=self.addon.pk,
                             addon_title=unicode(self.addon.name),
                             is_flagged=self.reviewflag_set.exists()))
        for flag in self.reviewflag_set.all():
            flag.delete()
        self.delete(user_responsible=user)
        ReviewerScore.award_moderation_points(user, self.addon, self.pk)
示例#5
0
文件: models.py 项目: Osmose/olympia
    def approve(self, user):
        from olympia.editors.models import ReviewerScore

        activity.log_create(
            amo.LOG.APPROVE_REVIEW, self.addon, self, user=user, details=dict(
                title=unicode(self.title),
                body=unicode(self.body),
                addon_id=self.addon.pk,
                addon_title=unicode(self.addon.name),
                is_flagged=self.reviewflag_set.exists()))
        for flag in self.reviewflag_set.all():
            flag.delete()
        self.editorreview = False
        # We've already logged what we want to log, no need to pass
        # user_responsible=user.
        self.save()
        ReviewerScore.award_moderation_points(user, self.addon, self.pk)
示例#6
0
    def moderator_approve(self, user):
        from olympia.editors.models import ReviewerScore

        amo.log(amo.LOG.APPROVE_REVIEW, self.addon, self,
                user=user,
                details=dict(title=unicode(self.title),
                             body=unicode(self.body),
                             addon_id=self.addon.pk,
                             addon_title=unicode(self.addon.name),
                             is_flagged=self.reviewflag_set.exists()))
        for flag in self.reviewflag_set.all():
            flag.delete()
        self.editorreview = False
        # We've already logged what we want to log, no need to pass
        # user_responsible=user.
        self.save()
        ReviewerScore.award_moderation_points(user, self.addon, self.pk)
示例#7
0
    def save(self):
        from olympia.reviews.helpers import user_can_delete_review

        for form in self.forms:
            if form.cleaned_data and user_can_delete_review(
                    self.request, form.instance):
                action = int(form.cleaned_data['action'])

                is_flagged = (form.instance.reviewflag_set.count() > 0)

                if action != reviews.REVIEW_MODERATE_SKIP:  # Delete flags.
                    for flag in form.instance.reviewflag_set.all():
                        flag.delete()

                review = form.instance
                addon = review.addon
                if action == reviews.REVIEW_MODERATE_DELETE:
                    review.delete()
                    amo.log(amo.LOG.DELETE_REVIEW,
                            addon,
                            review,
                            details=dict(title=unicode(review.title),
                                         body=unicode(review.body),
                                         addon_id=addon.id,
                                         addon_title=unicode(addon.name),
                                         is_flagged=is_flagged))
                    if self.request:
                        ReviewerScore.award_moderation_points(
                            self.request.user, addon, review.id)
                elif action == reviews.REVIEW_MODERATE_KEEP:
                    review.editorreview = False
                    review.save()
                    amo.log(amo.LOG.APPROVE_REVIEW,
                            addon,
                            review,
                            details=dict(title=unicode(review.title),
                                         body=unicode(review.body),
                                         addon_id=addon.id,
                                         addon_title=unicode(addon.name),
                                         is_flagged=is_flagged))
                    if self.request:
                        ReviewerScore.award_moderation_points(
                            self.request.user, addon, review.id)
示例#8
0
    def save(self):
        from olympia.reviews.helpers import user_can_delete_review

        for form in self.forms:
            if form.cleaned_data and user_can_delete_review(self.request,
                                                            form.instance):
                action = int(form.cleaned_data['action'])

                is_flagged = (form.instance.reviewflag_set.count() > 0)

                if action != reviews.REVIEW_MODERATE_SKIP:  # Delete flags.
                    for flag in form.instance.reviewflag_set.all():
                        flag.delete()

                review = form.instance
                addon = review.addon
                if action == reviews.REVIEW_MODERATE_DELETE:
                    review.delete()
                    amo.log(amo.LOG.DELETE_REVIEW, addon, review,
                            details=dict(title=unicode(review.title),
                                         body=unicode(review.body),
                                         addon_id=addon.id,
                                         addon_title=unicode(addon.name),
                                         is_flagged=is_flagged))
                    if self.request:
                        ReviewerScore.award_moderation_points(
                            self.request.user, addon, review.id)
                elif action == reviews.REVIEW_MODERATE_KEEP:
                    review.editorreview = False
                    review.save()
                    amo.log(amo.LOG.APPROVE_REVIEW, addon, review,
                            details=dict(title=unicode(review.title),
                                         body=unicode(review.body),
                                         addon_id=addon.id,
                                         addon_title=unicode(addon.name),
                                         is_flagged=is_flagged))
                    if self.request:
                        ReviewerScore.award_moderation_points(
                            self.request.user, addon, review.id)
示例#9
0
    def delete(self, user_responsible=None):
        if user_responsible is None:
            user_responsible = self.user

        review_was_moderated = False
        # Log deleting reviews to moderation log,
        # except if the author deletes it
        if user_responsible != self.user:
            # Remember moderation state
            review_was_moderated = True
            from olympia.editors.models import ReviewerScore

            activity.log_create(amo.LOG.DELETE_REVIEW,
                                self.addon,
                                self,
                                user=user_responsible,
                                details=dict(
                                    title=unicode(self.title),
                                    body=unicode(self.body),
                                    addon_id=self.addon.pk,
                                    addon_title=unicode(self.addon.name),
                                    is_flagged=self.reviewflag_set.exists()))
            for flag in self.reviewflag_set.all():
                flag.delete()

        log.info(u'Review deleted: %s deleted id:%s by %s ("%s": "%s")',
                 user_responsible.name, self.pk, self.user.name,
                 unicode(self.title), unicode(self.body))
        self.update(deleted=True)
        # Force refreshing of denormalized data (it wouldn't happen otherwise
        # because we're not dealing with a creation).
        self.update_denormalized_fields()

        if (review_was_moderated):
            ReviewerScore.award_moderation_points(user_responsible, self.addon,
                                                  self.pk)
示例#10
0
 def test_award_moderation_points(self):
     ReviewerScore.award_moderation_points(self.user, self.addon, 1)
     score = ReviewerScore.objects.all()[0]
     assert score.score == (
         amo.REVIEWED_SCORES.get(amo.REVIEWED_ADDON_REVIEW))
     assert score.note_key == amo.REVIEWED_ADDON_REVIEW
示例#11
0
 def test_award_moderation_points(self):
     ReviewerScore.award_moderation_points(self.user, self.addon, 1)
     score = ReviewerScore.objects.all()[0]
     assert score.score == (amo.REVIEWED_SCORES.get(
         amo.REVIEWED_ADDON_REVIEW))
     assert score.note_key == amo.REVIEWED_ADDON_REVIEW