Exemplo n.º 1
0
    def get_success_url(self) -> str:
        action = self.request.POST.get("review_submit")
        if action == "save":
            return self.submission.orga_urls.reviews
            # save, skip_for_now, save_and_next

        key = f"{self.request.event.slug}_ignored_reviews"
        ignored_submissions = self.request.session.get(key) or []
        next_submission = Review.find_missing_reviews(
            self.request.event,
            self.request.user,
            ignore=ignored_submissions,
        ).first()
        if not next_submission:
            ignored_submissions = ([self.submission.pk]
                                   if action == "skip_for_now" else [])
            next_submission = Review.find_missing_reviews(
                self.request.event,
                self.request.user,
                ignore=ignored_submissions,
            ).first()
        self.request.session[key] = ignored_submissions
        if next_submission:
            return next_submission.orga_urls.reviews
        messages.success(self.request,
                         _("Nice, you have no submissions left to review!"))
        return self.request.event.orga_urls.reviews
Exemplo n.º 2
0
 def get_context_data(self, *args, **kwargs):
     ctx = super().get_context_data(*args, **kwargs)
     ctx['missing_reviews'] = Review.find_missing_reviews(
         self.request.event, self.request.user)
     ctx['reviewers'] = EventPermission.objects.filter(
         is_reviewer=True, event=self.request.event).count()
     ctx['next_submission'] = Review.find_missing_reviews(
         self.request.event, self.request.user).first()
     return ctx
Exemplo n.º 3
0
 def get_context_data(self, **kwargs):
     result = super().get_context_data(**kwargs)
     missing_reviews = Review.find_missing_reviews(self.request.event,
                                                   self.request.user)
     result['missing_reviews'] = missing_reviews
     result['next_submission'] = missing_reviews.first()
     return result
Exemplo n.º 4
0
 def get_context_data(self, *args, **kwargs):
     context = super().get_context_data(*args, **kwargs)
     context['submission'] = self.submission
     context['review'] = self.object
     context['read_only'] = self.read_only
     context['qform'] = self.qform
     context['skip_for_now'] = Review.find_missing_reviews(
         self.request.event, self.request.user,
         ignore=[self.submission]).first()
     context['profiles'] = [
         speaker.event_profile(self.request.event)
         for speaker in self.submission.speakers.all()
     ]
     context['reviews'] = [{
         'score':
         review.display_score,
         'text':
         review.text,
         'user':
         review.user.get_display_name(),
         'answers': [
             review.answers.filter(question=question).first()
             for question in self.qform.queryset
         ],
     } for review in self.submission.reviews.exclude(
         pk=(self.object.pk if self.object else None))]
     return context
Exemplo n.º 5
0
 def get_context_data(self, **kwargs):
     result = super().get_context_data(**kwargs)
     missing_reviews = Review.find_missing_reviews(
         self.request.event, self.request.user
     )
     result['missing_reviews'] = len(missing_reviews)
     result['next_submission'] = missing_reviews[0] if missing_reviews else None
     return result
Exemplo n.º 6
0
def test_average_review_score(submission, scores, expected):
    speaker = submission.speakers.first()
    reviews = [
        Review(submission=submission, score=score, user=speaker)
        for score in scores
    ]
    Review.objects.bulk_create(reviews)
    assert submission.average_score == expected
    submission.reviews.all().delete()
Exemplo n.º 7
0
 def get_context_data(self, **kwargs):
     result = super().get_context_data(**kwargs)
     result['done'] = self.request.user.reviews.filter(submission__event=self.request.event).count()
     result['total_reviews'] = Review.find_missing_reviews(
         self.request.event, self.request.user
     ).count() + result['done']
     if result['total_reviews']:
         result['percentage'] = int(result['done'] * 100 / result['total_reviews'])
     return result
Exemplo n.º 8
0
 def get_context_data(self, **kwargs):
     result = super().get_context_data(**kwargs)
     missing_reviews = Review.find_missing_reviews(self.request.event,
                                                   self.request.user)
     result["missing_reviews"] = (
         missing_reviews.count()
     )  # Do NOT use len() here! It yields a different result.
     result["next_submission"] = missing_reviews[
         0] if missing_reviews else None
     return result
