当前位置: 首页>>代码示例>>Python>>正文


Python models.ReviewerScore类代码示例

本文整理汇总了Python中olympia.reviewers.models.ReviewerScore的典型用法代码示例。如果您正苦于以下问题:Python ReviewerScore类的具体用法?Python ReviewerScore怎么用?Python ReviewerScore使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


在下文中一共展示了ReviewerScore类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。

示例1: process_sandbox

    def process_sandbox(self):
        """Set an addon or a version back to sandbox."""
        # Safeguard to force implementation for unlisted add-ons to completely
        # override this method.
        assert self.version.channel == amo.RELEASE_CHANNEL_LISTED

        # Safeguard to make sure this action is not used for content review
        # (it should use reject_multiple_versions instead).
        assert not self.content_review_only

        # Hold onto the status before we change it.
        status = self.addon.status

        if self.set_addon_status:
            self.set_addon(status=amo.STATUS_NULL)
        self.set_files(amo.STATUS_DISABLED, self.files,
                       hide_disabled_file=True)

        self.log_action(amo.LOG.REJECT_VERSION)
        template = u'%s_to_sandbox' % self.review_type
        subject = u'Mozilla Add-ons: %s %s didn\'t pass review'
        self.notify_email(template, subject)

        self.log_sandbox_message()
        log.info(u'Sending email for %s' % (self.addon))

        # Assign reviewer incentive scores.
        if self.request:
            ReviewerScore.award_points(
                self.request.user, self.addon, status, version=self.version)
开发者ID:piyushmittal25,项目名称:addons-server,代码行数:30,代码来源:utils.py

示例2: delete

    def delete(self, user_responsible=None):
        if user_responsible is None:
            user_responsible = self.user

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

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

        log.info(u'Rating deleted: %s deleted id:%s by %s ("%s")',
                 user_responsible.name, self.pk, self.user.name,
                 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 rating_was_moderated:
            ReviewerScore.award_moderation_points(user_responsible,
                                                  self.addon,
                                                  self.pk)
开发者ID:bqbn,项目名称:addons-server,代码行数:34,代码来源:models.py

示例3: ratings_moderation_log_detail

def ratings_moderation_log_detail(request, id):
    log = get_object_or_404(ActivityLog.objects.moderation_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], Rating):
        review = log.arguments[1]

    is_admin = acl.action_allowed(request,
                                  amo.permissions.REVIEWS_ADMIN)

    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('reviewers.ratings_moderation_log.detail', id)

    data = context(request, log=log, can_undelete=can_undelete)
    return render(request, 'reviewers/moderationlog_detail.html', data)
开发者ID:piyushmittal25,项目名称:addons-server,代码行数:28,代码来源:views.py

示例4: confirm_auto_approved

    def confirm_auto_approved(self):
        """Confirm an auto-approval decision.

        We don't need to really store that information, what we care about
        is logging something for future reviewers to be aware of, and, if the
        version is listed, incrementing AddonApprovalsCounter, which also
        resets the last human review date to now, and log it so that it's
        displayed later in the review page."""
        status = self.addon.status
        latest_version = self.version
        # The confirm auto-approval action should not show the comment box,
        # so override the text in case the reviewer switched between actions
        # and accidently submitted some comments from another action.
        self.data['comments'] = ''
        if self.content_review_only:
            # If we're only doing a content review, then don't increment
            # the counter, just record the date of the content approval
            # and log it.
            AddonApprovalsCounter.approve_content_for_addon(addon=self.addon)
            self.log_action(amo.LOG.APPROVE_CONTENT)
        else:
            if self.version.channel == amo.RELEASE_CHANNEL_LISTED:
                self.version.autoapprovalsummary.update(confirmed=True)
                AddonApprovalsCounter.increment_for_addon(addon=self.addon)
            self.log_action(amo.LOG.CONFIRM_AUTO_APPROVED)

        # Assign reviewer incentive scores.
        if self.request:
            ReviewerScore.award_points(
                self.request.user, self.addon, status, version=latest_version,
                post_review=True, content_review=self.content_review_only)
开发者ID:tsl143,项目名称:addons-server,代码行数:31,代码来源:utils.py

示例5: award_all_points_for_action

    def award_all_points_for_action(self, action, content_review=False):
        for activity_log in ActivityLog.objects.filter(action=action.id):
            user = activity_log.user
            try:
                addon = activity_log.arguments[0]
                version = activity_log.arguments[1]
            except IndexError:
                log.error('ActivityLog %d is missing one or more arguments',
                          activity_log.pk)
                continue

            # If there is already a score recorded in the database for this
            # event, with our special note, it means we already processed it
            # somehow (maybe we ran the script twice...), so ignore it.
            # Otherwise award the points!
            event = ReviewerScore.get_event(
                addon, amo.STATUS_PUBLIC, version=version,
                post_review=True, content_review=content_review)
            if not ReviewerScore.objects.filter(
                    user=user, addon=addon, note_key=event,
                    note=MANUAL_NOTE).exists():
                ReviewerScore.award_points(
                    user, addon, amo.STATUS_PUBLIC,
                    version=version, post_review=True,
                    content_review=content_review, extra_note=MANUAL_NOTE)
            else:
                log.error('Already awarded points for "%s" action on %s %s',
                          action.short, addon, version)
                continue
