예제 #1
0
파일: admin.py 프로젝트: StarostaGit/oioioi
    def get_custom_list_select_related(self):
        return super(SubmissionsSimilarityEntryAdmin, self) \
                .get_custom_list_select_related() + [
                    'submission', 'submission__user',
                    'submission__problem_instance'
                ]

    def get_queryset(self, request):
        queryset = super(SubmissionsSimilarityEntryAdmin, self) \
            .get_queryset(request)
        queryset = queryset.filter(
            submission__problem_instance__contest=request.contest)
        queryset = queryset.order_by('-id')
        return queryset

contest_site.contest_register(SubmissionsSimilarityEntry,
    SubmissionsSimilarityEntryAdmin)
contest_admin_menu_registry.register('submissions_similarity',
    _("Similar submits"), lambda request:
    reverse(
        'oioioiadmin:similarsubmits_submissionssimilarityentry_changelist'),
    order=100)


class SubmisionsSimilarityEntryInline(admin.TabularInline):
    model = SubmissionsSimilarityEntry
    extra = 0
    raw_id_fields = ['submission']

    def has_add_permission(self, request):
        return True
예제 #2
0
파일: admin.py 프로젝트: cytadela8/oioioi
        qs = super(PostAdmin, self).get_queryset(request)
        qs = qs.filter(thread__category__forum=request.contest.forum)
        return qs


class BanAdmin(admin.ModelAdmin):
    list_display = ['user', 'admin', 'created_at']
    fields = ['user', 'admin', 'created_at', 'reason']
    readonly_fields = ['user', 'admin', 'created_at']

    def has_add_permission(self, request):
        return False

    def has_change_permission(self, request, obj=None):
        return get_permission(self, request)

    def has_delete_permission(self, request, obj=None):
        return get_permission(self, request)

    def get_queryset(self, request):
        qs = super(BanAdmin, self).get_queryset(request)
        qs = qs.filter(forum=request.contest.forum)
        return qs


contest_site.contest_register(Ban, BanAdmin)
contest_site.contest_register(Forum, ForumAdmin)
contest_site.contest_register(Category, CategoryAdmin)
contest_site.contest_register(Thread, ThreadAdmin)
contest_site.contest_register(Post, PostAdmin)
예제 #3
0
파일: admin.py 프로젝트: sio2project/oioioi
class ContestQueuedJob(QueuedJob):
    class Meta(object):
        proxy = True
        verbose_name = _("Contest Queued Jobs")


class ContestJobsQueueAdmin(SystemJobsQueueAdmin):
    def __init__(self, *args, **kwargs):
        super(ContestJobsQueueAdmin, self).__init__(*args, **kwargs)
        self.list_display = [x for x in self.list_display
                             if x not in ('contest', 'celery_task_id_link')]
        self.list_display_links = None
        self.list_filter = self.list_filter + [UserListFilter]

    def has_change_permission(self, request, obj=None):
        if obj:
            return False
        return is_contest_admin(request)

    def get_queryset(self, request):
        qs = super(ContestJobsQueueAdmin, self).get_queryset(request)
        return qs.filter(submission__problem_instance__contest=request.contest)


contest_site.contest_register(ContestQueuedJob, ContestJobsQueueAdmin)
contest_admin_menu_registry.register('queuedjob_admin',
        _("Evaluation queue"), lambda request: reverse(
            'oioioiadmin:evalmgr_contestqueuedjob_changelist'),
        condition=(lambda request: not request.user.is_superuser),
        order=60)
예제 #4
0
파일: admin.py 프로젝트: sio2project/oioioi
                super(MessageAdmin, self).log_change(request, message,
                                                     change_message)
                return redirect('contest_messages',
                                contest_id=request.contest.id)
        else:
            form = ChangeContestMessageForm(message.kind, request,
                                            instance=message)
        return TemplateResponse(request, 'admin/questions/change_message.html',
                                {'form': form, 'message': message})

    def response_delete(self, request):
        super(MessageAdmin, self).response_delete(request)
        return redirect('contest_messages', contest_id=request.contest.id)

