def problem(request): user = validate_user(request.user) can_add_problem = user.has_subjudge_auth() filter_type = request.GET.get('filter') tag_filter = TagFilter(request.GET) if tag_filter.is_valid(): tag_name = tag_filter.cleaned_data['tag_name'] if filter_type == 'mine': problem_list = get_owner_problem_list(user) mine = True else: problem_list = get_problem_list(user) mine = False if tag_name: problem_list = problem_list.filter(tags__tag_name=tag_name) for p in problem_list: p.in_contest = check_in_contest(p) problems = get_current_page(request, problem_list, 15) for p in problems: if p.total_submission != 0: p.pass_rate = float(p.ac_count) / float(p.total_submission) * 100.0 p.not_pass_rate = 100.0 - p.pass_rate p.pass_rate = "%.2f" % (p.pass_rate) p.not_pass_rate = "%.2f" % (p.not_pass_rate) else: p.no_submission = True else: problems = [] mine = False return render_index(request, 'problem/panel.html', {'all_problem': problems, 'mine': mine, 'can_add_problem': can_add_problem, 'tag_filter': tag_filter})
def detail(request, group_id): group = get_group(group_id) show_number = 5; #number for brief list to show in group detail page. announce_list = group.announce.order_by('-id')[0:show_number] student_list = group.member.order_by('username') form = AnnounceForm() user = validate_user(request.user) user_is_owner = has_group_ownership(user, group) user_is_coowner = has_group_coownership(user, group) user_has_auth = user_is_owner or user_is_coowner running_contest_list = [] ended_contest_list = [] now = timezone.now() running_contest_list = group.trace_contest.filter(start_time__lte=now, end_time__gte=now)[0:show_number] ended_contest_list = group.trace_contest.filter(end_time__lte=now)[0:show_number] student_list = get_current_page(request, student_list) return render_index( request, 'group/groupDetail.html', { 'running_contest_list': running_contest_list, 'ended_contest_list': ended_contest_list, 'announce_list': announce_list, 'student_list': student_list, 'group': group, 'user_has_auth': user_has_auth, 'form': form, 'redirect_page' : 'detail', })
def problem(request): user = validate_user(request.user) can_add_problem = user.has_subjudge_auth() filter_type = request.GET.get('filter') tag_filter = TagFilter(request.GET) if tag_filter.is_valid(): tag_name = tag_filter.cleaned_data['tag_name'] if filter_type == 'mine': problem_list = get_owner_problem_list(user) mine = True else: problem_list = get_problem_list(user) mine = False if tag_name: problem_list = problem_list.filter(tags__tag_name=tag_name) for p in problem_list: p.in_contest = check_in_contest(p) problems = get_current_page(request, problem_list, slice=15) for p in problems: if p.total_submission != 0: p.pass_rate = float(p.ac_count) / float(p.total_submission) * 100.0 p.not_pass_rate = 100.0 - p.pass_rate p.pass_rate = "%.2f" % (p.pass_rate) p.not_pass_rate = "%.2f" % (p.not_pass_rate) else: p.no_submission = True else: problems = [] mine = False return render_index(request, 'problem/panel.html', {'all_problem': problems, 'mine': mine, 'can_add_problem': can_add_problem, 'tag_filter': tag_filter})
def detail(request, group_id): group = get_group(group_id) show_number = 5 # number for brief list to show in group detail page. announce_list = group.announce.order_by('-id')[0:show_number] student_list = group.member.order_by('username') form = AnnounceForm() user = validate_user(request.user) user_is_owner = has_group_ownership(user, group) user_is_coowner = has_group_coownership(user, group) user_has_auth = user_is_owner or user_is_coowner running_contest_list = [] ended_contest_list = [] now = timezone.now() running_contest_list = group.trace_contest.filter( start_time__lte=now, end_time__gte=now)[0:show_number] ended_contest_list = group.trace_contest.filter( end_time__lte=now)[0:show_number] student_list = get_current_page(request, student_list) return render_index( request, 'group/groupDetail.html', { 'running_contest_list': running_contest_list, 'ended_contest_list': ended_contest_list, 'announce_list': announce_list, 'student_list': student_list, 'group': group, 'user_has_auth': user_has_auth, 'form': form, 'redirect_page': 'detail', })
def list(request): all_group = Group.objects.order_by('id') all_group = get_current_page(request, all_group) return render_index( request,'group/groupList.html', { 'all_group_list': all_group, 'include_flag': 'all_group', })
def list(request): all_group = Group.objects.order_by('id') all_group = get_current_page(request, all_group) return render_index( request, 'group/groupList.html', { 'all_group_list': all_group, 'include_flag': 'all_group', })
def my_list(request): my_group = Group.objects.filter(Q(member__username__contains=request.user.username) \ |Q(owner__username=request.user.username) \ |Q(coowner__username=request.user.username) \ ).distinct().order_by('id') my_group = get_current_page(request, my_group) return render_index( request,'group/groupList.html', { 'my_group_list': my_group, 'include_flag': 'my_group', })
def my_list(request): my_group = Group.objects.filter(Q(member__username__contains=request.user.username) | Q(owner__username=request.user.username) | Q(coowner__username=request.user.username) ).distinct().order_by('id') my_group = get_current_page(request, my_group) return render_index( request, 'group/groupList.html', { 'my_group_list': my_group, 'include_flag': 'my_group', })
def status(request): status_filter = StatusFilter(request.GET) submissions = get_visible_submission(request.user).order_by('-id') render_data = {} render_data['status_filter'] = status_filter render_data['running_contests'] = get_running_contests().order_by('id') if status_filter.is_valid(): username = status_filter.cleaned_data['username'] cid = status_filter.cleaned_data['cid'] pid = status_filter.cleaned_data['pid'] status = status_filter.cleaned_data['status'] if username: user = User.objects.get(username=username) submissions = submissions.filter(user=user) if pid: problem = Problem.objects.get(id=pid) submissions = submissions.filter(problem=problem) if cid: contest = Contest.objects.get(id=cid) submissions = get_contest_submissions(contest, submissions) if status: submissions = submissions.filter(status=status) submissions = get_current_page(request, submissions) # Regroup submission details submissions.object_list = regroup_submission(submissions.object_list) # Serialize to json if 'type' in request.GET and request.GET['type'] == 'json': submissions = [submission['grouper'] for submission in submissions.object_list] # Remove unnecessary fields submissions = serialize("python", submissions) submissions = [s['fields'] for s in submissions] return HttpResponse(json.dumps(submissions, default=lambda obj: obj.isoformat() if hasattr(obj, 'isoformat') else obj)) else: messages.warning(request, 'Please check filter constraints again!') return render_index(request, 'status/status.html', render_data) if not submissions: messages.warning(request, 'No submissions found for the given query!') render_data['submissions'] = submissions return render_index(request, 'status/status.html', render_data)
def archive(request): user = validate_user(request.user) # filter for contest. # show owned and attended contests when filter==mine # else show all filter_type = request.GET.get("filter") if filter_type == "mine": contests = get_owned_or_attended_contests(user) else: contests = get_contests(user) contests = get_current_page(request, contests) return render_index(request, "contest/contestArchive.html", {"contests": contests})
def archive(request): user = validate_user(request.user) # filter for contest. # show owned and attended contests when filter==mine # else show all filter_type = request.GET.get('filter') if filter_type == 'mine': contests = get_owned_or_attended_contests(user) else: contests = get_contests(user) contests = get_current_page(request, contests) return render_index(request, 'contest/contestArchive.html', {'contests': contests})
def get_ended_contest(request, group_id): group = get_group(group_id) now = timezone.now() all_ended_contest_list_unpaged = group.trace_contest.filter( end_time__lte=now) all_ended_contest_list = get_current_page( request, all_ended_contest_list_unpaged) return render_index( request, 'group/viewall.html', { 'data_list': all_ended_contest_list, 'title': 'ended contest', 'list_type': 'endContest', })
def get_all_announce(request, group_id): group = get_group(group_id) user = validate_user(request.user) user_is_owner = has_group_ownership(user, group) user_is_coowner = has_group_coownership(user, group) user_has_auth = user_is_owner or user_is_coowner all_announce_list_unpaged = group.announce.order_by('-id') all_announce_list = get_current_page(request, all_announce_list_unpaged) return render_index( request, 'group/viewall.html', { 'data_list': all_announce_list, 'title': 'announce', 'list_type': 'announce', 'user_has_auth': user_has_auth, 'redirect_page': 'viewall', 'group': group, })
def archive(request): all_contests = get_contests(request.user) contests = get_current_page(request, all_contests) return render_index(request, 'contest/contestArchive.html', {'contests':contests})
def status(request): start_time = time.time() status_filter = StatusFilter(request.GET) submissions = get_visible_submission(request.user).order_by('-id') render_data = {} render_data['status_filter'] = status_filter render_data['running_contests'] = get_running_contests().order_by('id') if status_filter.is_valid(): username = status_filter.cleaned_data['username'] cid = status_filter.cleaned_data['cid'] pid = status_filter.cleaned_data['pid'] status = status_filter.cleaned_data['status'] if username: user = User.objects.get(username=username) submissions = submissions.filter(user=user) if pid: problem = Problem.objects.get(id=pid) submissions = submissions.filter(problem=problem) if cid: contest = Contest.objects.get(id=cid) submissions = get_contest_submissions(contest, submissions) if status: submissions = submissions.filter(status=status) huge_table_count = None # No constriant provided, the search result would be huge # Cache the count for faster paging if not (username or pid or cid or status): if cache.get('huge_table_count'): huge_table_count = cache.get('huge_table_count') else: huge_table_count = submissions.count() cache.set('huge_table_count', huge_table_count, 60) submissions = get_current_page(request, submissions, count=huge_table_count) # Regroup submission details submissions.object_list = regroup_submission(submissions.object_list) # Serialize to json if 'type' in request.GET and request.GET['type'] == 'json': submissions = [ submission['grouper'] for submission in submissions.object_list ] # Remove unnecessary fields submissions = serialize("python", submissions) submissions = [s['fields'] for s in submissions] return HttpResponse( json.dumps(submissions, default=lambda obj: obj.isoformat() if hasattr(obj, 'isoformat') else obj)) else: messages.warning(request, 'Please check filter constraints again!') return render_index(request, 'status/status.html', render_data) if not submissions: messages.warning(request, 'No submissions found for the given query!') render_data['submissions'] = submissions render_data['searching_time'] = time.time() - start_time return render_index(request, 'status/status.html', render_data)