开发者ID:bqbn,项目名称:addons-server,代码行数:29,代码来源:award_post_review_points.py

示例6: create_and_review_addon

 def create_and_review_addon(self, user, weight, verdict, content_review):
     addon = addon_factory()
     AutoApprovalSummary.objects.create(
         version=addon.current_version, verdict=verdict, weight=weight)
     ReviewerScore.award_points(
         user, addon, addon.status, version=addon.versions.all()[0],
         post_review=True, content_review=content_review)
开发者ID:diox,项目名称:olympia,代码行数:7,代码来源:test_review_reports.py

示例7: reviewers_score_bar

def reviewers_score_bar(context, types=None, addon_type=None):
    user = context.get('user')

    return new_context(dict(
        request=context.get('request'),
        amo=amo, settings=settings,
        points=ReviewerScore.get_recent(user, addon_type=addon_type),
        total=ReviewerScore.get_total(user),
        **ReviewerScore.get_leaderboards(user, types=types,
                                         addon_type=addon_type)))
开发者ID:iamVP7,项目名称:addons-server,代码行数:10,代码来源:jinja_helpers.py

示例8: process_public

    def process_public(self):
        """Set an add-on or a version to public."""
        # Safeguard to force implementation for unlisted add-ons to completely
        # override this method.
        assert self.version.channel == amo.RELEASE_CHANNEL_LISTED

        # Safeguard to make sure this action is not used for content review
        # (it should use confirm_auto_approved instead).
        assert not self.content_review_only

        # Sign addon.
        for file_ in self.files:
            sign_file(file_)

        # Hold onto the status before we change it.
        status = self.addon.status

        # Save files first, because set_addon checks to make sure there
        # is at least one public file or it won't make the addon public.
        self.set_files(amo.STATUS_PUBLIC, self.files)
        if self.set_addon_status:
            self.set_addon(status=amo.STATUS_PUBLIC)

        # If we've approved a webextension, add a tag identifying them as such.
        if any(file_.is_webextension for file_ in self.files):
            Tag(tag_text='firefox57').save_tag(self.addon)

        # If we've approved a mozilla signed add-on, add the firefox57 tag
        if all(file_.is_mozilla_signed_extension for file_ in self.files):
            Tag(tag_text='firefox57').save_tag(self.addon)

        # Increment approvals counter if we have a request (it means it's a
        # human doing the review) otherwise reset it as it's an automatic
        # approval.
        if self.request:
            AddonApprovalsCounter.increment_for_addon(addon=self.addon)
        else:
            AddonApprovalsCounter.reset_for_addon(addon=self.addon)

        self.log_action(amo.LOG.APPROVE_VERSION)
        template = u'%s_to_public' % self.review_type
        if self.review_type == 'pending':
            subject = u'Mozilla Add-ons: %s %s Updated'
        else:
            subject = u'Mozilla Add-ons: %s %s Approved'
        self.notify_email(template, subject)

        self.log_public_message()
        log.info(u'Sending email for %s' % (self.addon))

        # Assign reviewer incentive scores.
        if self.request:
            ReviewerScore.award_points(
                self.request.user, self.addon, status, version=self.version)
开发者ID:piyushmittal25,项目名称:addons-server,代码行数:54,代码来源:utils.py

示例9: approve

    def approve(self, user):
        from olympia.reviewers.models import ReviewerScore

        activity.log_create(
            amo.LOG.APPROVE_RATING, self.addon, self, user=user, details=dict(
                body=unicode(self.body),
                addon_id=self.addon.pk,
                addon_title=unicode(self.addon.name),
                is_flagged=self.ratingflag_set.exists()))
        for flag in self.ratingflag_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)
开发者ID:bqbn,项目名称:addons-server,代码行数:16,代码来源:models.py

示例10: themes_commit