contest_site.contest_register(Message, MessageAdmin)


class MessageNotifierConfigInline(admin.TabularInline):
    model = MessageNotifierConfig
    can_delete = True
    extra = 0

    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        contest_admin_perm = ContestPermission.objects \
                .filter(contest=request.contest) \
                .filter(permission='contests.contest_admin') \
                .select_related('user')
        admin_ids = [p.user.id for p in contest_admin_perm]

        if request.user.is_superuser:
예제 #5
0
파일: admin.py 프로젝트: pragacz/oioioi
    def has_delete_permission(self, request, obj=None):
        return self.has_change_permission(request, obj)

    def get_queryset(self, request):
        qs = super(TeamsAdmin, self).get_queryset(request)
        qs = qs.filter(contest=request.contest)
        return qs

    def save_form(self, request, *args, **kwargs):
        obj = super(TeamsAdmin, self).save_form(request, *args, **kwargs)
        obj.contest = request.contest
        return obj


contest_site.contest_register(Team, TeamsAdmin)
contest_admin_menu_registry.register(
    'teams',
    _("Teams"),
    lambda request: reverse('oioioiadmin:teams_team_changelist'),
    condition=teams_enabled & is_contest_admin,
    order=30)


class TeamsConfigInline(admin.TabularInline):
    model = TeamsConfig
    category = _("Advanced")

    def has_add_permission(self, request):
        return is_contest_admin(request)
예제 #6
0
파일: admin.py 프로젝트: wczyz/oioioi
        return is_contest_basicadmin(request)

    def has_delete_permission(self, request, obj=None):
        return False

    def came_from(self):
        return reverse('oioioiadmin:problems_contestproblempackage_changelist')

    def get_actions(self, request):
        actions = super(ContestProblemPackageAdmin, self).get_actions(request)
        if 'delete_selected' in actions:
            del actions['delete_selected']
        return actions


contest_site.contest_register(ContestProblemPackage,
                              ContestProblemPackageAdmin)
contest_admin_menu_registry.register(
    'problempackage_change',
    _("Problem packages"),
    lambda request: reverse(
        'oioioiadmin:problems_contestproblempackage_changelist'),
    condition=((~is_superuser) & pending_contest_packages),
    order=70)


class MainProblemInstanceAdmin(admin.ModelAdmin):
    fields = ('problem', 'short_name')
    readonly_fields = ('problem', )

    def has_add_permission(self, request):
        return False
예제 #7
0
파일: admin.py 프로젝트: kinjelom/oioioi
        return super(PrizeInline, self) \
                .formfield_for_foreignkey(db_field, request, **kwargs)


class PrizesAdminMixin(object):
    """Adds :class:`~oioioi.prizes.models.PrizeGiving` and
       :class:`~oioioi.prizes.models.Prize` to an admin panel and prize giving
       scheduling on save.
    """

    def __init__(self, *args, **kwargs):
        super(PrizesAdminMixin, self).__init__(*args, **kwargs)
        self.inlines = self.inlines + [PrizeGivingInline, PrizeInline]

    def save_related(self, request, *args, **kwargs):
        super(PrizesAdminMixin, self).save_related(request, *args, **kwargs)

        if not request.contest:
            return

        pgs_for_scheduling = request.contest.prizegiving_set \
                .select_for_update() \
                .filter(state='NOT_SCHEDULED', date__isnull=False)

        for pg in pgs_for_scheduling:
            pg.schedule()


