some more admin improvements
This commit is contained in:
+1
-1
@@ -409,7 +409,7 @@ class Exam(ExamBase):
|
||||
related_name="anatomy_user_user_groups"
|
||||
)
|
||||
|
||||
exam_user_status = GenericRelation(ExamUserStatus)
|
||||
exam_user_status = GenericRelation(ExamUserStatus, related_query_name="anatomy_exams")
|
||||
|
||||
examcollection = models.ForeignKey(ExamCollection, blank=True, null=True, on_delete=models.SET_NULL, related_name="anatomy_exams")
|
||||
|
||||
|
||||
+1
-1
@@ -810,7 +810,7 @@ class CaseCollection(ExamOrCollectionGenericBase):
|
||||
help_text="If true allows users self complete and review cases in a self directed way.",
|
||||
)
|
||||
|
||||
exam_user_status = GenericRelation(ExamUserStatus)
|
||||
exam_user_status = GenericRelation(ExamUserStatus, related_query_name="atlas_exams")
|
||||
|
||||
feedback_once_collection_complete = models.BooleanField(default=True, help_text="If true feedback is only given once the collection is complete. If false feedback is given after each case.")
|
||||
|
||||
|
||||
+99
-10
@@ -1,11 +1,17 @@
|
||||
from longs.models import Exam
|
||||
from longs.models import Exam as LongExam
|
||||
from rapids.models import Exam as RapidExam
|
||||
from anatomy.models import Exam as AnatomyExam
|
||||
from physics.models import Exam as PhysicsExam
|
||||
from sbas.models import Exam as SbasExam
|
||||
from atlas.models import CaseCollection as AtlasExam
|
||||
|
||||
from django.contrib import admin
|
||||
|
||||
# Register your models here.
|
||||
from .models import (
|
||||
CidUserGroup,
|
||||
Examination,
|
||||
#Sign,
|
||||
# Sign,
|
||||
Modality,
|
||||
Plane,
|
||||
Contrast,
|
||||
@@ -18,15 +24,26 @@ from .models import (
|
||||
UserProfile,
|
||||
Supervisor,
|
||||
ExamCollection,
|
||||
Site
|
||||
Site,
|
||||
)
|
||||
|
||||
|
||||
def custom_title_filter_factory(filter_cls, title):
|
||||
class Wrapper(filter_cls):
|
||||
def __new__(cls, *args, **kwargs):
|
||||
instance = filter_cls(*args, **kwargs)
|
||||
instance.title = title
|
||||
return instance
|
||||
|
||||
return Wrapper
|
||||
|
||||
|
||||
# from .models import Examination, Sign, Site, Condition
|
||||
|
||||
admin.site.register(Examination)
|
||||
#admin.site.register(Sign)
|
||||
# admin.site.register(Sign)
|
||||
admin.site.register(Site)
|
||||
#admin.site.register(Condition)
|
||||
# admin.site.register(Condition)
|
||||
admin.site.register(Plane)
|
||||
admin.site.register(Contrast)
|
||||
admin.site.register(QuestionNote)
|
||||
@@ -39,22 +56,94 @@ admin.site.register(Supervisor)
|
||||
admin.site.register(Modality)
|
||||
admin.site.register(ExamCollection)
|
||||
|
||||
|
||||
class ExamListFilter(admin.SimpleListFilter):
|
||||
#title = "Long Exams"
|
||||
#parameter_name = "exam"
|
||||
#exam_model = None
|
||||
|
||||
def __init__(self, request, params, model, model_admin):
|
||||
self.parameter_name = self.related_field_name
|
||||
super().__init__(request, params, model, model_admin)
|
||||
|
||||
def lookups(self, request, model_admin):
|
||||
return [(exam.id, exam.name) for exam in self.exam_model.objects.all()]
|
||||
|
||||
def queryset(self, request, queryset):
|
||||
if self.value():
|
||||
#return queryset.filter(longs_exams__id=self.value())
|
||||
kwargs = {f"{self.related_field_name}__id": self.value()}
|
||||
return queryset.filter(**kwargs)
|
||||
return queryset
|
||||
|
||||
class LongExamListFilter(ExamListFilter):
|
||||
title = "Long Exams"
|
||||
related_field_name = "longs_exams"
|
||||
exam_model = LongExam
|
||||
|
||||
class RapidExamListFilter(ExamListFilter):
|
||||
title = "Rapid Exams"
|
||||
related_field_name = "rapids_exams"
|
||||
exam_model = RapidExam
|
||||
|
||||
class AnatomyExamListFilter(ExamListFilter):
|
||||
title = "Anatomy Exams"
|
||||
related_field_name = "anatomy_exams"
|
||||
exam_model = AnatomyExam
|
||||
|
||||
class PhysicsExamListFilter(ExamListFilter):
|
||||
title = "Physics Exams"
|
||||
related_field_name = "physics_exams"
|
||||
exam_model = PhysicsExam
|
||||
|
||||
class SbasExamListFilter(ExamListFilter):
|
||||
title = "Sbas Exams"
|
||||
related_field_name = "sbas_exams"
|
||||
exam_model = SbasExam
|
||||
|
||||
class AtlasExamListFilter(ExamListFilter):
|
||||
title = "Atlas Exams"
|
||||
related_field_name = "atlas_exams"
|
||||
exam_model = AtlasExam
|
||||
|
||||
class CidUserExamAdmin(admin.ModelAdmin):
|
||||
list_filter = ('cid_user', 'user_user', 'completed')
|
||||
list_filter = ("cid_user", "user_user", "completed")
|
||||
|
||||
def get_queryset(self, request):
|
||||
qs = super().get_queryset(request).prefetch_related('cid_user', 'user_user', 'exam')
|
||||
qs = (
|
||||
super()
|
||||
.get_queryset(request)
|
||||
.prefetch_related("cid_user", "user_user", "exam")
|
||||
)
|
||||
return qs
|
||||
|
||||
|
||||
|
||||
admin.site.register(CidUserExam, CidUserExamAdmin)
|
||||
|
||||
|
||||
class ExamUserStatusAdmin(admin.ModelAdmin):
|
||||
|
||||
list_filter = ('status', 'cid_user_exam__user_user', 'cid_user_exam__cid_user')
|
||||
list_filter = (
|
||||
"status",
|
||||
"cid_user_exam__user_user",
|
||||
"cid_user_exam__cid_user",
|
||||
LongExamListFilter,
|
||||
RapidExamListFilter,
|
||||
AnatomyExamListFilter,
|
||||
PhysicsExamListFilter,
|
||||
SbasExamListFilter,
|
||||
AtlasExamListFilter,
|
||||
|
||||
)
|
||||
|
||||
exclude = ("anatomy_exams", "longs_exams", "rapids_exams", "physics_exams", "sbas_exams", "atlas_exams")
|
||||
|
||||
readonly_fields = ("cid_user_exam",)
|
||||
|
||||
def get_queryset(self, request):
|
||||
qs = super().get_queryset(request).prefetch_related('cid_user_exam', 'exam')
|
||||
qs = super().get_queryset(request).prefetch_related("cid_user_exam", "exam")
|
||||
return qs
|
||||
|
||||
admin.site.register(ExamUserStatus, ExamUserStatusAdmin)
|
||||
|
||||
admin.site.register(ExamUserStatus, ExamUserStatusAdmin)
|
||||
|
||||
@@ -871,7 +871,6 @@ class ExamBase(ExamOrCollectionGenericBase):
|
||||
|
||||
def __str__(self):
|
||||
if self.start_date and self.start_date is not None:
|
||||
print(f"Start date: {self.start_date:%d %B %Y}")
|
||||
return f"{self.name} ({self.start_date:%d %B %Y})"
|
||||
else:
|
||||
return self.name
|
||||
|
||||
+1
-1
@@ -472,7 +472,7 @@ class Exam(ExamBase):
|
||||
related_name="longs_user_user_groups",
|
||||
)
|
||||
|
||||
exam_user_status = GenericRelation(ExamUserStatus)
|
||||
exam_user_status = GenericRelation(ExamUserStatus, related_query_name="longs_exams")
|
||||
|
||||
examcollection = models.ForeignKey(ExamCollection, blank=True, null=True, on_delete=models.SET_NULL, related_name="longs_exams")
|
||||
|
||||
|
||||
+1
-1
@@ -190,7 +190,7 @@ class Exam(ExamBase):
|
||||
related_name="physics_user_user_groups"
|
||||
)
|
||||
|
||||
exam_user_status = GenericRelation(ExamUserStatus)
|
||||
exam_user_status = GenericRelation(ExamUserStatus, related_query_name="physics_exams")
|
||||
|
||||
examcollection = models.ForeignKey(ExamCollection, blank=True, null=True, on_delete=models.SET_NULL, related_name="physics_exams")
|
||||
|
||||
|
||||
+1
-1
@@ -651,7 +651,7 @@ class Exam(ExamBase):
|
||||
related_name="rapid_user_user_groups",
|
||||
)
|
||||
|
||||
exam_user_status = GenericRelation(ExamUserStatus)
|
||||
exam_user_status = GenericRelation(ExamUserStatus, related_query_name="rapids_exams")
|
||||
|
||||
examcollection = models.ForeignKey(ExamCollection, blank=True, null=True, on_delete=models.SET_NULL, related_name="rapids_exams")
|
||||
|
||||
|
||||
+1
-1
@@ -206,7 +206,7 @@ class Exam(ExamBase):
|
||||
related_name="sba_user_user_groups"
|
||||
)
|
||||
|
||||
exam_user_status = GenericRelation(ExamUserStatus)
|
||||
exam_user_status = GenericRelation(ExamUserStatus, related_query_name="sba_exams")
|
||||
|
||||
examcollection = models.ForeignKey(ExamCollection, blank=True, null=True, on_delete=models.SET_NULL, related_name="sbas_exams")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user