def themes_commit(request):
    ThemeReviewFormset = formset_factory(forms.ThemeReviewForm)
    formset = ThemeReviewFormset(request.POST)

    scores = []
    for form in formset:
        try:
            lock = ThemeLock.objects.filter(
                theme_id=form.data[form.prefix + '-theme'],
                reviewer=request.user)
        except MultiValueDictKeyError:
            # Address off-by-one error caused by management form.
            continue
        if lock and form.is_valid():
            scores.append(form.save())

    # Success message.
    points = sum(scores)
    success = ungettext(
        # L10n: {0} is the number of reviews. {1} is the points just earned.
        # L10n: {2} is the total number of points the reviewer has overall.
        '{0} theme review successfully processed (+{1} points, {2} total).',
        '{0} theme reviews successfully processed (+{1} points, {2} total).',
        len(scores)).format(len(scores), points,
                            ReviewerScore.get_total(request.user))
    amo.messages.success(request, success)

    if 'theme_redirect_url' in request.session:
        return redirect(request.session['theme_redirect_url'])
    else:
        return redirect(reverse('reviewers.themes.queue_themes'))
开发者ID:piyushmittal25,项目名称:addons-server,代码行数:31,代码来源:views_themes.py

示例11: save

    def save(self):
        action = self.cleaned_data['action']
        comment = self.cleaned_data.get('comment')
        reject_reason = self.cleaned_data.get('reject_reason')
        theme = self.cleaned_data['theme']

        is_rereview = (
            theme.rereviewqueuetheme_set.exists() and
            theme.addon.status not in (amo.STATUS_PENDING,
                                       amo.STATUS_REVIEW_PENDING))

        theme_lock = ThemeLock.objects.get(theme=self.cleaned_data['theme'])

        mail_and_log = True
        if action == amo.ACTION_APPROVE:
            if is_rereview:
                approve_rereview(theme)
            theme.addon.update(status=amo.STATUS_PUBLIC)
            theme.approve = datetime.datetime.now()
            theme.save()

        elif action in (amo.ACTION_REJECT, amo.ACTION_DUPLICATE):
            if is_rereview:
                reject_rereview(theme)
            else:
                theme.addon.update(status=amo.STATUS_REJECTED)

        elif action == amo.ACTION_FLAG:
            if is_rereview:
                mail_and_log = False
            else:
                theme.addon.update(status=amo.STATUS_REVIEW_PENDING)

        elif action == amo.ACTION_MOREINFO:
            if not is_rereview:
                theme.addon.update(status=amo.STATUS_REVIEW_PENDING)

        if mail_and_log:
            send_mail(self.cleaned_data, theme_lock)

            # Log.
            ActivityLog.create(
                amo.LOG.THEME_REVIEW, theme.addon, details={
                    'theme': theme.addon.name.localized_string,
                    'action': action,
                    'reject_reason': reject_reason,
                    'comment': comment}, user=theme_lock.reviewer)
            log.info('%sTheme %s (%s) - %s' % (
                '[Rereview] ' if is_rereview else '', theme.addon.name,
                theme.id, action))

        score = 0
        if action in (amo.ACTION_REJECT, amo.ACTION_DUPLICATE,
                      amo.ACTION_APPROVE):
            score = ReviewerScore.award_points(
                theme_lock.reviewer, theme.addon, theme.addon.status)
        theme_lock.delete()

        return score
开发者ID:bqbn,项目名称:addons-server,代码行数:59,代码来源:forms.py

示例12: reject_multiple_versions

    def reject_multiple_versions(self):
        """Reject a list of versions."""
        # self.version and self.files won't point to the versions we want to
        # modify in this action, so set them to None before finding the right
        # versions.
        status = self.addon.status
        latest_version = self.version
        self.version = None
        self.files = None
        action_id = (amo.LOG.REJECT_CONTENT if self.content_review_only
                     else amo.LOG.REJECT_VERSION)
        timestamp = datetime.now()
        for version in self.data['versions']:
            files = version.files.all()
            self.set_files(amo.STATUS_DISABLED, files, hide_disabled_file=True)
            self.log_action(action_id, version=version, files=files,
                            timestamp=timestamp)
        self.addon.update_status()
        self.data['version_numbers'] = u', '.join(
            six.text_type(v.version) for v in self.data['versions'])

        # Send the email to the developer. We need to pass the latest version
        # of the add-on instead of one of the versions we rejected, it will be
        # used to generate a token allowing the developer to reply, and that
        # only works with the latest version.
        if self.addon.status != amo.STATUS_APPROVED:
            template = u'reject_multiple_versions_disabled_addon'
            subject = (u'Mozilla Add-ons: %s%s has been disabled on '
                       u'addons.mozilla.org')
        else:
            template = u'reject_multiple_versions'
            subject = u'Mozilla Add-ons: Versions disabled for %s%s'
        self.notify_email(template, subject, version=latest_version)

        log.info(
            u'Making %s versions %s disabled' % (
                self.addon,
                u', '.join(
                    six.text_type(v.pk) for v in self.data['versions'])))
        log.info(u'Sending email for %s' % (self.addon))

        # Assign reviewer incentive scores.
        if self.request:
            ReviewerScore.award_points(
                self.request.user, self.addon, status, version=latest_version,
                post_review=True, content_review=self.content_review_only)
