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 SinolpackExtraFilesInline(admin.StackedInline): model = ExtraFile can_delete = False extra = 0 readonly_fields = ["file_link"] 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, )