ContestAdmin.mix_in(PrizesAdminMixin)
contest_site.contest_register(PrizeForUser)
예제 #8
0
파일: admin.py 프로젝트: marmistrz/oioioi
    related_submission.short_description = _("Related submission")

    def accept_action(self, request, queryset):
        queryset = queryset.order_by('id')
        for mailsubmission in queryset:
            accept_mail_submission(request, mailsubmission)

    accept_action.short_description = _("Accept selected submissions")

    def get_queryset(self, request):
        queryset = super(MailSubmissionAdmin, self).get_queryset(request)
        queryset = queryset.filter(problem_instance__contest=request.contest)
        queryset = queryset.order_by('-id')
        return queryset

    def changelist_view(self, request, extra_context=None):
        return super(MailSubmissionAdmin, self) \
                .changelist_view(request, extra_context=extra_context)


contest_site.contest_register(MailSubmission, MailSubmissionAdmin)

contest_admin_menu_registry.register(
    'mail_submissions_admin',
    _("Postal submissions"),
    lambda request: reverse('oioioiadmin:mailsubmit_mailsubmission_changelist'
                            ),
    order=40,
    condition=is_mailsubmit_used)
예제 #9
0
파일: admin.py 프로젝트: sbarzowski/oioioi
    search_fields = []

    def has_add_permission(self, request):
        return is_contest_admin(request)

    def has_change_permission(self, request, obj=None):
        return is_contest_admin(request)

    def has_delete_permission(self, request, obj=None):
        return self.has_change_permission(request, obj)

    def get_queryset(self, request):
        qs = super(PhaseAdmin, self).get_queryset(request)
        return qs.filter(round__contest=request.contest)

    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == 'round':
            kwargs['queryset'] = Round.objects.filter(contest=request.contest)
        return super(PhaseAdmin, self) \
                .formfield_for_foreignkey(db_field, request, **kwargs)

    def get_list_select_related(self):
        return super(PhaseAdmin, self).get_list_select_related() \
                + ['round__contest']

contest_site.contest_register(Phase, PhaseAdmin)
contest_admin_menu_registry.register('phase_change',
        _("Phases"), lambda request:
        reverse('oioioiadmin:phase_phase_changelist'),
        order=50)
예제 #10
0
파일: admin.py 프로젝트: sio2project/oioioi
        qs = super(PostAdmin, self).get_queryset(request)
        qs = qs.filter(thread__category__forum=request.contest.forum)
        return qs


class BanAdmin(admin.ModelAdmin):
    list_display = ['user', 'admin', 'created_at']
    fields = ['user', 'admin', 'created_at', 'reason']
    readonly_fields = ['user', 'admin', 'created_at']

    def has_add_permission(self, request):
        return False

    def has_change_permission(self, request, obj=None):
        return get_permission(self, request)

    def has_delete_permission(self, request, obj=None):
        return get_permission(self, request)

    def get_queryset(self, request):
        qs = super(BanAdmin, self).get_queryset(request)
        qs = qs.filter(forum=request.contest.forum)
        return qs


contest_site.contest_register(Ban, BanAdmin)
contest_site.contest_register(Forum, ForumAdmin)
contest_site.contest_register(Category, CategoryAdmin)
contest_site.contest_register(Thread, ThreadAdmin)
contest_site.contest_register(Post, PostAdmin)
예제 #11
0
파일: admin.py 프로젝트: sio2project/oioioi
    default_participant_admin = NoParticipantAdmin

    def _find_model_admin(self, request, object_id):
        rcontroller = request.contest.controller.registration_controller()
        if has_participants_admin(request):
            participant_admin = rcontroller.participant_admin(self.model,
                                                              self.admin_site)
        else:
            participant_admin = self.default_participant_admin(self.model,
                                                               self.admin_site)
        return participant_admin

    def _model_admin_for_instance(self, request, instance=None):
        raise NotImplementedError

contest_site.contest_register(Participant, ContestDependentParticipantAdmin)
contest_admin_menu_registry.register('participants', _("Participants"),
    lambda request: reverse('oioioiadmin:participants_participant_changelist'),
    condition=has_participants_admin, order=30)


