Add old volunteer link to UI
This commit is contained in:
parent
89b74e8ef8
commit
c9f8fbe098
5 changed files with 397 additions and 145 deletions
|
@ -1,34 +1,67 @@
|
|||
from operator import attrgetter
|
||||
|
||||
from django.contrib import admin
|
||||
from django.utils.html import format_html
|
||||
from django.urls import reverse
|
||||
from django.utils.translation import gettext, gettext_lazy as _, ungettext
|
||||
from django.forms import ModelForm
|
||||
|
||||
from judge.models import VolunteerProblemVote
|
||||
from judge.widgets import AdminSelect2MultipleWidget
|
||||
|
||||
|
||||
class VolunteerProblemVoteForm(ModelForm):
|
||||
class Meta:
|
||||
widgets = {
|
||||
"types": AdminSelect2MultipleWidget,
|
||||
}
|
||||
|
||||
|
||||
class VolunteerProblemVoteAdmin(admin.ModelAdmin):
|
||||
form = VolunteerProblemVoteForm
|
||||
fields = (
|
||||
"voter",
|
||||
"problem",
|
||||
"time",
|
||||
"thinking_points",
|
||||
"knowledge_points",
|
||||
"feedback",
|
||||
)
|
||||
readonly_fields = ("time", "problem", "voter")
|
||||
list_display = (
|
||||
"voter",
|
||||
"problem_link",
|
||||
"time",
|
||||
"thinking_points",
|
||||
"knowledge_points",
|
||||
"types",
|
||||
"feedback",
|
||||
)
|
||||
readonly_fields = ("time", "problem_link", "voter")
|
||||
list_display = (
|
||||
"voter",
|
||||
"problem_link",
|
||||
"thinking_points",
|
||||
"knowledge_points",
|
||||
"show_types",
|
||||
"feedback",
|
||||
)
|
||||
search_fields = (
|
||||
"voter__user__username",
|
||||
"problem__code",
|
||||
"problem__name",
|
||||
)
|
||||
date_hierarchy = "time"
|
||||
|
||||
def problem_link(self, obj):
|
||||
url = reverse("admin:judge_problem_change", args=(obj.problem.id,))
|
||||
return format_html(f"<a href='{url}'>{obj.problem.code}</a>")
|
||||
if self.request.user.is_superuser:
|
||||
url = reverse("admin:judge_problem_change", args=(obj.problem.id,))
|
||||
else:
|
||||
url = reverse("problem_detail", args=(obj.problem.code,))
|
||||
return format_html(f"<a href='{url}'>{obj.problem}</a>")
|
||||
|
||||
problem_link.short_description = _("Problem")
|
||||
problem_link.admin_order_field = "problem__code"
|
||||
|
||||
def show_types(self, obj):
|
||||
return ", ".join(map(attrgetter("name"), obj.types.all()))
|
||||
|
||||
show_types.short_description = _("Types")
|
||||
|
||||
def get_queryset(self, request):
|
||||
self.request = request
|
||||
if request.user.is_superuser:
|
||||
return super().get_queryset(request)
|
||||
queryset = VolunteerProblemVote.objects.prefetch_related("voter")
|
||||
return queryset.filter(voter=request.profile).distinct()
|
||||
|
|
|
@ -41,7 +41,7 @@ class InternalProblem(ListView):
|
|||
context["title"] = self.title
|
||||
context["page_prefix"] = self.request.path + "?page="
|
||||
context["first_page_href"] = self.request.path
|
||||
|
||||
|
||||
return context
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue