Source code for oioioi.zeus.admin

from django.conf import settings
from django.contrib import admin
from django.utils.translation import gettext_lazy as _

from oioioi.contests.utils import is_contest_admin
from oioioi.zeus.models import ZeusProblemData


[docs]class ZeusProblemDataInline(admin.StackedInline):
[docs] model = ZeusProblemData
[docs] can_delete = False
[docs] extra = 0
[docs] max_num = 0
[docs] readonly_fields = ['zeus_instance', 'zeus_problem_id']
[docs] fields = readonly_fields
[docs] inline_classes = ('collapse',)
[docs] category = _("Advanced")
[docs] def has_add_permission(self, request, obj=None): return False
[docs] def has_change_permission(self, request, obj=None): return is_contest_admin(request)
[docs] def has_delete_permission(self, request, obj=None): return False
[docs] def has_view_permission(self, request, obj=None): return self.has_change_permission(request, obj)
[docs] def zeus_instance(self, instance): zeus_id = instance.zeus_id if zeus_id in settings.ZEUS_INSTANCES: return '%s: %s' % (zeus_id, settings.ZEUS_INSTANCES[zeus_id][0]) return zeus_id
[docs] zeus_instance.short_description = _("Zeus instance")
[docs]class ZeusProblemAdminMixin(object): """Adds :class:`~oioioi.zeus.models.ZeusProblemData` to an admin panel.""" def __init__(self, *args, **kwargs): super(ZeusProblemAdminMixin, self).__init__(*args, **kwargs) self.inlines = [ZeusProblemDataInline] + self.inlines