Source code for oioioi.oisubmit.admin
from django.template.loader import render_to_string
from django.utils.translation import gettext_lazy as _
from oioioi.contests.admin import SubmissionAdmin
from oioioi.oisubmit.err_dict import SUSPICION_REASONS
[docs]class OISubmitSubmissionAdminMixin(object):
"""Adds oisubmit specific information (e.g. suspected submissions) to
an admin panel.
"""
def __init__(self, *args, **kwargs):
super(OISubmitSubmissionAdminMixin, self).__init__(*args, **kwargs)
[docs] def get_list_display(self, request):
return super(OISubmitSubmissionAdminMixin, self).get_list_display(request) + [
'received_suspected'
]
[docs] def get_list_filter(self, request):
return super(OISubmitSubmissionAdminMixin, self).get_list_filter(request) + [
'oisubmitextradata__received_suspected'
]
[docs] def received_suspected(self, instance):
received_suspected = getattr(
instance.oisubmitextradata, 'received_suspected', None
)
is_oisubmit = received_suspected is not None
comments = getattr(instance.oisubmitextradata, 'comments', '')
comments = [SUSPICION_REASONS[c] for c in comments.split(',') if c]
comments = '<br />'.join(map(str, comments))
return render_to_string(
'received-suspected.html',
{
'received_suspected': received_suspected,
'is_oisubmit': is_oisubmit,
'comments': comments,
},
)
SubmissionAdmin.mix_in(OISubmitSubmissionAdminMixin)