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] def has_view_permission(self, request, obj=None):
return self.has_change_permission(request, obj)
[docs]class SinolpackExtraFilesInline(admin.StackedInline):
[docs] def has_view_permission(self, request, obj=None):
return self.has_change_permission(request, obj)
[docs] def file_link(self, instance):
if instance.id is not None:
href = reverse('download_extra_file', kwargs={'file_id': str(instance.id)})
return make_html_link(href, instance.name)
return None
[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,)