from django.urls import path, include from generic.models import Examination, Supervisor from . import views from generic.views import ExamViews as GenericExamViews, GenericViewBase app_name = "generic" urlpatterns = [ path("examination/", views.ExaminationView.as_view(), name="examination_view"), path("examination/", views.examination_detail, name="examination_detail"), path( "examination//delete", views.ExaminationDelete.as_view(), name="examination_delete", ), path( "examination//update", views.ExaminationUpdate.as_view(), name="examination_update", ), path( "examination//merge", views.examination_merge, name="examination_merge" ), path("examination/create/", views.create_examination, name="create_examination"), path( "examination/ajax/get_examination_id", views.get_examination_id, name="get_examination_id", ), path( "generic_exam_json_edit", views.generic_exam_json_edit, name="generic_exam_json_edit", ), path( "generic_exam_htmx", views.generic_exam_htmx, name="generic_exam_htmx", ), path( "generic_exam_set_open_access", views.generic_exam_set_open_access, name="generic_exam_set_open_access", ), path("bulk_delete_questions/", views.bulk_delete_questions, name="bulk_delete_questions"), path( "examination-autocomplete", views.ExaminationAutocomplete.as_view( model=Examination, create_field="examination" ), name="examination-autocomplete", ), path( "supervisor-autocomplete", views.SupervisorAutocomplete.as_view(model=Supervisor), name="supervisor-autocomplete", ), path("user-search/", views.user_search, name="user_search"), path("user-search-widget/", views.user_search_widget, name="user_search_widget"), path("exam-search-widget/", views.exam_search_widget, name="exam_search_widget"), path("supervisor-search/", views.supervisor_search, name="supervisor_search"), path( "cids/manage//update", views.CidUserUpdate.as_view(), name="update_cid" ), path( "cids/manage//update/exams", views.CidUserExamUpdate.as_view(), name="update_cid_exams", ), path( "cids/manage//email_results", views.candidate_email_results, name="candidate_email_results", ), path( "cids/manage//email_details", views.candidate_email_details, name="candidate_email_details", ), path("cids/manage/", views.CidUserView.as_view(), name="manage_cids"), path("cids/manage/exams", views.CidUserExamView.as_view(), name="manage_cid_exams"), path("cids/group/", views.cid_group_view, name="cid_group_view"), path("cids/group/all", views.cid_group_view_all, name="cid_group_view_all"), path( "cids/group//", views.cid_group_view_detail, name="cid_group_detail", ), path( "cids/group//generate_preview", views.cid_group_generate_preview, name="cid_group_generate_preview", ), path( "cids/group//create_bulk", views.cid_group_create_bulk, name="cid_group_create_bulk", ), path("cids/group//email", views.group_email, name="group_email"), path( "cids/group//exams", views.CidGroupExamUpdate.as_view(), name="cid_group_exams", ), path( "cids/group//email_results", views.group_email_results, name="group_email_results", ), path( "cids/group//email_results/resend", views.group_email_results_resend, name="group_email_results_resend", ), path( "cids/group//email/resend", views.group_email_resend, name="group_email_resend", ), path( "cids/group//update", views.CidUserGroupUpdate.as_view(), name="cid_group_update", ), # HTMX partial to show a CidUserExam record for an exam (used from exam lists) path( "exam///cid//ciduserexam", views.cid_user_exam_partial, name="cid_user_exam_partial", ), path( "cids/ciduserexam//update", views.CidUserExamRecordUpdate.as_view(), name="update_cid_user_exam", ), path( "cids/group//delete", views.CidUserGroupDelete.as_view(), name="cid_group_delete", ), path( "cid/group//add", views.cid_group_add_candidates_to_exams, name="cid_group_add_candidates_to_exams", ), path( "cids/group/create", views.CidUserGroupCreate.as_view(), name="cid_group_create" ), path( "user/bulk_delete_supervisors/", views.users_bulk_delete_supervisors, name="users_bulk_delete_supervisors", ), path( "user/bulk_edit/", views.users_bulk_edit, name="users_bulk_edit", ), path( "user//not_trainee", views.user_not_trainee, name="user_not_trainee", ), path("user/group/", views.user_group_view, name="user_group_view"), path("user/group/all", views.user_group_view_all, name="user_group_view_all"), path( "user/group//", views.user_group_view_detail, name="user_group_detail", ), path( "user/group//add_by_email", views.user_group_add_by_email_user, name="user_group_add_by_email_user", ), path( "user/group//add", views.user_group_add_candidates_to_exams, name="user_group_add_candidates_to_exams", ), path( "user/group//", views.user_group_view_detail, name="user_group_detail", ), path( "user/group//exams", views.UserGroupExamUpdate.as_view(), name="user_group_exams", ), path( "user/group//update", views.UserUserGroupUpdate.as_view(), name="user_group_update", ), path( "user/group//delete", views.UserUserGroupDelete.as_view(), name="user_group_delete", ), path( "user/group//archive", views.user_group_toggle_archive, name="user_group_toggle_archive", ), path( "user/group/create", views.UserUserGroupCreate.as_view(), name="user_group_create", ), path( "user//toggle_group//", views.user_toggle_group, name="user_toggle_group", ), path("cids/create", views.manage_cid_users, name="manage_cid_users"), path("cids//details", views.cid_details, name="cid_details"), path("cids/create/email", views.create_cid_email, name="create_cid_email"), path("supervisor", views.SupervisorList.as_view(), name="supervisor"), path( "supervisor/request_account", views.supervisor_request_account, name="supervisor_request_account", ), path( "supervisor//overview", views.supervisor_overview, name="supervisor_overview", ), path( "supervisor//trainee//", views.supervisor_trainee, name="supervisor_trainee", ), path( "supervisor/", views.SupervisorDetail.as_view(), name="supervisor_detail", ), path( "supervisor//edit", views.SupervisorUpdate.as_view(), name="supervisor_edit", ), path( "supervisor/create", views.SupervisorCreate.as_view(), name="supervisor_create" ), path( "supervisor//delete", views.SupervisorDelete.as_view(), name="supervisor_delete", ), path( "examcollection/", views.ExamCollectionList.as_view(), name="examcollection_list", ), path( "examcollection//", views.ExamCollectionDetail.as_view(), name="examcollection_detail", ), path( "examcollection//edit", views.ExamCollectionEdit.as_view(), name="examcollection_edit", ), path( "examcollection/create", views.ExamCollectionCreate.as_view(), name="examcollection_create", ), path( "examcollection//clone", views.ExamCollectionClone.as_view(), name="examcollection_clone", ), path( "examcollection//delete", views.ExamCollectionDelete.as_view(), name="examcollection_delete", ), path("collection//add_author", views.exam_collection_add_author, name="exam_collection_add_author"), path("collection//bulk_add_groups", views.exam_collection_bulk_add_groups, name="exam_collection_bulk_add_groups"), path("collection//add_marker/", views.exam_collection_add_marker, name="exam_collection_add_marker"), path( "share_with_supervisor_toggle//", views.toggle_share_with_supervisor, name="toggle_share_with_supervisor", ), path( "cimar_case//refresh", views.cimar_case_refresh, name="cimar_case_refresh" ), ] def generic_view_urls(generic_views: GenericViewBase): urlpatterns = [ path( "user_answers/delete", generic_views.user_answer_delete_multiple, name="user_answer_delete_multiple", ), path("author//", generic_views.author_detail, name="author_detail"), path("author/", generic_views.author_list, name="author_list"), path( "question//", generic_views.question_detail, name="question_detail" ), path( "question//set_review", generic_views.question_set_review, name="question_set_review", ), path( "question//reviews", generic_views.question_reviews_list, name="question_reviews", ), path( "question/review/start", generic_views.question_review_start, name="question_review_start", ), path( "question/review/next", generic_views.question_review_next, name="question_review_next", ), path( "question/review/list", generic_views.question_review_list, name="question_review_list", ), path("question//thumbnail/fail", generic_views.question_thumbnail_fail, name="series_thumbnail_fail"), path("question//thumbnail", generic_views.question_thumbnail, name="series_thumbnail"), path( "question//user_answers", generic_views.question_user_answers, name="question_user_answers", ), path( "question//user_answers//str", generic_views.question_user_answers_by_compare, name="question_user_answers_by_compare", ), path( "exam//review", generic_views.question_review, name="question_review", ), path("help", generic_views.help, name="help"), ] return urlpatterns def generic_exam_urls(generic_exam_view: GenericExamViews): urlpatterns = [ path( "exam/bulk_update/", generic_exam_view.exam_bulk_update, name="exam_bulk_update", ), path( "exam/bulk_archive/", generic_exam_view.exam_bulk_archive, name="exam_bulk_archive", ), path( "exam/bulk_delete/", generic_exam_view.exam_bulk_delete, name="exam_bulk_delete", ), path("", generic_exam_view.index, name="index"), path("exam//", generic_exam_view.exam_overview, name="exam_overview"), path( "exam//mark", generic_exam_view.mark_overview, name="mark_overview" ), path( "exam//question//", generic_exam_view.exam_question_detail, name="exam_question_detail", ), path( "exam//review/start", generic_exam_view.exam_review_start, name="exam_review_start", ), path( "exam//review/", generic_exam_view.exam_review_question, name="exam_review_question", ), # path( # "exam//question//answer/", # generic_exam_view.exam_question_user_answer, # name="exam_question_user_answer", # ), path( "exam//question//answer//", generic_exam_view.exam_question_user_answer, name="exam_question_user_answer", ), path( "exam//user/", generic_exam_view.exam_user, name="exam_user", ), path( "exam//report/email", generic_exam_view.exam_report_email, name="exam_report_email", ), path( "exam//report/email_unsent", generic_exam_view.exam_report_email_unsent, name="exam_report_email_unsent", ), path( "exam//report/email/status", generic_exam_view.exam_report_email_status, name="exam_report_email_status", ), path( "exam//report/", generic_exam_view.exam_user_report, name="exam_user_report", ), path( "exam//report//email", generic_exam_view.exam_user_report_email, name="exam_user_report_email", ), path( "exam//json_edit", generic_exam_view.exam_json_edit, name="exam_json_edit", ), path( "exam//cid_bulk_edit", generic_exam_view.exam_cid_bulk_edit, name="exam_cid_bulk_edit", ), path( "exam//user_bulk_edit", generic_exam_view.exam_user_bulk_edit, name="exam_user_bulk_edit", ), path( "exam//scores", generic_exam_view.exam_scores_all, name="exam_scores_all", ), path( "exam//stats", generic_exam_view.exam_stats, name="exam_stats", ), path( "exam//scores/refresh", generic_exam_view.exam_scores_refresh, # cache_page(60 * 1)(exam_scores_all), name="exam_scores_refresh", ), path( "exam//scores///", generic_exam_view.exam_scores_cid_user, name="exam_scores_cid_user", ), path( "exam//scores//", generic_exam_view.exam_scores_cid_user_admin, name="exam_scores_cid_user_admin", ), path( "exam//scores/", generic_exam_view.exam_scores_user, name="exam_scores_user", ), path( "exam//scores//user", generic_exam_view.exam_scores_user_admin, name="exam_scores_user_admin", ), path( "exam//scores//user/supervisor", generic_exam_view.exam_scores_user_supervisor, name="exam_scores_user_supervisor", ), path( "exam//toggle_active", generic_exam_view.exam_toggle_active_htmx, name="exam_toggle_active", ), path( "exam//toggle_results_published", generic_exam_view.exam_toggle_results_published_htmx, name="exam_toggle_results_published", ), path( "exam//toggle_archived", generic_exam_view.exam_toggle_archived, name="exam_toggle_archived", ), path( "exam/submit", generic_exam_view.post_exam_answers, name="exam_answers_submit", ), path("exam/", generic_exam_view.exam_list, name="exam_list"), path("collection//", generic_exam_view.exam_list_collection, name="exam_list_collection"), path("exam/all", generic_exam_view.exam_list_all, name="exam_list_all"), path( "exam//order_questions", generic_exam_view.order_questions, name="order_questions", ), path("exam//cids", generic_exam_view.exam_cids, name="exam_cids"), path("exam//cids/cid_list", generic_exam_view.exam_cids_cid_list, name="exam_cids_cid_list"), path("exam//cids/user_list", generic_exam_view.exam_cids_user_list, name="exam_cids_user_list"), path("exam//cids/submitted_list", generic_exam_view.exam_cids_submitted_list, name="exam_cids_submitted_list"), # path("exam//groups", generic_exam_view.exam_groups_edit, name="exam_groups_edit"), path( "exam//reset_answers", generic_exam_view.exam_reset_answers, name="exam_reset_answers", ), path( "exam//cids/edit", generic_exam_view.exam_cids_edit, name="exam_cids_edit", ), path( "exam//users/edit", generic_exam_view.exam_users_edit, name="exam_users_edit", ), path("exam/json/", generic_exam_view.active_exams, name="active_exams"), path("exam/json/", generic_exam_view.exam_json, name="exam_json"), path( "exam/json///", generic_exam_view.exam_json_cid, name="exam_json_cid", ), path( "exam/json//unbased", generic_exam_view.exam_json_unbased, name="exam_json_unbased", ), path( "exam/json////unbased", generic_exam_view.exam_json_cid_unbased, name="exam_json_cid_unbased", ), # These are a little more ambiguous than ideal path( "exam/json//question/", generic_exam_view.exam_question_json, name="exam_question_json", ), path( "exam/json//question//unbased", generic_exam_view.exam_question_json_unbased, name="exam_question_json_unbased", ), path( "exam/json//question///", generic_exam_view.exam_question_json_cid, name="exam_question_json_cid", ), path( "exam/json//question////unbased", generic_exam_view.exam_question_json_unbased_cid, name="exam_question_json_unbased_cid", ), # path( # "exam/json//", # generic_exam_view.exam_question_json, # name="exam_question_json", # ), # path( # "exam/json///unbased", # generic_exam_view.exam_question_json_unbased, # name="exam_question_json_unbased", # ), # path( # "exam/json////", # generic_exam_view.exam_question_json_cid, # name="exam_question_json_cid", # ), # path( # "exam/json/////unbased", # generic_exam_view.exam_question_json_unbased_cid, # name="exam_question_json_unbased_cid", # ), path( "exam/json//recreate", generic_exam_view.exam_json_recreate, name="exam_json_recreate", ), path( "exam//user_status", generic_exam_view.exam_user_status, name="exam_user_status", ), path( "exam//user_status//cid", generic_exam_view.exam_user_status_cid, name="exam_user_status_cid", ), path( "exam//user_status//user", generic_exam_view.exam_user_status_user, name="exam_user_status_user", ), ] return urlpatterns