class ParticipantInline(admin.TabularInline):
    model = Participant
    extra = 0
    readonly_fields = ('contest', 'status')

    def has_add_permission(self, request):
        return False

    def has_change_permission(self, request, obj=None):
        # Protected by parent ModelAdmin
예제 #12
0
        verbose_name = _("Contest Queued Submit")


class ContestSubmitsQueueAdmin(SystemSubmitsQueueAdmin):
    def __init__(self, *args, **kwargs):
        super(ContestSubmitsQueueAdmin, self).__init__(*args, **kwargs)
        self.list_display = [
            x for x in self.list_display
            if x not in ('contest', 'celery_task_id_link')
        ]
        self.list_filter = self.list_filter + [UserListFilter]

    def has_change_permission(self, request, obj=None):
        if obj:
            return False
        return is_contest_admin(request)

    def get_queryset(self, request):
        qs = super(ContestSubmitsQueueAdmin, self).get_queryset(request)
        return qs.filter(submission__problem_instance__contest=request.contest)


contest_site.contest_register(ContestQueuedSubmit, ContestSubmitsQueueAdmin)
contest_admin_menu_registry.register(
    'queuedsubmit_admin',
    _("Evaluation queue"),
    lambda request: reverse(
        'oioioiadmin:submitsqueue_contestqueuedsubmit_changelist'),
    condition=(lambda request: not request.user.is_superuser),
    order=60)
예제 #13
0
파일: admin.py 프로젝트: papedaniel/oioioi
class ContestQueuedSubmit(QueuedSubmit):
    class Meta(object):
        proxy = True
        verbose_name = _("Contest Queued Submit")


class ContestSubmitsQueueAdmin(SystemSubmitsQueueAdmin):
    def __init__(self, *args, **kwargs):
        super(ContestSubmitsQueueAdmin, self).__init__(*args, **kwargs)
        self.list_display = [x for x in self.list_display
                             if x not in ('contest', 'celery_task_id_link')]
        self.list_filter = self.list_filter + [UserListFilter]

    def has_change_permission(self, request, obj=None):
        if obj:
            return False
        return is_contest_admin(request)

    def get_queryset(self, request):
        qs = super(ContestSubmitsQueueAdmin, self).get_queryset(request)
        return qs.filter(submission__problem_instance__contest=request.contest)


contest_site.contest_register(ContestQueuedSubmit, ContestSubmitsQueueAdmin)
contest_admin_menu_registry.register('queuedsubmit_admin',
        _("Evaluation queue"), lambda request: reverse(
            'oioioiadmin:submitsqueue_contestqueuedsubmit_changelist'),
        condition=(lambda request: not request.user.is_superuser),
        order=60)
예제 #14
0
파일: admin.py 프로젝트: papedaniel/oioioi
            return ''
        contest = instance.submission.problem_instance.contest
        href = reverse('submission',
                       kwargs={'contest_id': contest.id,
                               'submission_id': instance.submission.id})
        return make_html_link(href, instance.submission.id)
    related_submission.short_description = _("Related submission")

    def accept_action(self, request, queryset):
        queryset = queryset.order_by('id')
        for mailsubmission in queryset:
            accept_mail_submission(request, mailsubmission)
    accept_action.short_description = _("Accept selected submissions")

    def queryset(self, request):
        queryset = super(MailSubmissionAdmin, self).queryset(request)
        queryset = queryset.filter(problem_instance__contest=request.contest)
        queryset = queryset.order_by('-id')
        return queryset

    def changelist_view(self, request, extra_context=None):
        return super(MailSubmissionAdmin, self) \
                .changelist_view(request, extra_context=extra_context)

contest_site.contest_register(MailSubmission, MailSubmissionAdmin)

contest_admin_menu_registry.register('mail_submissions_admin',
        _("Postal submissions"), lambda request:
            reverse('oioioiadmin:mailsubmit_mailsubmission_changelist'),
        order=40, condition=is_mailsubmit_used)
