:py:mod:`oioioi.disqualification.controllers` ============================================= .. py:module:: oioioi.disqualification.controllers Module Contents --------------- Classes ~~~~~~~ .. autoapisummary:: oioioi.disqualification.controllers.DisqualificationContestControllerMixin oioioi.disqualification.controllers.DisqualificationProgrammingContestControllerMixin oioioi.disqualification.controllers.WithDisqualificationRankingControllerMixin .. py:class:: DisqualificationContestControllerMixin Bases: :py:obj:`object` ContestController mixin that adds a disqualification functionality to the contest. .. py:method:: is_submission_disqualified(submission) Decides whether the submission is currently disqualified. This won't automatically propagate to user disqualification. Used mostly with single submission context. .. py:method:: has_disqualification_history(submission) Should be ``True`` if the submission was disqualified anytime. This method is for example used to check if the disqualification admin panel should be displayed. .. py:method:: is_any_submission_to_problem_disqualified(user, problem_instance) Should be ``True`` if the given user has any disqualified submission to this problem. If so, this will usually result in hiding scores in other submissions to this problem. .. py:method:: is_user_disqualified(request, user) True if the user should be considered disqualified The default implementation *does not* infer it from previous methods. .. py:method:: user_has_disqualification_history(request, user) True if the user was disqualified anytime. This method is for example used to check if the disqualification admin panel should be displayed. .. py:method:: exclude_disqualified_users(queryset) Filters the queryset of :class:`~django.contrib.auth.model.User` to select only users which are not disqualified in this contest. .. py:method:: change_submission_kind(submission, kind) Changing the kind of submission should undisqualify given submission .. py:method:: _render_disqualification_reason(request, submission) Renders part with reason of the given submission disqualification. This method is only used internally. .. py:method:: _get_contest_disq_info() .. py:method:: render_submission_disqualifiaction(request, submission) Renders the disqualification reason of the given submission to HTML. .. py:method:: _render_contestwide_disqualification_reason(request, user) Renders part with reason of the given user disqualification not directly associated with any particular submission. This method is only used internally. .. py:method:: render_my_submissions_header(request, submissions) .. py:method:: render_disqualifications(request, user, submissions) Renders all disqualifications of the given user to HTML, which may be put anywhere on the site. This method should process only submission from ``submissions``. .. py:method:: get_contest_participant_info_list(request, user) .. py:class:: DisqualificationProgrammingContestControllerMixin Bases: :py:obj:`object` ContestController mixin that renders submission disqualification info. .. py:method:: render_submission(request, submission) .. py:class:: WithDisqualificationRankingControllerMixin Bases: :py:obj:`object` RankingController mixin that manages disqualification module influence on rankings. .. py:method:: _show_disqualified(key) Decides if disqualified users should be included in the ranking. They will be marked as disqualified and will *not* influence the places of other contestants. .. py:method:: filter_users_for_ranking(key, queryset) .. py:method:: _render_ranking_page(key, data, page) .. py:method:: _get_csv_header(key, data) .. py:method:: _get_csv_row(key, row) .. py:method:: serialize_ranking(key) .. py:method:: _annotate_disqualified(key, data) .. py:method:: _ignore_in_ranking_places(data_row)