Source code for oioioi.sinolpack.admin
from django.contrib import admin
from django.urls import reverse
from django.utils.translation import gettext_lazy as _
from oioioi.base.utils import make_html_link
from oioioi.contests.utils import is_contest_admin
from oioioi.sinolpack.models import ExtraConfig, ExtraFile
[docs]
class SinolpackConfigInline(admin.StackedInline):
model = ExtraConfig
can_delete = False
extra = 0
max_num = 0
readonly_fields = ["config"]
fields = readonly_fields
inline_classes = ("collapse",)
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]
class SinolpackProblemAdminMixin:
"""Adds :class:`~oioioi.sinolpack.models.ExtraConfig` and
:class:`~oioioi.sinolpack.models.ExtraFile` to an admin panel.
"""
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.inlines = tuple(self.inlines) + (
SinolpackConfigInline,
SinolpackExtraFilesInline,
)