Cloned DMOJ
This commit is contained in:
parent
f623974b58
commit
49dc9ff10c
513 changed files with 132349 additions and 39 deletions
52
judge/admin/taxon.py
Normal file
52
judge/admin/taxon.py
Normal file
|
@ -0,0 +1,52 @@
|
|||
from django.contrib import admin
|
||||
from django.forms import ModelForm, ModelMultipleChoiceField
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from judge.models import Problem
|
||||
from judge.widgets import AdminHeavySelect2MultipleWidget
|
||||
|
||||
|
||||
class ProblemGroupForm(ModelForm):
|
||||
problems = ModelMultipleChoiceField(
|
||||
label=_('Included problems'),
|
||||
queryset=Problem.objects.all(),
|
||||
required=False,
|
||||
help_text=_('These problems are included in this group of problems'),
|
||||
widget=AdminHeavySelect2MultipleWidget(data_view='problem_select2'))
|
||||
|
||||
|
||||
class ProblemGroupAdmin(admin.ModelAdmin):
|
||||
fields = ('name', 'full_name', 'problems')
|
||||
form = ProblemGroupForm
|
||||
|
||||
def save_model(self, request, obj, form, change):
|
||||
super(ProblemGroupAdmin, self).save_model(request, obj, form, change)
|
||||
obj.problem_set.set(form.cleaned_data['problems'])
|
||||
obj.save()
|
||||
|
||||
def get_form(self, request, obj=None, **kwargs):
|
||||
self.form.base_fields['problems'].initial = [o.pk for o in obj.problem_set.all()] if obj else []
|
||||
return super(ProblemGroupAdmin, self).get_form(request, obj, **kwargs)
|
||||
|
||||
|
||||
class ProblemTypeForm(ModelForm):
|
||||
problems = ModelMultipleChoiceField(
|
||||
label=_('Included problems'),
|
||||
queryset=Problem.objects.all(),
|
||||
required=False,
|
||||
help_text=_('These problems are included in this type of problems'),
|
||||
widget=AdminHeavySelect2MultipleWidget(data_view='problem_select2'))
|
||||
|
||||
|
||||
class ProblemTypeAdmin(admin.ModelAdmin):
|
||||
fields = ('name', 'full_name', 'problems')
|
||||
form = ProblemTypeForm
|
||||
|
||||
def save_model(self, request, obj, form, change):
|
||||
super(ProblemTypeAdmin, self).save_model(request, obj, form, change)
|
||||
obj.problem_set.set(form.cleaned_data['problems'])
|
||||
obj.save()
|
||||
|
||||
def get_form(self, request, obj=None, **kwargs):
|
||||
self.form.base_fields['problems'].initial = [o.pk for o in obj.problem_set.all()] if obj else []
|
||||
return super(ProblemTypeAdmin, self).get_form(request, obj, **kwargs)
|
Loading…
Add table
Add a link
Reference in a new issue