You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

105 lines
3.0 KiB

<<<<<<< HEAD
from ajaxdatatable.admin import AjaxDatatable
from django.contrib import admin
from django.db.models import F, Q
from django.contrib.admin import SimpleListFilter
from django.utils.translation import gettext_lazy as _
from apps.quiz.models import QuizParticipant, ParticipantAnswer
from apps.account.models import User
import datetime
class ParticipantAnswerInline(admin.StackedInline):
model = ParticipantAnswer
readonly_fields = (
'_correct_answer', 'question', 'at_time', 'answer_timing',
)
def _correct_answer(self, obj):
=======
from django.contrib import admin
from django.db.models import F
from django.contrib.admin import SimpleListFilter
from django.utils.translation import gettext_lazy as _
from unfold.admin import ModelAdmin, StackedInline
from unfold.decorators import display
from apps.quiz.models import QuizParticipant, ParticipantAnswer
from apps.account.models import User
from utils.admin import project_admin_site
class ParticipantAnswerInline(StackedInline):
model = ParticipantAnswer
readonly_fields = (
'correct_answer_display', 'question', 'at_time', 'answer_timing',
)
@display(description="Correct Answer")
def correct_answer_display(self, obj):
>>>>>>> develop
return obj.correct_answer
def has_add_permission(self, request, obj):
return False
def has_delete_permission(self, request, obj=None):
return False
def get_queryset(self, request):
return super().get_queryset(request).annotate(correct_answer=F('question__correct_answer'))
<<<<<<< HEAD
=======
>>>>>>> develop
class UserEmailFilter(SimpleListFilter):
title = _('User Email')
parameter_name = 'user_email'
def lookups(self, request, model_admin):
users = User.objects.all()
return [(user.email, user.email) for user in users]
def queryset(self, request, queryset):
if self.value():
email = self.value().replace('%40', '@')
return queryset.filter(user__email=email)
return queryset
<<<<<<< HEAD
@admin.register(QuizParticipant)
class ParticipantAdmin(AjaxDatatable):
inlines = [ParticipantAnswerInline]
search_fields = ['user__username', 'user__fullname']
list_display = ['quiz', 'user', 'started_at', 'ended_at', 'total_timing', 'question_score', 'timing_score',
'total_score']
latest_by = 'started_at'
list_filter = ['started_at', 'ended_at', 'quiz__status', UserEmailFilter]
=======
class ParticipantAdmin(ModelAdmin):
inlines = [ParticipantAnswerInline]
search_fields = ['user__username', 'user__fullname']
list_display = [
'quiz', 'user', 'started_at', 'ended_at', 'total_timing',
'question_score', 'timing_score', 'total_score'
]
list_filter = ['started_at', 'ended_at', 'quiz__status', UserEmailFilter]
# Optional: Add these for better UI experience
date_hierarchy = 'started_at'
ordering = ['-started_at']
project_admin_site.register(QuizParticipant, ParticipantAdmin)
>>>>>>> develop