开发者ID:mozilla,项目名称:addons-server,代码行数:46,代码来源:utils.py

示例13: confirm_auto_approved

    def confirm_auto_approved(self):
        """Confirm an auto-approval decision."""

        channel = self.version.channel
        if channel == amo.RELEASE_CHANNEL_LISTED:
            # When doing an approval in listed channel, the version we care
            # about is always current_version and *not* self.version.
            # This allows reviewers to confirm approval of a public add-on even
            # when their latest version is disabled.
            version = self.addon.current_version
        else:
            # For unlisted, we just use self.version.
            version = self.version
        # The confirm auto-approval action should not show the comment box,
        # so override the text in case the reviewer switched between actions
        # and accidently submitted some comments from another action.
        self.data['comments'] = ''
        if self.content_review_only:
            # If we're only doing a content review, then don't increment
            # the counter, just record the date of the content approval
            # and log it.
            AddonApprovalsCounter.approve_content_for_addon(addon=self.addon)
            self.log_action(amo.LOG.APPROVE_CONTENT, version=version)
        else:
            if channel == amo.RELEASE_CHANNEL_LISTED:
                version.autoapprovalsummary.update(confirmed=True)
                AddonApprovalsCounter.increment_for_addon(addon=self.addon)
            self.log_action(amo.LOG.CONFIRM_AUTO_APPROVED, version=version)

        # Assign reviewer incentive scores.
        if self.request:
            is_post_review = channel == amo.RELEASE_CHANNEL_LISTED
            ReviewerScore.award_points(
                self.request.user, self.addon, self.addon.status,
                version=version, post_review=is_post_review,
                content_review=self.content_review_only)
开发者ID:piyushmittal25,项目名称:addons-server,代码行数:36,代码来源:utils.py

示例14: performance

def performance(request, user_id=False):
    user = request.user
    reviewers = _recent_reviewers()

    is_admin = acl.action_allowed(request, amo.permissions.REVIEWS_ADMIN)

    if is_admin and user_id:
        try:
            user = UserProfile.objects.get(pk=user_id)
        except UserProfile.DoesNotExist:
            pass  # Use request.user from above.

    monthly_data = _performance_by_month(user.id)
    performance_total = _performance_total(monthly_data)

    # Incentive point breakdown.
    today = date.today()
    month_ago = today - timedelta(days=30)
    year_ago = today - timedelta(days=365)
    point_total = ReviewerScore.get_total(user)
    totals = ReviewerScore.get_breakdown(user)
    months = ReviewerScore.get_breakdown_since(user, month_ago)
    years = ReviewerScore.get_breakdown_since(user, year_ago)

    def _sum(iter, types, exclude=False):
        """Sum the `total` property for items in `iter` that have an `atype`
        that is included in `types` when `exclude` is False (default) or not in
        `types` when `exclude` is True."""
        return sum(s.total
                   for s in iter
                   if (s.atype in types) == (not exclude))

    breakdown = {
        'month': {
            'addons': _sum(months, amo.GROUP_TYPE_ADDON),
            'themes': _sum(months, amo.GROUP_TYPE_THEME),
            'other': _sum(months, amo.GROUP_TYPE_ADDON + amo.GROUP_TYPE_THEME,
                          exclude=True)
        },
        'year': {
            'addons': _sum(years, amo.GROUP_TYPE_ADDON),
            'themes': _sum(years, amo.GROUP_TYPE_THEME),
            'other': _sum(years, amo.GROUP_TYPE_ADDON + amo.GROUP_TYPE_THEME,
                          exclude=True)
        },
        'total': {
            'addons': _sum(totals, amo.GROUP_TYPE_ADDON),
            'themes': _sum(totals, amo.GROUP_TYPE_THEME),
            'other': _sum(totals, amo.GROUP_TYPE_ADDON + amo.GROUP_TYPE_THEME,
                          exclude=True)
        }
    }

    data = context(request,
                   monthly_data=json.dumps(monthly_data),
                   performance_month=performance_total['month'],
                   performance_year=performance_total['year'],
                   breakdown=breakdown, point_total=point_total,
                   reviewers=reviewers, current_user=user, is_admin=is_admin,
                   is_user=(request.user.id == user.id))

    return render(request, 'reviewers/performance.html', data)
开发者ID:piyushmittal25,项目名称:addons-server,代码行数:62,代码来源:views.py

示例15: leaderboard

def leaderboard(request):
    return render(request, 'reviewers/leaderboard.html', context(
        request, scores=ReviewerScore.all_users_by_score()))
开发者ID:piyushmittal25,项目名称:addons-server,代码行数:3,代码来源:views.py


注:本文中的olympia.reviewers.models.ReviewerScore类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。