예제 #15
0
    def user_full_name(self, instance):
        return instance.user.get_full_name()

    user_full_name.short_description = _("User name")
    user_full_name.admin_order_field = 'user__last_name'

    def guilty_text(self, instance):
        return _("Yes") if instance.guilty else _("No")

    guilty_text.short_description = _("Guilty")
    guilty_text.admin_order_field = 'guilty'

    def get_custom_list_select_related(self):
        return super(DisqualificationAdmin, self)\
               .get_custom_list_select_related() \
               + ['submission', 'user', 'submission__problem_instance']

    def get_queryset(self, request):
        return super(DisqualificationAdmin, self).get_queryset(request) \
            .filter(contest=request.contest) \
            .order_by('-id')


contest_site.contest_register(Disqualification, DisqualificationAdmin)
contest_admin_menu_registry.register(
    'disqualification_admin',
    _("Custom disqualification"),
    lambda request: reverse(
        'oioioiadmin:disqualification_disqualification_changelist'),
    order=100)
예제 #16
0
파일: admin.py 프로젝트: sio2project/oioioi
        return super(PrizeInline, self) \
                .formfield_for_foreignkey(db_field, request, **kwargs)


class PrizesAdminMixin(object):
    """Adds :class:`~oioioi.prizes.models.PrizeGiving` and
       :class:`~oioioi.prizes.models.Prize` to an admin panel and prize giving
       scheduling on save.
    """

    def __init__(self, *args, **kwargs):
        super(PrizesAdminMixin, self).__init__(*args, **kwargs)
        self.inlines = self.inlines + [PrizeGivingInline, PrizeInline]

    def save_related(self, request, *args, **kwargs):
        super(PrizesAdminMixin, self).save_related(request, *args, **kwargs)

        if not request.contest:
            return

        pgs_for_scheduling = request.contest.prizegiving_set \
                .select_for_update() \
                .filter(state='NOT_SCHEDULED', date__isnull=False)

        for pg in pgs_for_scheduling:
            pg.schedule()


ContestAdmin.mix_in(PrizesAdminMixin)
contest_site.contest_register(PrizeForUser)
예제 #17
0
파일: admin.py 프로젝트: sio2project/oioioi
    color_display.short_description = _("Color")

    def get_queryset(self, request):
        qs = super(ProblemBalloonsConfigAdmin, self).get_queryset(request)
        return qs.filter(problem_instance__contest=request.contest)

    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == 'problem_instance':
            qs = ProblemInstance.objects
            if request.contest:
                qs = qs.filter(contest=request.contest)
            kwargs['queryset'] = qs
        return super(ProblemBalloonsConfigAdmin, self) \
                .formfield_for_foreignkey(db_field, request, **kwargs)

contest_site.contest_register(ProblemBalloonsConfig,
        ProblemBalloonsConfigAdmin)
contest_admin_menu_registry.register('problemballoonsconfig_admin',
        _("Balloon colors"), lambda request:
        reverse('oioioiadmin:balloons_problemballoonsconfig_changelist'),
        order=60)


class BalloonsDisplayAdmin(admin.ModelAdmin):
    list_display = ['ip_addr', 'user']

    def has_add_permission(self, request):
        return is_contest_admin(request)

    def has_change_permission(self, request, obj=None):
        return is_contest_admin(request)
예제 #18
0
    def get_queryset(self, request):
        qs = super(ProblemBalloonsConfigAdmin, self).get_queryset(request)
        return qs.filter(problem_instance__contest=request.contest)

    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == 'problem_instance':
            qs = ProblemInstance.objects
            if request.contest:
                qs = qs.filter(contest=request.contest)
            kwargs['queryset'] = qs
        return super(ProblemBalloonsConfigAdmin, self) \
                .formfield_for_foreignkey(db_field, request, **kwargs)


contest_site.contest_register(ProblemBalloonsConfig,
                              ProblemBalloonsConfigAdmin)
