super(ScoresRevealProgrammingProblemAdminMixin, self) \ .__init__(*args, **kwargs) self.inlines = self.inlines + [ScoresRevealConfigInline] class ScoresRevealSubmissionAdminMixin(object): def __init__(self, *args, **kwargs): super(ScoresRevealSubmissionAdminMixin, self).__init__(*args, **kwargs) def get_list_display(self, request): return super(ScoresRevealSubmissionAdminMixin, self) \ .get_list_display(request) + ['reveal_display'] def get_list_filter(self, request): return super(ScoresRevealSubmissionAdminMixin, self) \ .get_list_filter(request) + [RevealedFilter] def reveal_display(self, instance): return is_revealed(instance) reveal_display.short_description = _("Revealed") reveal_display.admin_order_field = 'revealed' reveal_display.boolean = True def get_list_select_related(self): return super(ScoresRevealSubmissionAdminMixin, self). \ get_list_select_related() + ['revealed'] SubmissionAdmin.mix_in(ScoresRevealSubmissionAdminMixin)
class RegionListFilter(SimpleListFilter): title = _("region") parameter_name = 'region' def lookups(self, request, model_admin): regions = Region.objects.filter(contest=request.contest) return [(x, x.name) for x in regions] def queryset(self, request, queryset): name = self.value() if name: kwargs = { 'user__participant__contest': request.contest, 'user__participant__oi_oionsiteregistration__' 'region__short_name': name } return queryset.filter(**kwargs) else: return queryset class OIOnsiteSubmissionAdminMixin(object): def __init__(self, *args, **kwargs): super(OIOnsiteSubmissionAdminMixin, self).__init__(*args, **kwargs) self.list_filter = self.list_filter + [RegionListFilter] SubmissionAdmin.mix_in(OIOnsiteSubmissionAdminMixin)
self.rejudge_model_solutions_view, name='contests_probleminstance_models_rejudge'), ) return extra_urls + urls def inline_actions(self, instance): actions = super(ProgrammingProblemInstanceAdminMixin, self).inline_actions(instance) if ModelSolution.objects.filter(problem_id=instance.problem_id): models_view = reverse('oioioiadmin:contests_probleminstance_models', args=(instance.id,)) actions.append((models_view, _("Model solutions"))) return actions ProblemInstanceAdmin.mix_in(ProgrammingProblemInstanceAdminMixin) class ModelSubmissionAdminMixin(object): def user_full_name(self, instance): if not instance.user: instance = instance.programsubmission if instance: instance = instance.modelprogramsubmission if instance: return '(%s)' % (conditional_escape(force_unicode( instance.model_solution.name)),) return super(ModelSubmissionAdminMixin, self).user_full_name(instance) user_full_name.short_description = SubmissionAdmin.user_full_name.short_description user_full_name.admin_order_field = SubmissionAdmin.user_full_name.admin_order_field SubmissionAdmin.mix_in(ModelSubmissionAdminMixin)
.get_list_display(request) + ['received_suspected'] def get_list_filter(self, request): return super(OISubmitSubmissionAdminMixin, self)\ .get_list_filter(request) + \ ['oisubmitextradata__received_suspected'] 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(six.text_type, comments)) return render_to_string( 'received-suspected.html', { 'received_suspected': received_suspected, 'is_oisubmit': is_oisubmit, 'comments': comments }) received_suspected.allow_tags = True received_suspected.short_description = _("Received suspected") def get_custom_list_select_related(self): return super(OISubmitSubmissionAdminMixin, self) \ .get_custom_list_select_related() + ['oisubmitextradata'] SubmissionAdmin.mix_in(OISubmitSubmissionAdminMixin)
force_unicode(instance.model_solution.name)), ) return super(ModelSubmissionAdminMixin, self).user_full_name(instance) user_full_name.short_description = \ SubmissionAdmin.user_full_name.short_description user_full_name.admin_order_field = \ SubmissionAdmin.user_full_name.admin_order_field def get_custom_list_select_related(self): return super(ModelSubmissionAdminMixin, self) \ .get_custom_list_select_related() \ + ['programsubmission', 'programsubmission__modelprogramsubmission'] SubmissionAdmin.mix_in(ModelSubmissionAdminMixin) class ProgramSubmissionAdminMixin(object): """Adds submission diff action, language display and language filter to an admin panel. """ def __init__(self, *args, **kwargs): super(ProgramSubmissionAdminMixin, self).__init__(*args, **kwargs) self.actions += ['submission_diff_action'] def get_list_display(self, request): return super(ProgramSubmissionAdminMixin, self) \ .get_list_display(request) + ['language_display'] def get_list_filter(self, request):
.__init__(*args, **kwargs) self.inlines = self.inlines + [ScoresRevealConfigInline] class ScoresRevealSubmissionAdminMixin(object): """Adds reveal info and filter to an admin panel. """ def __init__(self, *args, **kwargs): super(ScoresRevealSubmissionAdminMixin, self).__init__(*args, **kwargs) def get_list_display(self, request): return super(ScoresRevealSubmissionAdminMixin, self) \ .get_list_display(request) + ['reveal_display'] def get_list_filter(self, request): return super(ScoresRevealSubmissionAdminMixin, self) \ .get_list_filter(request) + [RevealedFilter] def reveal_display(self, instance): return is_revealed(instance) reveal_display.short_description = _("Revealed") reveal_display.admin_order_field = 'revealed' reveal_display.boolean = True def get_custom_list_select_related(self): return super(ScoresRevealSubmissionAdminMixin, self). \ get_custom_list_select_related() + ['revealed'] SubmissionAdmin.mix_in(ScoresRevealSubmissionAdminMixin)
def __init__(self, *args, **kwargs): super(OISubmitSubmissionAdminMixin, self).__init__(*args, **kwargs) def get_list_display(self, request): return super(OISubmitSubmissionAdminMixin, self) \ .get_list_display(request) + ['received_suspected'] def get_list_filter(self, request): return super(OISubmitSubmissionAdminMixin, self)\ .get_list_filter(request) + \ ['oisubmitextradata__received_suspected'] 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(six.text_type, comments)) return render_to_string('received-suspected.html', {'received_suspected': received_suspected, 'is_oisubmit': is_oisubmit, 'comments': comments}) received_suspected.short_description = _("Received suspected") def get_custom_list_select_related(self): return super(OISubmitSubmissionAdminMixin, self) \ .get_custom_list_select_related() + ['oisubmitextradata'] SubmissionAdmin.mix_in(OISubmitSubmissionAdminMixin)
return queryset class OnsiteSubmissionAdminMixin(object): """Adds :class:`~oioioi.participants.admin.RegionListFilter` filter to an admin panel. """ def __init__(self, *args, **kwargs): super(OnsiteSubmissionAdminMixin, self).__init__(*args, **kwargs) def get_list_filter(self, request): return super(OnsiteSubmissionAdminMixin, self) \ .get_list_filter(request) + [RegionListFilter] SubmissionAdmin.mix_in(OnsiteSubmissionAdminMixin) class UserWithParticipantsAdminMixin(object): """Adds :class:`~oioioi.participants.models.Participant` to an admin panel. """ def __init__(self, *args, **kwargs): super(UserWithParticipantsAdminMixin, self).__init__(*args, **kwargs) self.inlines = self.inlines + [ParticipantInline] admin.OioioiUserAdmin.mix_in(UserWithParticipantsAdminMixin) class ParticipantsRoundTimeExtensionMixin(object): """Adds contest participants to an admin panel. """