def add_or_update_problem(request, contest, template): if 'problem' in request.GET: existing_problem = \ get_object_or_404(Problem, id=request.GET['problem']) if contest and not existing_problem.probleminstance_set.filter( contest=contest).exists(): raise Http404 if not can_admin_problem(request, existing_problem): raise PermissionDenied else: existing_problem = None if not request.user.has_perm('problems.problems_db_admin'): if contest and (not is_contest_admin(request)): raise PermissionDenied navbar_links = navbar_links_registry.template_context(request) context = {'existing_problem': existing_problem, 'navbar_links': navbar_links} tab_kwargs = { 'contest': contest, 'existing_problem': existing_problem } tab_link_params = request.GET.dict() def build_link(tab): tab_link_params['key'] = tab.key return request.path + '?' + six.moves.urllib.parse.urlencode( tab_link_params) return tabbed_view(request, template, context, problem_sources(request), tab_kwargs, build_link)
def problem_site_view(request, site_key): problem = get_object_or_404(Problem, problemsite__url_key=site_key) package = ProblemPackage.objects.filter(problem=problem).first() show_add_button, administered_recent_contests = \ _generate_add_to_contest_metadata(request) extra_actions = problem.controller.get_extra_problem_site_actions(problem) navbar_links = navbar_links_registry.template_context(request) context = {'problem': problem, 'package': package if package and package.package_file else None, 'extra_actions': extra_actions, 'can_admin_problem': can_admin_problem(request, problem), 'select_problem_src': request.GET.get('select_problem_src'), 'show_add_button': show_add_button, 'administered_recent_contests': administered_recent_contests, 'navbar_links': navbar_links} tab_kwargs = {'problem': problem} tab_link_params = request.GET.dict() if 'page' in tab_link_params: del tab_link_params['page'] def build_link(tab): tab_link_params['key'] = tab.key return request.path + '?' + six.moves.urllib.parse.urlencode( tab_link_params) return tabbed_view(request, 'problems/problemset/problem-site.html', context, problem_site_tab_registry, tab_kwargs, build_link)
def problem_site_view(request, site_key): problem = get_object_or_404(Problem, problemsite__url_key=site_key) package = ProblemPackage.objects.filter(problem=problem).first() show_add_button, administered_recent_contests = \ _generate_add_to_contest_metadata(request) context = { 'problem': problem, 'package': package if package and package.package_file else None, 'can_admin_problem': can_admin_problem(request, problem), 'select_problem_src': request.GET.get('select_problem_src'), 'show_add_button': show_add_button, 'administered_recent_contests': administered_recent_contests } tab_kwargs = {'problem': problem} tab_link_params = request.GET.dict() if 'page' in tab_link_params: del tab_link_params['page'] def build_link(tab): tab_link_params['key'] = tab.key return request.path + '?' + urllib.urlencode(tab_link_params) return tabbed_view(request, 'problems/problemset/problem-site.html', context, problem_site_tab_registry, tab_kwargs, build_link)
def add_or_update_problem(request, contest, template): if 'problem' in request.GET: existing_problem = \ get_object_or_404(Problem, id=request.GET['problem']) if contest and not existing_problem.probleminstance_set.filter( contest=contest).exists(): raise Http404 if not can_admin_problem(request, existing_problem): raise PermissionDenied else: existing_problem = None if not request.user.has_perm('problems.problems_db_admin'): if contest and (not is_contest_admin(request)): raise PermissionDenied context = {'existing_problem': existing_problem} tab_kwargs = {'contest': contest, 'existing_problem': existing_problem} tab_link_params = request.GET.dict() def build_link(tab): tab_link_params['key'] = tab.key return request.path + '?' + urllib.urlencode(tab_link_params) return tabbed_view(request, template, context, problem_sources(request), tab_kwargs, build_link)
def problem_site_view(request, site_key): problem = get_object_or_404(Problem, problemsite__url_key=site_key) package = ProblemPackage.objects.filter(problem=problem).first() show_add_button, administered_recent_contests = \ generate_add_to_contest_metadata(request) extra_actions = problem.controller.get_extra_problem_site_actions(problem) navbar_links = navbar_links_registry.template_context(request) problemset_tabs = generate_problemset_tabs(request) problemset_tabs.append({'name': _('Problem view'), 'url': reverse('problem_site', kwargs={'site_key': site_key})}) context = {'problem': problem, 'package': package if package and package.package_file else None, 'extra_actions': extra_actions, 'can_admin_problem': can_admin_problem(request, problem), 'select_problem_src': request.GET.get('select_problem_src'), 'show_add_button': show_add_button, 'show_proposal_form': show_proposal_form(problem, request.user), 'administered_recent_contests': administered_recent_contests, 'navbar_links': navbar_links, 'problemset_tabs': problemset_tabs} tab_kwargs = {'problem': problem} tab_link_params = request.GET.dict() if 'page' in tab_link_params: del tab_link_params['page'] def build_link(tab): tab_link_params['key'] = tab.key return request.path + '?' + six.moves.urllib.parse.urlencode( tab_link_params) return tabbed_view(request, 'problems/problemset/problem-site.html', context, problem_site_tab_registry, tab_kwargs, build_link)
def problem_site_view(request, site_key): problem = get_object_or_404(Problem, problemsite__url_key=site_key) package = ProblemPackage.objects.filter(problem=problem).first() show_add_button, administered_recent_contests = _generate_add_to_contest_metadata(request) context = { "problem": problem, "package": package if package and package.package_file else None, "can_admin_problem": can_admin_problem(request, problem), "select_problem_src": request.GET.get("select_problem_src"), "show_add_button": show_add_button, "administered_recent_contests": administered_recent_contests, } tab_kwargs = {"problem": problem} tab_link_params = request.GET.dict() if "page" in tab_link_params: del tab_link_params["page"] def build_link(tab): tab_link_params["key"] = tab.key return request.path + "?" + urllib.urlencode(tab_link_params) return tabbed_view( request, "problems/problemset/problem_site.html", context, problem_site_tab_registry, tab_kwargs, build_link )
def problem_site_view(request, site_key): problem = get_object_or_404(Problem, problemsite__url_key=site_key) context = {'problem': problem, 'can_admin_problem': can_admin_problem(request, problem), 'select_problem_src': request.GET.get('select_problem_src')} tab_kwargs = {'problem': problem} tab_link_params = request.GET.dict() if 'page' in tab_link_params: del tab_link_params['page'] def build_link(tab): tab_link_params['key'] = tab.key return request.path + '?' + urllib.urlencode(tab_link_params) return tabbed_view(request, 'problems/problemset/problem_site.html', context, problem_site_tab_registry, tab_kwargs, build_link)
def add_or_update_problem(request, contest, template): if 'problem' in request.GET: existing_problem = get_object_or_404(Problem, id=request.GET['problem']) if (contest and not existing_problem.probleminstance_set.filter( contest=contest).exists()): raise Http404 if not can_admin_problem(request, existing_problem): raise PermissionDenied else: existing_problem = None if not request.user.has_perm('problems.problems_db_admin'): if contest and (not is_contest_basicadmin(request)): raise PermissionDenied navbar_links = navbar_links_registry.template_context(request) problemset_tabs = generate_problemset_tabs(request) context = { 'existing_problem': existing_problem, 'navbar_links': navbar_links, 'problemset_tabs': problemset_tabs, } tab_kwargs = {'contest': contest, 'existing_problem': existing_problem} tab_link_params = request.GET.dict() def build_link(tab): tab_link_params['key'] = tab.key return request.path + '?' + six.moves.urllib.parse.urlencode( tab_link_params) return tabbed_view( request, template, context, problem_sources(request, existing_problem=existing_problem is not None), tab_kwargs, build_link, )
def add_or_update_problem(request, contest, template): if "problem" in request.GET: existing_problem = get_object_or_404(Problem, id=request.GET["problem"]) if contest and not existing_problem.probleminstance_set.filter(contest=contest).exists(): raise Http404 if not can_admin_problem(request, existing_problem): raise PermissionDenied else: existing_problem = None if not request.user.has_perm("problems.problems_db_admin"): if contest and (not is_contest_admin(request)): raise PermissionDenied context = {"existing_problem": existing_problem} tab_kwargs = {"contest": contest, "existing_problem": existing_problem} tab_link_params = request.GET.dict() def build_link(tab): tab_link_params["key"] = tab.key return request.path + "?" + urllib.urlencode(tab_link_params) return tabbed_view(request, template, context, problem_sources(request), tab_kwargs, build_link)