contest_admin_menu_registry.register(
    'problemballoonsconfig_admin',
    _("Balloons colors"),
    lambda request: reverse(
        'oioioiadmin:balloons_problemballoonsconfig_changelist'),
    order=60)


class BalloonsDisplayAdmin(admin.ModelAdmin):
    list_display = ['ip_addr', 'user']

    def has_add_permission(self, request):
        return is_contest_admin(request)

    def has_change_permission(self, request, obj=None):
예제 #19
0
파일: admin.py 프로젝트: sio2project/oioioi
    def has_delete_permission(self, request, obj=None):
        return self.has_change_permission(request, obj)

    def get_queryset(self, request):
        qs = super(TeamsAdmin, self).get_queryset(request)
        qs = qs.filter(contest=request.contest)
        return qs

    def save_form(self, request, *args, **kwargs):
        obj = super(TeamsAdmin, self).save_form(request, *args, **kwargs)
        obj.contest = request.contest
        return obj


contest_site.contest_register(Team, TeamsAdmin)
contest_admin_menu_registry.register('teams', _("Teams"),
    lambda request: reverse('oioioiadmin:teams_team_changelist'),
    condition=teams_enabled, order=30)


class TeamsConfigInline(admin.TabularInline):
    model = TeamsConfig


class TeamsAdminMixin(object):
    """Adds :class:`~oioioi.teams.models.TeamsConfig` to an admin panel.
    """

    def __init__(self, *args, **kwargs):
        super(TeamsAdminMixin, self).__init__(*args, **kwargs)
예제 #20
0
                super(MessageAdmin, self).log_change(request, message,
                                                     change_message)
                return redirect('contest_messages',
                                contest_id=request.contest.id)
        else:
            form = ChangeContestMessageForm(message.kind, request,
                                            instance=message)
        return TemplateResponse(request, 'admin/questions/change_message.html',
                                {'form': form, 'message': message})

    def response_delete(self, request):
        super(MessageAdmin, self).response_delete(request)
        return redirect('contest_messages', contest_id=request.contest.id)

contest_site.contest_register(Message, MessageAdmin)


class MessageNotifierConfigInline(admin.TabularInline):
    model = MessageNotifierConfig
    can_delete = True
    extra = 0

    def has_add_permission(self, request):
        return True

    def has_change_permission(self, request, obj=None):
        return True

    def has_delete_permission(self, request, obj=None):
        return True
예제 #21
0
파일: admin.py 프로젝트: kinjelom/oioioi
        verbose_name = _("Contest Queued Jobs")


class ContestJobsQueueAdmin(SystemJobsQueueAdmin):
    def __init__(self, *args, **kwargs):
        super(ContestJobsQueueAdmin, self).__init__(*args, **kwargs)
        self.list_display = [
            x for x in self.list_display
            if x not in ('contest', 'celery_task_id_link')
        ]
        self.list_display_links = None
        self.list_filter = self.list_filter + [UserListFilter]

    def has_change_permission(self, request, obj=None):
        if obj:
            return False
        return is_contest_admin(request)

    def get_queryset(self, request):
        qs = super(ContestJobsQueueAdmin, self).get_queryset(request)
        return qs.filter(submission__problem_instance__contest=request.contest)


contest_site.contest_register(ContestQueuedJob, ContestJobsQueueAdmin)
contest_admin_menu_registry.register(
    'queuedjob_admin',
    _("Evaluation queue"),
    lambda request: reverse('oioioiadmin:evalmgr_contestqueuedjob_changelist'),
    condition=(lambda request: not request.user.is_superuser),
    order=60)
예제 #22
0
            return False
        return is_contest_admin(request)

    def has_delete_permission(self, request, obj=None):
        return False

    def came_from(self):
        return reverse('oioioiadmin:problems_contestproblempackage_changelist')

    def get_actions(self, request):
        actions = super(ContestProblemPackageAdmin, self).get_actions(request)
        if 'delete_selected' in actions:
            del actions['delete_selected']
        return actions

