.
This commit is contained in:
@@ -64,6 +64,7 @@ urlpatterns = [
|
||||
path("cid/results/<int:cid>/", views.cid_results, name="cid_results"),
|
||||
path("cid/<int:pk>/<str:passcode>", views.cid_scores, name="cid_scores"),
|
||||
path("cid/<int:cid>/", views.cid_scores_admin, name="cid_scores_admin"),
|
||||
path("user/scores", views.user_scores, name="user_scores"),
|
||||
path("cid/", views.cid_selector, name="cid_selector"),
|
||||
# Global url that registers RTS compatible exams
|
||||
path("exam/json/", views.active_exams, name="active_exams"),
|
||||
|
||||
+79
-2
@@ -1,3 +1,4 @@
|
||||
import secrets
|
||||
from atlas.models import CaseCollection, CidReportAnswer
|
||||
from generic.decorators import user_is_cid_user_manager
|
||||
from generic.views import CidManagerRequiredMixin, get_question_and_content_type
|
||||
@@ -116,6 +117,74 @@ def cid_results(request, cid):
|
||||
},
|
||||
)
|
||||
|
||||
@login_required
|
||||
def user_scores(request):
|
||||
# exam = get_object_or_404(Exam, pk=pk)
|
||||
|
||||
#cid = pk
|
||||
|
||||
#cid_user = CidUser.objects.filter(cid=cid).first()
|
||||
#print(cid_user)
|
||||
#if not cid_user or cid_user.passcode != passcode:
|
||||
# raise Http404("CID / Passcode combination not found")
|
||||
#print(cid_user.passcode)
|
||||
|
||||
# questions = exam.exam_questions.all()
|
||||
EXAM_ANSWER_MAP = {
|
||||
"physics": (PhysicsCidUserAnswer, PhysicsExam),
|
||||
"anatomy": (AnatomyCidUserAnswer, AnatomyExam),
|
||||
"rapids": (RapidsCidUserAnswer, RapidsExam),
|
||||
"longs": (LongsCidUserAnswer, LongsExam),
|
||||
"sbas": (SbasCidUserAnswer, SbasExam),
|
||||
}
|
||||
kwargs = {"exam_mode": True, "archive": False}
|
||||
|
||||
exams = []
|
||||
for exam_type in EXAM_ANSWER_MAP:
|
||||
CidUserAnswer, Exam = EXAM_ANSWER_MAP[exam_type]
|
||||
exam_answers = CidUserAnswer.objects.filter(user=request.user)
|
||||
exam_ids = exam_answers.values_list("exam").distinct()
|
||||
exams_to_add = Exam.objects.filter(id__in=exam_ids, **kwargs)
|
||||
if exams_to_add:
|
||||
exams.append((exam_type, exams_to_add))
|
||||
|
||||
#case_collections = request.user.casecollection_exams.all()
|
||||
|
||||
|
||||
USER_EXAM_TYPES = (
|
||||
("Physics", "user_physics_exams"),
|
||||
("Rapids", "user_rapid_exams"),
|
||||
("SBAs", "user_sba_exams"),
|
||||
("Anatomy", "user_anatomy_exams"),
|
||||
("Longs", "user_longs_exams"),
|
||||
#("CaseCollection", "user_casecollection_exams"),
|
||||
)
|
||||
available_exams = []
|
||||
|
||||
for n, t in USER_EXAM_TYPES:
|
||||
exam_rel = getattr(request.user, t)
|
||||
if exam_rel.exists():
|
||||
temp_exams = exam_rel.filter(exam_mode=True, archive=False).order_by("name")
|
||||
available_exams.append((n, temp_exams))
|
||||
|
||||
#available_exams = request.user.get_cid_exams()
|
||||
|
||||
return render(
|
||||
request,
|
||||
"user_scores.html",
|
||||
{
|
||||
# "physics_exams": physics_exams,
|
||||
# "anatomy_exams": anatomy_exams,
|
||||
# "rapid_exams": rapid_exams,
|
||||
# "longs_exams": longs_exams,
|
||||
# "sba_exams": sba_exams,
|
||||
"all_exams": exams,
|
||||
#"passcode": passcode,
|
||||
"cid_user": request.user,
|
||||
"available_exams": available_exams,
|
||||
"case_collections": [],#case_collections,
|
||||
},
|
||||
)
|
||||
|
||||
def cid_scores(request, pk, passcode):
|
||||
# exam = get_object_or_404(Exam, pk=pk)
|
||||
@@ -459,8 +528,11 @@ class UpdateUserView(CidManagerRequiredMixin, UpdateView):
|
||||
template_name = "user_update.html"
|
||||
slug_field = "username"
|
||||
slug_url_kwarg = "slug"
|
||||
success_url = reverse_lazy("profile")
|
||||
|
||||
def get_success_url(self):
|
||||
view_name = 'account_profile'
|
||||
# No need for reverse_lazy here, because it's called inside the method
|
||||
return reverse(view_name, kwargs={'slug': self.object.username})
|
||||
|
||||
class UpdateUserProfileView(CidManagerRequiredMixin, UpdateView):
|
||||
model = UserProfile
|
||||
@@ -474,7 +546,11 @@ class UpdateUserProfileView(CidManagerRequiredMixin, UpdateView):
|
||||
template_name = "user_update.html"
|
||||
slug_field = "user__username"
|
||||
slug_url_kwarg = "slug"
|
||||
success_url = reverse_lazy("profile")
|
||||
|
||||
def get_success_url(self):
|
||||
view_name = 'account_profile'
|
||||
# No need for reverse_lazy here, because it's called inside the method
|
||||
return reverse(view_name, kwargs={'slug': self.object.username})
|
||||
|
||||
|
||||
# class UpdateUser(TemplateView):
|
||||
@@ -534,6 +610,7 @@ def accounts_bulk_create(request):
|
||||
"first_name": user["first_name"],
|
||||
"last_name": user["last_name"],
|
||||
"email": user["email"],
|
||||
"password": secrets.token_hex(nbytes=16)
|
||||
}
|
||||
new_user = User.objects.create_user(**user_dict)
|
||||
except Exception as error:
|
||||
|
||||
Reference in New Issue
Block a user