Exemplo n.º 9
0
def test_median_review_score(submission, scores, expected):
    with scope(event=submission.event):
        speaker = submission.speakers.first()
        reviews = [
            Review(submission=submission, score=score, user=speaker)
            for score in scores
        ]
        Review.objects.bulk_create(reviews)
        assert submission.median_score == expected
        submission.reviews.all().delete()
Exemplo n.º 10
0
    def get_success_url(self) -> str:
        if self.request.POST.get('show_next', '0').strip() == '1':
            next_submission = Review.find_missing_reviews(self.request.event, self.request.user).first()
            if next_submission:
                messages.success(self.request, phrases.orga.another_review)
                return next_submission.orga_urls.reviews
            else:
                messages.success(self.request, _('Nice, you have no submissions left to review!'))
                return self.request.event.orga_urls.reviews

        return self.submission.orga_urls.reviews
Exemplo n.º 11
0
 def get_context_data(self, *args, **kwargs):
     ctx = super().get_context_data(*args, **kwargs)
     missing_reviews = Review.find_missing_reviews(self.request.event, self.request.user)
     reviewers = EventPermission.objects.filter(is_reviewer=True, event=self.request.event)
     ctx['missing_reviews'] = missing_reviews
     ctx['next_submission'] = missing_reviews.first()
     ctx['reviewers'] = reviewers.count()
     ctx['active_reviewers'] = reviewers.filter(user__reviews__isnull=False).order_by('user__id').distinct().count()
     ctx['review_count'] = self.request.event.reviews.count()
     if ctx['active_reviewers'] > 1:
         ctx['avg_reviews'] = round(ctx['review_count'] / ctx['active_reviewers'], 1)
     return ctx
Exemplo n.º 12
0
    def get_success_url(self) -> str:

        if self.request.POST.get('show_next', '0').strip() == '1':
            next_submission = Review.find_missing_reviews(self.request.event, self.request.user).first()
            if next_submission:
                messages.success(self.request, _('You are on a roll!'))  # TODO: choose from a list of messages
                return next_submission.orga_urls.new_review
            else:
                messages.success(self.request, _('Nice, you have no submissions left to review!'))
                return self.request.event.orga_urls.reviews

        return self.submission.orga_urls.reviews
Exemplo n.º 13
0
 def get_context_data(self, **kwargs):
     context = super().get_context_data(**kwargs)
     context['submission'] = self.submission
     context['review'] = self.object
     context['read_only'] = self.read_only
     context['qform'] = self.qform
     context['deadline_over'] = now(
     ) > self.request.event.settings.review_deadline if self.request.event.settings.review_deadline else False
     context['skip_for_now'] = Review.find_missing_reviews(
         self.request.event, self.request.user,
         ignore=[self.submission]).first()
     context['done'] = self.request.user.reviews.filter(
         submission__event=self.request.event).count()
     context['total_reviews'] = Review.find_missing_reviews(
         self.request.event, self.request.user).count() + context['done']
     if context['total_reviews']:
         context['percentage'] = int(context['done'] * 100 /
                                     context['total_reviews'])
     context['profiles'] = [
         speaker.event_profile(self.request.event)
         for speaker in self.submission.speakers.all()
     ]
     context['reviews'] = [{
         'score':
         review.display_score,
         'text':
         review.text,
         'user':
         review.user.get_display_name(),
         'answers': [
             review.answers.filter(question=question).first()
             for question in self.qform.queryset
         ],
     } for review in self.submission.reviews.exclude(
         pk=(self.object.pk if self.object else None))]
     return context
Exemplo n.º 14
0
 def get_context_data(self, *args, **kwargs):
     context = super().get_context_data(*args, **kwargs)
     missing_reviews = Review.find_missing_reviews(self.request.event,
                                                   self.request.user)
     reviewers = User.objects.filter(
         teams__in=self.request.event.teams.filter(
             is_reviewer=True)).distinct()
     context['missing_reviews'] = missing_reviews
     context['next_submission'] = missing_reviews.first()
     context['reviewers'] = reviewers.count()
     context['active_reviewers'] = (reviewers.filter(
         reviews__isnull=False).order_by('user__id').distinct().count())
     context['review_count'] = self.request.event.reviews.count()
     if context['active_reviewers'] > 1:
         context['avg_reviews'] = round(
             context['review_count'] / context['active_reviewers'], 1)
     return context
Exemplo n.º 15
0
 def skip_for_now(self):
     return Review.find_missing_reviews(self.request.event,
                                        self.request.user,
                                        ignore=[self.submission]).first()