Esempio n. 1
0
    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
Esempio n. 2
0
 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'])
Esempio n. 3
0
 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)
     }