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):
[docs] model = ExtraConfig
[docs] can_delete = False
[docs] extra = 0
[docs] max_num = 0
[docs] readonly_fields = ['config']
[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]class SinolpackExtraFilesInline(admin.StackedInline):
[docs] model = ExtraFile
[docs] can_delete = False
[docs] extra = 0
[docs] readonly_fields = ['file_link']
[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] file_link.short_description = _("Extra file")
[docs]class SinolpackProblemAdminMixin(object): """Adds :class:`~oioioi.sinolpack.models.ExtraConfig` and :class:`~oioioi.sinolpack.models.ExtraFile` to an admin panel. """ def __init__(self, *args, **kwargs): super(SinolpackProblemAdminMixin, self).__init__(*args, **kwargs) self.inlines = tuple(self.inlines) + (SinolpackConfigInline, SinolpackExtraFilesInline,)