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
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
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
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
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
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()
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
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
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()
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
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
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
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
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
def skip_for_now(self): return Review.find_missing_reviews(self.request.event, self.request.user, ignore=[self.submission]).first()