contest_site.contest_register(ContestProblemPackage,
        ContestProblemPackageAdmin)
contest_admin_menu_registry.register('problempackage_change',
        _("Problem packages"),
        lambda request:
            reverse('oioioiadmin:problems_contestproblempackage_changelist'),
        condition=((~is_superuser) & pending_contest_packages),
        order=70)


class MainProblemInstanceAdmin(admin.ModelAdmin):
    fields = ('problem', 'short_name')
    readonly_fields = ('problem',)

    def has_add_permission(self, request):
        return False
예제 #23
0
파일: admin.py 프로젝트: StarostaGit/oioioi
    def _find_model_admin(self, request, object_id):
        rcontroller = request.contest.controller.registration_controller()
        if has_participants_admin(request):
            participant_admin = rcontroller.participant_admin(
                self.model, self.admin_site)
        else:
            participant_admin = self.default_participant_admin(
                self.model, self.admin_site)
        return participant_admin

    def _model_admin_for_instance(self, request, instance=None):
        raise NotImplementedError


contest_site.contest_register(Participant, ContestDependentParticipantAdmin)
contest_admin_menu_registry.register(
    'participants',
    _("Participants"),
    lambda request: reverse('oioioiadmin:participants_participant_changelist'),
    condition=has_participants_admin,
    order=30)


class ParticipantInline(admin.TabularInline):
    model = Participant
    extra = 0
    readonly_fields = ('contest', 'status')

    def has_add_permission(self, request):
        return False
예제 #24
0
파일: admin.py 프로젝트: papedaniel/oioioi
    def get_list_select_related(self):
        return super(SubmissionsSimilarityEntryAdmin, self) \
                .get_list_select_related() + [
                    'submission', 'submission__user',
                    'submission__problem_instance'
                ]

    def queryset(self, request):
        queryset = super(SubmissionsSimilarityEntryAdmin, self) \
            .queryset(request)
        queryset = queryset.filter(
            submission__problem_instance__contest=request.contest)
        queryset = queryset.order_by('-id')
        return queryset

contest_site.contest_register(SubmissionsSimilarityEntry,
    SubmissionsSimilarityEntryAdmin)
contest_admin_menu_registry.register('submissions_similarity',
    _("Similar submits"), lambda request:
    reverse(
        'oioioiadmin:similarsubmits_submissionssimilarityentry_changelist'),
    order=100)


class SubmisionsSimilarityEntryInline(admin.TabularInline):
    model = SubmissionsSimilarityEntry
    extra = 0
    raw_id_fields = ['submission']

    def has_add_permission(self, request):
        return True
예제 #25
0
파일: admin.py 프로젝트: sio2project/oioioi
                force_text(instance.submission.problem_instance))
        )
    submission_link.short_description = _("Submission")

    def user_full_name(self, instance):
        return instance.user.get_full_name()
    user_full_name.short_description = _("User name")
    user_full_name.admin_order_field = 'user__last_name'

    def guilty_text(self, instance):
        return _("Yes") if instance.guilty else _("No")
    guilty_text.short_description = _("Guilty")
    guilty_text.admin_order_field = 'guilty'

    def get_custom_list_select_related(self):
        return super(DisqualificationAdmin, self)\
               .get_custom_list_select_related() \
               + ['submission', 'user', 'submission__problem_instance']

    def get_queryset(self, request):
        return super(DisqualificationAdmin, self).get_queryset(request) \
            .filter(contest=request.contest) \
            .order_by('-id')


contest_site.contest_register(Disqualification, DisqualificationAdmin)
contest_admin_menu_registry.register('disqualification_admin',
    _("Custom disqualification"), lambda request:
    reverse('oioioiadmin:disqualification_disqualification_changelist'),
    order=100)