コード例 #1
0
ファイル: admin.py プロジェクト: marmistrz/oioioi
        super(ScoresRevealProgrammingProblemAdminMixin, self) \
            .__init__(*args, **kwargs)
        self.inlines = self.inlines + [ScoresRevealConfigInline]


class ScoresRevealSubmissionAdminMixin(object):
    def __init__(self, *args, **kwargs):
        super(ScoresRevealSubmissionAdminMixin, self).__init__(*args, **kwargs)

    def get_list_display(self, request):
        return super(ScoresRevealSubmissionAdminMixin, self) \
                    .get_list_display(request) + ['reveal_display']

    def get_list_filter(self, request):
        return super(ScoresRevealSubmissionAdminMixin, self) \
                    .get_list_filter(request) + [RevealedFilter]

    def reveal_display(self, instance):
        return is_revealed(instance)

    reveal_display.short_description = _("Revealed")
    reveal_display.admin_order_field = 'revealed'
    reveal_display.boolean = True

    def get_list_select_related(self):
        return super(ScoresRevealSubmissionAdminMixin, self). \
                get_list_select_related() + ['revealed']


SubmissionAdmin.mix_in(ScoresRevealSubmissionAdminMixin)
コード例 #2
0
class RegionListFilter(SimpleListFilter):
    title = _("region")
    parameter_name = 'region'

    def lookups(self, request, model_admin):
        regions = Region.objects.filter(contest=request.contest)
        return [(x, x.name) for x in regions]

    def queryset(self, request, queryset):
        name = self.value()
        if name:
            kwargs = {
                'user__participant__contest':
                request.contest,
                'user__participant__oi_oionsiteregistration__'
                'region__short_name':
                name
            }
            return queryset.filter(**kwargs)
        else:
            return queryset


class OIOnsiteSubmissionAdminMixin(object):
    def __init__(self, *args, **kwargs):
        super(OIOnsiteSubmissionAdminMixin, self).__init__(*args, **kwargs)
        self.list_filter = self.list_filter + [RegionListFilter]


SubmissionAdmin.mix_in(OIOnsiteSubmissionAdminMixin)
コード例 #3
0
ファイル: admin.py プロジェクト: mahrud/oioioi
                    self.rejudge_model_solutions_view,
                    name='contests_probleminstance_models_rejudge'),
            )
        return extra_urls + urls

    def inline_actions(self, instance):
        actions = super(ProgrammingProblemInstanceAdminMixin,
                self).inline_actions(instance)
        if ModelSolution.objects.filter(problem_id=instance.problem_id):
            models_view = reverse('oioioiadmin:contests_probleminstance_models',
                    args=(instance.id,))
            actions.append((models_view, _("Model solutions")))
        return actions

ProblemInstanceAdmin.mix_in(ProgrammingProblemInstanceAdminMixin)

class ModelSubmissionAdminMixin(object):
    def user_full_name(self, instance):
        if not instance.user:
            instance = instance.programsubmission
            if instance:
                instance = instance.modelprogramsubmission
                if instance:
                    return '(%s)' % (conditional_escape(force_unicode(
                        instance.model_solution.name)),)
        return super(ModelSubmissionAdminMixin, self).user_full_name(instance)
    user_full_name.short_description = SubmissionAdmin.user_full_name.short_description
    user_full_name.admin_order_field = SubmissionAdmin.user_full_name.admin_order_field

SubmissionAdmin.mix_in(ModelSubmissionAdminMixin)
コード例 #4
0
ファイル: admin.py プロジェクト: cytadela8/oioioi
                   .get_list_display(request) + ['received_suspected']

    def get_list_filter(self, request):
        return super(OISubmitSubmissionAdminMixin, self)\
                    .get_list_filter(request) + \
                    ['oisubmitextradata__received_suspected']

    def received_suspected(self, instance):
        received_suspected = getattr(instance.oisubmitextradata,
                                     'received_suspected', None)
        is_oisubmit = (received_suspected is not None)
        comments = getattr(instance.oisubmitextradata, 'comments', '')
        comments = [SUSPICION_REASONS[c] for c in comments.split(',') if c]
        comments = '<br />'.join(map(six.text_type, comments))
        return render_to_string(
            'received-suspected.html', {
                'received_suspected': received_suspected,
                'is_oisubmit': is_oisubmit,
                'comments': comments
            })

    received_suspected.allow_tags = True
    received_suspected.short_description = _("Received suspected")

    def get_custom_list_select_related(self):
        return super(OISubmitSubmissionAdminMixin, self) \
                .get_custom_list_select_related() + ['oisubmitextradata']


