def get_context_data(self, **kwargs): context = super(SubmissionsListBase, self).get_context_data(**kwargs) authenticated = self.request.user.is_authenticated context['dynamic_update'] = False context['dynamic_contest_id'] = self.in_contest and self.contest.id context['show_problem'] = self.show_problem context['completed_problem_ids'] = user_completed_ids( self.request.profile) if authenticated else [] context['editable_problem_ids'] = user_editable_ids( self.request.profile) if authenticated else [] context['tester_problem_ids'] = user_tester_ids( self.request.profile) if authenticated else [] context['all_languages'] = Language.objects.all().values_list( 'key', 'name') context['selected_languages'] = self.selected_languages context['all_statuses'] = self.get_searchable_status_codes() context['selected_statuses'] = self.selected_statuses context['results_json'] = mark_safe(json.dumps(self.get_result_data())) context['results_colors_json'] = mark_safe( json.dumps(settings.DMOJ_STATS_SUBMISSION_RESULT_COLORS)) context['page_suffix'] = suffix = ( '?' + self.request.GET.urlencode()) if self.request.GET else '' context['first_page_href'] = (self.first_page_href or '.') + suffix context['my_submissions_link'] = self.get_my_submissions_page() context['all_submissions_link'] = self.get_all_submissions_page() context['tab'] = self.tab return context
def get_context_data(self, **kwargs): context = super(SubmissionsListBase, self).get_context_data(**kwargs) authenticated = self.request.user.is_authenticated context['dynamic_update'] = False context['show_problem'] = self.show_problem context['completed_problem_ids'] = user_completed_ids( self.request.user.profile) if authenticated else [] context['authored_problem_ids'] = user_authored_ids( self.request.user.profile) if authenticated else [] context['editable_problem_ids'] = user_editable_ids( self.request.user.profile) if authenticated else [] context['all_languages'] = Language.objects.all().values_list( 'key', 'name') context['selected_languages'] = self.selected_languages context['all_statuses'] = self.get_searchable_status_codes() context['selected_statuses'] = self.selected_statuses context['results'] = self.get_result_table() context['page_suffix'] = suffix = ( '?' + self.request.GET.urlencode()) if self.request.GET else '' context['first_page_href'] = (self.first_page_href or '.') + suffix context['my_submissions_link'] = self.get_my_submissions_page() context['all_submissions_link'] = self.get_all_submissions_page() context['tab'] = self.tab return context
def get_paginator(self, queryset, per_page, orphans=0, allow_empty_first_page=True, **kwargs): paginator = DiggPaginator(queryset, per_page, body=6, padding=2, orphans=orphans, allow_empty_first_page=allow_empty_first_page, **kwargs) if not self.in_contest: # Get the number of pages and then add in this magic. # noinspection PyStatementEffect paginator.num_pages queryset = queryset.add_i18n_name(self.request.LANGUAGE_CODE) sort_key = self.order.lstrip('-') if sort_key in self.sql_sort: queryset = queryset.order_by(self.order) elif sort_key == 'name': queryset = queryset.order_by(self.order.replace('name', 'i18n_name')) elif sort_key == 'group': queryset = queryset.order_by(self.order + '__name') elif sort_key == 'solved': if self.request.user.is_authenticated(): solved = user_completed_ids(self.request.user.profile) queryset = list(queryset) queryset.sort(key=lambda problem: problem.id in solved, reverse=self.order.startswith('-')) elif sort_key == 'type': if self.show_types: queryset = list(queryset) queryset.sort(key=lambda problem: problem.types_list[0] if problem.types_list else '', reverse=self.order.startswith('-')) paginator.object_list = queryset return paginator
def single_submission(request): request.no_profile_update = True if 'id' not in request.GET or not request.GET['id'].isdigit(): return HttpResponseBadRequest() try: show_problem = int(request.GET.get('show_problem', '1')) except ValueError: return HttpResponseBadRequest() authenticated = request.user.is_authenticated submission = get_object_or_404(submission_related( Submission.objects.all()), id=int(request.GET['id'])) if not submission.problem.is_accessible_by(request.user): raise Http404() return render( request, 'submission/row.html', { 'submission': submission, 'completed_problem_ids': user_completed_ids(request.profile) if authenticated else [], 'editable_problem_ids': user_editable_ids(request.profile) if authenticated else [], 'tester_problem_ids': user_tester_ids(request.profile) if authenticated else [], 'show_problem': show_problem, 'problem_name': show_problem and submission.problem.translated_name(request.LANGUAGE_CODE), 'profile_id': request.profile.id if authenticated else 0, })
def single_submission(request, submission_id, show_problem=True): authenticated = request.user.is_authenticated submission = get_object_or_404(submission_related( Submission.objects.all()), id=int(submission_id)) if not submission.problem.is_accessible_by(request.user): raise Http404() return render( request, 'submission/row.html', { 'submission': submission, 'authored_problem_ids': user_authored_ids(request.user.profile) if authenticated else [], 'completed_problem_ids': user_completed_ids(request.user.profile) if authenticated else [], 'editable_problem_ids': user_editable_ids(request.user.profile) if authenticated else [], 'show_problem': show_problem, 'problem_name': show_problem and submission.problem.translated_name(request.LANGUAGE_CODE), 'profile_id': request.user.profile.id if authenticated else 0, })
def get_context_data(self, **kwargs): context = super(SubmissionsListBase, self).get_context_data(**kwargs) context['dynamic_update'] = False context['show_problem'] = self.show_problem context['completed_problem_ids'] = (user_completed_ids(self.request.user.profile) if self.request.user.is_authenticated() else []) context['results'] = self.get_result_table() context['first_page_href'] = self.first_page_href or '.' return context
def get_context_data(self, **kwargs): context = super(SubmissionsListBase, self).get_context_data(**kwargs) context['dynamic_update'] = False context['show_problem'] = self.show_problem context['completed_problem_ids'] = (user_completed_ids( self.request.user.profile) if self.request.user.is_authenticated() else []) context['results'] = self.get_result_table() context['first_page_href'] = self.first_page_href or '.' return context
def single_submission(request, submission_id, show_problem=True): authenticated = request.user.is_authenticated() submission = get_object_or_404(submission_related(Submission.objects.all()), id=int(submission_id)) return render(request, 'submission/row.jade', { 'submission': submission, 'completed_problem_ids': user_completed_ids(request.user.profile) if authenticated else [], 'show_problem': show_problem, 'problem_name': show_problem and submission.problem.translated_name(request.LANGUAGE_CODE), 'profile_id': request.user.profile.id if authenticated else 0, })
def single_submission(request, id): try: authenticated = request.user.is_authenticated() return render_to_response('submission/row.jade', { 'submission': Submission.objects.get(id=int(id)), 'completed_problem_ids': user_completed_ids(request.user.profile) if authenticated else [], 'show_problem': True, 'profile_id': request.user.profile.id if authenticated else 0, }, context_instance=RequestContext(request)) except ObjectDoesNotExist: raise Http404()
def single_submission(request, submission, show_problem=True): try: authenticated = request.user.is_authenticated() return render(request, 'submission/row.jade', { 'submission': get_object_or_404(submission_related(Submission.objects.all()), id=int(submission)), 'completed_problem_ids': user_completed_ids(request.user.profile) if authenticated else [], 'show_problem': show_problem, 'profile_id': request.user.profile.id if authenticated else 0, }) except ObjectDoesNotExist: raise Http404()
def get_context_data(self, **kwargs): context = super(SubmissionsListBase, self).get_context_data(**kwargs) authenticated = self.request.user.is_authenticated context['dynamic_update'] = False context['show_problem'] = self.show_problem context['completed_problem_ids'] = user_completed_ids( self.request.user.profile) if authenticated else [] context['authored_problem_ids'] = user_authored_ids( self.request.user.profile) if authenticated else [] context['editable_problem_ids'] = user_editable_ids( self.request.user.profile) if authenticated else [] context['results'] = self.get_result_table() context['first_page_href'] = self.first_page_href or '.' context['my_submissions_link'] = self.get_my_submissions_page() context['all_submissions_link'] = self.get_all_submissions_page() context['tab'] = self.tab return context
def single_submission(request, submission_id, show_problem=True): request.no_profile_update = True authenticated = request.user.is_authenticated submission = get_object_or_404(submission_related(Submission.objects.all()), id=int(submission_id)) if not submission.problem.is_accessible_by(request.user): raise Http404() return render(request, 'submission/row.html', { 'submission': submission, 'authored_problem_ids': user_authored_ids(request.user.profile) if authenticated else [], 'completed_problem_ids': user_completed_ids(request.user.profile) if authenticated else [], 'editable_problem_ids': user_editable_ids(request.user.profile) if authenticated else [], 'show_problem': show_problem, 'problem_name': show_problem and submission.problem.translated_name(request.LANGUAGE_CODE), 'profile_id': request.user.profile.id if authenticated else 0, })
def single_submission(request, id, show_problem=True): try: authenticated = request.user.is_authenticated() return render( request, 'submission/row.jade', { 'submission': submission_related(Submission.objects).get(id=int(id)), 'completed_problem_ids': user_completed_ids(request.user.profile) if authenticated else [], 'show_problem': show_problem, 'profile_id': request.user.profile.id if authenticated else 0, }) except ObjectDoesNotExist: raise Http404()
def get_context_data(self, **kwargs): if not self.request.user.is_authenticated: raise Http404() user = self.request.user profile = self.request.profile context = super(UserDashboard, self).get_context_data(**kwargs) context['recently_attempted_problems'] = (Submission.objects.filter( user=profile, problem__is_public=True).exclude( problem__id__in=user_completed_ids(profile)).values_list( 'problem__code', 'problem__name', 'problem__points').annotate( points=Max('points'), latest=Max('date')).order_by('-latest'))[:7] context['own_comments'] = Comment.most_recent(user, 10, author=user) context['page_titles'] = CacheDict( lambda page: Comment.get_page_title(page)) return context
def get_paginator(self, queryset, per_page, orphans=0, allow_empty_first_page=True, **kwargs): paginator = DiggPaginator( queryset, per_page, body=6, padding=2, orphans=orphans, allow_empty_first_page=allow_empty_first_page, **kwargs) if not self.in_contest: # Get the number of pages and then add in this magic. # noinspection PyStatementEffect paginator.num_pages queryset = queryset.add_i18n_name(self.request.LANGUAGE_CODE) sort_key = self.order.lstrip('-') if sort_key in self.sql_sort: queryset = queryset.order_by(self.order) elif sort_key == 'name': queryset = queryset.order_by( self.order.replace('name', 'i18n_name')) elif sort_key == 'solved': if self.request.user.is_authenticated: profile = self.request.profile solved = user_completed_ids(profile) attempted = user_attempted_ids(profile) def _solved_sort_order(problem): if problem.id in solved: return 1 if problem.id in attempted: return 0 return -1 queryset = list(queryset) queryset.sort(key=_solved_sort_order, reverse=self.order.startswith('-')) paginator.object_list = list(queryset) return paginator
def single_submission(request, submission_id, show_problem=True): authenticated = request.user.is_authenticated() submission = get_object_or_404(submission_related( Submission.objects.all()), id=int(submission_id)) return render( request, 'submission/row.jade', { 'submission': submission, 'completed_problem_ids': user_completed_ids(request.user.profile) if authenticated else [], 'show_problem': show_problem, 'problem_name': show_problem and submission.problem.translated_name(request.LANGUAGE_CODE), 'profile_id': request.user.profile.id if authenticated else 0, })
def get_context_data(self, **kwargs): if not self.request.user.is_authenticated: raise Http404() user = self.request.user profile = self.request.profile context = super(UserDashboard, self).get_context_data(**kwargs) context['recently_attempted_problems'] = ( Submission.objects.filter( user=profile, problem__is_public=True).exclude( problem_id__in=user_completed_ids(profile)).values_list( 'problem__code', 'problem__name', 'problem__points').annotate( points=Max('points'), latest=Max('date')).order_by('-latest') [:settings.DMOJ_BLOG_RECENTLY_ATTEMPTED_PROBLEMS_COUNT]) context['own_tickets'] = Ticket.tickets_list(user).filter( user=profile)[:10] return context
def get_context_data(self, **kwargs): context = super(PostList, self).get_context_data(**kwargs) context['title'] = self.title or _( 'Page %d of Posts') % context['page_obj'].number context['first_page_href'] = reverse('home') context['page_prefix'] = reverse('blog_post_list') context['comments'] = Comment.most_recent(self.request.user, 10) context['new_problems'] = Problem.objects.filter( is_public=True).order_by('-date', '-id')[:7] context['user_count'] = Profile.objects.count() context['problem_count'] = Problem.objects.filter( is_public=True).count() context['submission_count'] = Submission.objects.filter( problem__is_public=True).count() context['language_count'] = Language.objects.count() now = timezone.now() # Dashboard stuff if self.request.user.is_authenticated(): user = self.request.user.profile context['recently_attempted_problems'] = ( Submission.objects.filter(user=user).exclude( problem__id__in=user_completed_ids(user)).values_list( 'problem__code', 'problem__name', 'problem__points').annotate( points=Max('points'), latest=Max('date')).order_by('-latest'))[:7] visible_contests = Contest.objects.filter( is_public=True).order_by('start_time') q = Q(is_private=False) if self.request.user.is_authenticated(): q |= Q(organizations__in=user.organizations.all()) visible_contests = visible_contests.filter(q) context['current_contests'] = visible_contests.filter( start_time__lte=now, end_time__gt=now) context['future_contests'] = visible_contests.filter( start_time__gt=now) return context
def get_context_data(self, **kwargs): context = super(SubmissionsListBase, self).get_context_data(**kwargs) authenticated = self.request.user.is_authenticated context['dynamic_update'] = False context['show_problem'] = self.show_problem context['completed_problem_ids'] = user_completed_ids(self.request.user.profile) if authenticated else [] context['authored_problem_ids'] = user_authored_ids(self.request.user.profile) if authenticated else [] context['editable_problem_ids'] = user_editable_ids(self.request.user.profile) if authenticated else [] context['all_languages'] = Language.objects.all().values_list('key', 'name') context['selected_languages'] = self.selected_languages context['all_statuses'] = self.get_searchable_status_codes() context['selected_statuses'] = self.selected_statuses context['results_json'] = mark_safe(json.dumps(self.get_result_data())) context['page_suffix'] = suffix = ('?' + self.request.GET.urlencode()) if self.request.GET else '' context['first_page_href'] = (self.first_page_href or '.') + suffix context['my_submissions_link'] = self.get_my_submissions_page() context['all_submissions_link'] = self.get_all_submissions_page() context['tab'] = self.tab return context
def get_context_data(self, **kwargs): context = super(PostList, self).get_context_data(**kwargs) context['title'] = self.title or _('Page %d of Posts') % context['page_obj'].number context['first_page_href'] = reverse('home') context['page_prefix'] = reverse('blog_post_list') context['comments'] = Comment.most_recent(self.request.user, 10) context['new_problems'] = Problem.objects.filter(is_public=True, is_organization_private=False) \ .order_by('-date', '-id')[:settings.DMOJ_BLOG_NEW_PROBLEM_COUNT] context['page_titles'] = CacheDict(lambda page: Comment.get_page_title(page)) context['has_clarifications'] = False if self.request.user.is_authenticated: participation = self.request.profile.current_contest if participation: clarifications = ProblemClarification.objects.filter(problem__in=participation.contest.problems.all()) context['has_clarifications'] = clarifications.count() > 0 context['clarifications'] = clarifications.order_by('-date') context['user_count'] = lazy(Profile.objects.count, int, int) context['problem_count'] = lazy(Problem.objects.filter(is_public=True).count, int, int) context['submission_count'] = lazy(Submission.objects.count, int, int) context['language_count'] = lazy(Language.objects.count, int, int) context['post_comment_counts'] = { int(page[2:]): count for page, count in Comment.objects .filter(page__in=['b:%d' % post.id for post in context['posts']], hidden=False) .values_list('page').annotate(count=Count('page')).order_by() } now = timezone.now() # Dashboard stuff if self.request.user.is_authenticated: user = self.request.profile context['recently_attempted_problems'] = (Submission.objects.filter(user=user) .exclude(problem__in=user_completed_ids(user)) .values_list('problem__code', 'problem__name', 'problem__points') .annotate(points=Max('points'), latest=Max('date')) .order_by('-latest') [:settings.DMOJ_BLOG_RECENTLY_ATTEMPTED_PROBLEMS_COUNT]) visible_contests = Contest.get_visible_contests(self.request.user).filter(is_visible=True) \ .order_by('start_time') context['current_contests'] = visible_contests.filter(start_time__lte=now, end_time__gt=now) context['future_contests'] = visible_contests.filter(start_time__gt=now) if self.request.user.is_authenticated: profile = self.request.profile context['own_open_tickets'] = (Ticket.objects.filter(user=profile, is_open=True).order_by('-id') .prefetch_related('linked_item').select_related('user__user')) else: profile = None context['own_open_tickets'] = [] # Superusers better be staffs, not the spell-casting kind either. if self.request.user.is_staff: tickets = (Ticket.objects.order_by('-id').filter(is_open=True).prefetch_related('linked_item') .select_related('user__user')) context['open_tickets'] = filter_visible_tickets(tickets, self.request.user, profile)[:10] else: context['open_tickets'] = [] return context
def get_completed_problems(self): if self.in_contest: return contest_completed_ids(self.profile.current_contest) else: return user_completed_ids(self.profile) if self.profile is not None else ()
def get_completed_problems(self): return user_completed_ids( self.profile) if self.profile is not None else ()
def get_context_data(self, **kwargs): context = super(OwnProblemList, self).get_context_data(**kwargs) context["completed_problem_ids"] = user_completed_ids(self.request.user.profile) return context
def get_context_data(self, **kwargs): context = super(OwnProblemList, self).get_context_data(**kwargs) context['completed_problem_ids'] = user_completed_ids( self.request.user.profile) return context
def get_context_data(self, **kwargs): context = super(PostList, self).get_context_data(**kwargs) context['title'] = self.title or _('Page %d of Posts') % context['page_obj'].number context['first_page_href'] = reverse('home') context['page_prefix'] = reverse('blog_post_list') context['comments'] = Comment.most_recent(self.request.user, 10) context['new_problems'] = Problem.objects.filter(is_public=True, is_organization_private=False) \ .order_by('-date', '-id')[:7] context['page_titles'] = CacheDict(lambda page: Comment.get_page_title(page)) context['has_clarifications'] = False if self.request.user.is_authenticated: participation = self.request.user.profile.current_contest if participation: clarifications = ProblemClarification.objects.filter(problem__in=participation.contest.problems.all()) context['has_clarifications'] = clarifications.count() > 0 context['clarifications'] = clarifications.order_by('-date') context['user_count'] = lazy(Profile.objects.count, int, int) context['problem_count'] = lazy(Problem.objects.filter(is_public=True).count, int, int) context['submission_count'] = lazy(Submission.objects.count, int, int) context['language_count'] = lazy(Language.objects.count, int, int) context['post_comment_counts'] = { int(page[2:]): count for page, count in Comment.objects .filter(page__in=['b:%d' % post.id for post in context['posts']], hidden=False) .values_list('page').annotate(count=Count('page')).order_by() } now = timezone.now() # Dashboard stuff if self.request.user.is_authenticated: user = self.request.user.profile context['recently_attempted_problems'] = (Submission.objects.filter(user=user) .exclude(problem__in=user_completed_ids(user)) .values_list('problem__code', 'problem__name', 'problem__points') .annotate(points=Max('points'), latest=Max('date')) .order_by('-latest'))[:7] visible_contests = Contest.objects.filter(is_public=True).order_by('start_time') q = Q(is_private=False) if self.request.user.is_authenticated: q |= Q(organizations__in=user.organizations.all()) visible_contests = visible_contests.filter(q) context['current_contests'] = visible_contests.filter(start_time__lte=now, end_time__gt=now) context['future_contests'] = visible_contests.filter(start_time__gt=now) if self.request.user.is_authenticated: profile = self.request.user.profile context['own_open_tickets'] = (Ticket.objects.filter(user=profile, is_open=True).order_by('-id') .prefetch_related('linked_item').select_related('user__user')) else: profile = None context['own_open_tickets'] = [] # Superusers better be staffs, not the spell-casting kind either. if self.request.user.is_staff: tickets = (Ticket.objects.order_by('-id').filter(is_open=True).prefetch_related('linked_item') .select_related('user__user')) context['open_tickets'] = filter_visible_tickets(tickets, self.request.user, profile)[:10] else: context['open_tickets'] = [] return context
def get_completed_problems(self): if self.in_contest: return contest_completed_ids(self.contest_profile.current) else: return user_completed_ids(self.profile) if self.profile is not None else ()