def get_context_data(self, **kwargs): self.ctx = data = super(ProblemStatisticsView, self).get_context_data(**kwargs) judge_servers = { server.pk: server.name for server in Server.objects.all() } for s in data['submission_list']: s.judge_server = judge_servers.get(s.judge_server, "N/A") data['user_ac_count'] = self.problem.ac_user_count data['user_all_count'] = self.problem.total_user_count data['user_ratio'] = self.problem.ac_user_ratio * 100 data['ac_count'] = self.problem.ac_count data['all_count'] = self.problem.total_count data['ratio'] = self.problem.ac_ratio * 100 data['difficulty'] = self.problem.reward data['stats'] = self.problem.stats data['param_type'] = self.request.GET.get('type', 'latest') data['tags'] = edit_string_for_tags(self.problem.tags) data['tags_choices'] = Tag.objects.all().values_list("name", flat=True) data['public_edit_access'] = is_problem_accepted( self.request.user, self.problem) data['all_valid'] = True self.get_runtime_distribution() return data
def post(self, request, *args, **kwargs): if not is_problem_accepted(self.request.user, self.problem): raise PermissionDenied tags = self.__class__.clear_tags(request.POST['tags']) if tags: Tag.objects.update_tags(self.problem, tags) return redirect(request.POST['next'])
def get_tag_info(self): return { 'tags': edit_string_for_tags(self.problem.tags), 'tags_choices': Tag.objects.all().values_list("name", flat=True), 'public_edit_access': self.privileged or is_problem_accepted(self.request.user, self.problem) }