SubmissionAdmin.mix_in(OISubmitSubmissionAdminMixin)
コード例 #5
0
                        force_unicode(instance.model_solution.name)), )
        return super(ModelSubmissionAdminMixin, self).user_full_name(instance)

    user_full_name.short_description = \
            SubmissionAdmin.user_full_name.short_description
    user_full_name.admin_order_field = \
            SubmissionAdmin.user_full_name.admin_order_field

    def get_custom_list_select_related(self):
        return super(ModelSubmissionAdminMixin, self) \
                .get_custom_list_select_related() \
                + ['programsubmission',
                   'programsubmission__modelprogramsubmission']


SubmissionAdmin.mix_in(ModelSubmissionAdminMixin)


class ProgramSubmissionAdminMixin(object):
    """Adds submission diff action, language display and language filter to
       an admin panel.
    """
    def __init__(self, *args, **kwargs):
        super(ProgramSubmissionAdminMixin, self).__init__(*args, **kwargs)
        self.actions += ['submission_diff_action']

    def get_list_display(self, request):
        return super(ProgramSubmissionAdminMixin, self) \
                    .get_list_display(request) + ['language_display']

    def get_list_filter(self, request):
コード例 #6
0
ファイル: admin.py プロジェクト: sio2project/oioioi
            .__init__(*args, **kwargs)
        self.inlines = self.inlines + [ScoresRevealConfigInline]


class ScoresRevealSubmissionAdminMixin(object):
    """Adds reveal info and filter to an admin panel.
    """

    def __init__(self, *args, **kwargs):
        super(ScoresRevealSubmissionAdminMixin, self).__init__(*args, **kwargs)

    def get_list_display(self, request):
        return super(ScoresRevealSubmissionAdminMixin, self) \
                    .get_list_display(request) + ['reveal_display']

    def get_list_filter(self, request):
        return super(ScoresRevealSubmissionAdminMixin, self) \
                    .get_list_filter(request) + [RevealedFilter]

    def reveal_display(self, instance):
        return is_revealed(instance)
    reveal_display.short_description = _("Revealed")
    reveal_display.admin_order_field = 'revealed'
    reveal_display.boolean = True

    def get_custom_list_select_related(self):
        return super(ScoresRevealSubmissionAdminMixin, self). \
                   get_custom_list_select_related() + ['revealed']

SubmissionAdmin.mix_in(ScoresRevealSubmissionAdminMixin)
コード例 #7
0
ファイル: admin.py プロジェクト: sio2project/oioioi
    def __init__(self, *args, **kwargs):
        super(OISubmitSubmissionAdminMixin, self).__init__(*args, **kwargs)

    def get_list_display(self, request):
        return super(OISubmitSubmissionAdminMixin, self) \
                   .get_list_display(request) + ['received_suspected']

    def get_list_filter(self, request):
        return super(OISubmitSubmissionAdminMixin, self)\
                    .get_list_filter(request) + \
                    ['oisubmitextradata__received_suspected']

    def received_suspected(self, instance):
        received_suspected = getattr(instance.oisubmitextradata,
                'received_suspected', None)
        is_oisubmit = (received_suspected is not None)
        comments = getattr(instance.oisubmitextradata, 'comments', '')
        comments = [SUSPICION_REASONS[c] for c in comments.split(',') if c]
        comments = '<br />'.join(map(six.text_type, comments))
        return render_to_string('received-suspected.html',
                {'received_suspected': received_suspected,
                'is_oisubmit': is_oisubmit, 'comments': comments})
    received_suspected.short_description = _("Received suspected")

    def get_custom_list_select_related(self):
        return super(OISubmitSubmissionAdminMixin, self) \
                .get_custom_list_select_related() + ['oisubmitextradata']

SubmissionAdmin.mix_in(OISubmitSubmissionAdminMixin)
コード例 #8
0
ファイル: admin.py プロジェクト: sio2project/oioioi
            return queryset


class OnsiteSubmissionAdminMixin(object):
    """Adds :class:`~oioioi.participants.admin.RegionListFilter` filter to
       an admin panel.
    """

    def __init__(self, *args, **kwargs):
        super(OnsiteSubmissionAdminMixin, self).__init__(*args, **kwargs)

    def get_list_filter(self, request):
        return super(OnsiteSubmissionAdminMixin, self) \
                   .get_list_filter(request) + [RegionListFilter]

SubmissionAdmin.mix_in(OnsiteSubmissionAdminMixin)


class UserWithParticipantsAdminMixin(object):
    """Adds :class:`~oioioi.participants.models.Participant` to an admin panel.
    """

    def __init__(self, *args, **kwargs):
        super(UserWithParticipantsAdminMixin, self).__init__(*args, **kwargs)
        self.inlines = self.inlines + [ParticipantInline]
admin.OioioiUserAdmin.mix_in(UserWithParticipantsAdminMixin)


class ParticipantsRoundTimeExtensionMixin(object):
    """Adds contest participants to an admin panel.
    """