6767
6868
6969@method_decorator (ensure_csrf_cookie , name = "get" )
70- @method_decorator (accessible_for (roles = {"admin" , "editor" }), name = "post" )
71- @method_decorator (accessible_for (roles = {"admin" , "editor" , "viewer" }), name = "get" )
70+ @method_decorator (accessible_for (roles = {"admin" , "editor" , "instructor" }), name = "post" )
71+ @method_decorator (
72+ accessible_for (roles = {"admin" , "editor" , "instructor" , "viewer" }), name = "get"
73+ )
7274class CourseView (View ):
7375 def post (self , request , * args , ** kwargs ) -> JsonResponse : # type: ignore[no-untyped-def]
7476 payload = json .loads (request .body )
@@ -114,8 +116,10 @@ def get(self, request, *args, **kwargs) -> JsonResponse: # type: ignore[no-unty
114116 return JsonResponse ({"courses" : response_list }, status = 200 )
115117
116118
117- @method_decorator (accessible_for (roles = {"admin" , "editor" }), name = "post" )
118- @method_decorator (accessible_for (roles = {"admin" , "editor" , "viewer" }), name = "get" )
119+ @method_decorator (accessible_for (roles = {"admin" , "editor" , "instructor" }), name = "post" )
120+ @method_decorator (
121+ accessible_for (roles = {"admin" , "editor" , "viewer" , "instructor" }), name = "get"
122+ )
119123class CourseContentView (View ):
120124 def post (self , request , * args , ** kwargs ) -> JsonResponse : # type: ignore[no-untyped-def]
121125 payload = json .loads (request .body )
@@ -161,7 +165,7 @@ def get(self, request, *args, **kwargs) -> JsonResponse: # type: ignore[no-unty
161165 return JsonResponse ({"error" : "Course not found" }, status = 404 )
162166
163167
164- @method_decorator (accessible_for (roles = {"admin" , "editor" }), name = "post" )
168+ @method_decorator (accessible_for (roles = {"admin" , "editor" , "instructor" }), name = "post" )
165169class ReorderCourseContentView (View ):
166170 def post (self , request , * args , ** kwargs ) -> JsonResponse : # type: ignore[no-untyped-def]
167171 payload = json .loads (request .body )
@@ -207,9 +211,13 @@ def post(self, request, *args, **kwargs) -> JsonResponse: # type: ignore[no-unt
207211 return JsonResponse ({"error" : str (e )}, status = 409 )
208212
209213
210- @method_decorator (accessible_for (roles = {"admin" , "editor" , "viewer" }), name = "get" )
211- @method_decorator (accessible_for (roles = {"admin" , "editor" }), name = "delete" )
212- @method_decorator (accessible_for (roles = {"admin" , "editor" }), name = "post" )
214+ @method_decorator (
215+ accessible_for (roles = {"admin" , "editor" , "instructor" , "viewer" }), name = "get"
216+ )
217+ @method_decorator (
218+ accessible_for (roles = {"admin" , "editor" , "instructor" }), name = "delete"
219+ )
220+ @method_decorator (accessible_for (roles = {"admin" , "editor" , "instructor" }), name = "post" )
213221class SingleCourseContentView (View ):
214222 def get (self , request , * args , ** kwargs ) -> JsonResponse : # type: ignore[no-untyped-def]
215223 try :
@@ -344,9 +352,13 @@ def _update_course_content_atomic(
344352 )
345353
346354
347- @method_decorator (accessible_for (roles = {"admin" , "editor" }), name = "post" )
348- @method_decorator (accessible_for (roles = {"admin" , "editor" }), name = "delete" )
349- @method_decorator (accessible_for (roles = {"admin" , "editor" , "viewer" }), name = "get" )
355+ @method_decorator (accessible_for (roles = {"admin" , "editor" , "instructor" }), name = "post" )
356+ @method_decorator (
357+ accessible_for (roles = {"admin" , "editor" , "instructor" }), name = "delete"
358+ )
359+ @method_decorator (
360+ accessible_for (roles = {"admin" , "editor" , "instructor" , "viewer" }), name = "get"
361+ )
350362class SingleCourseView (View ):
351363 def get (self , request , * args , ** kwargs ) -> JsonResponse : # type: ignore[no-untyped-def]
352364 try :
@@ -496,8 +508,10 @@ def post(self, request, *args, **kwargs): # type: ignore[no-untyped-def]
496508 return JsonResponse ({"error" : "Failed to enroll users" }, status = 500 )
497509
498510
499- @method_decorator (accessible_for (roles = {"admin" , "editor" }), name = "post" )
500- @method_decorator (accessible_for (roles = {"admin" , "editor" , "viewer" }), name = "get" )
511+ @method_decorator (accessible_for (roles = {"admin" , "editor" , "instructor" }), name = "post" )
512+ @method_decorator (
513+ accessible_for (roles = {"admin" , "editor" , "instructor" , "viewer" }), name = "get"
514+ )
501515class ImapConnectionView (View ):
502516 def get (self , request , * args , ** kwargs ) -> JsonResponse : # type: ignore[no-untyped-def]
503517 response_list = []
@@ -661,7 +675,9 @@ def post(self, request, *args, **kwargs) -> JsonResponse: # type: ignore[no-unt
661675
662676@method_decorator (is_platform_admin (), name = "post" )
663677@method_decorator (is_platform_admin (), name = "delete" )
664- @method_decorator (accessible_for (roles = {"admin" , "editor" , "viewer" }), name = "get" )
678+ @method_decorator (
679+ accessible_for (roles = {"admin" , "editor" , "instructor" , "viewer" }), name = "get"
680+ )
665681class SingleOrganizationView (View ):
666682 def post (self , request , * args , ** kwargs ) -> JsonResponse : # type: ignore[no-untyped-def]
667683 try :
@@ -771,7 +787,7 @@ def post(self, request, *args, **kwargs) -> JsonResponse: # type: ignore[no-unt
771787 return JsonResponse ({"error" : str (e )}, status = 409 )
772788
773789
774- @method_decorator (accessible_for (roles = {"admin" , "editor" }), name = "post" )
790+ @method_decorator (accessible_for (roles = {"admin" , "editor" , "instructor" }), name = "post" )
775791class SendLessonToPlatformUser (View ):
776792 def post (self , request , * args , ** kwargs ) -> JsonResponse : # type: ignore[no-untyped-def]
777793 if not request .user .email :
@@ -802,8 +818,10 @@ def post(self, request, *args, **kwargs) -> JsonResponse: # type: ignore[no-unt
802818 )
803819
804820
805- @method_decorator (accessible_for (roles = {"admin" , "editor" }), name = "post" )
806- @method_decorator (accessible_for (roles = {"admin" , "editor" }), name = "delete" )
821+ @method_decorator (accessible_for (roles = {"admin" , "editor" , "instructor" }), name = "post" )
822+ @method_decorator (
823+ accessible_for (roles = {"admin" , "editor" , "instructor" }), name = "delete"
824+ )
807825class FileView (View ):
808826 def post (self , request , * args , ** kwargs ) -> JsonResponse : # type: ignore[no-untyped-def]
809827 uploaded_file = request .FILES .get ("file" )
@@ -891,7 +909,7 @@ def post(self, request, *args, **kwargs) -> JsonResponse: # type: ignore[no-unt
891909 return JsonResponse (response_serializer .model_dump (), status = 200 )
892910
893911
894- @method_decorator (accessible_for (roles = {"admin" , "editor" , "viewer " }), name = "get" )
912+ @method_decorator (accessible_for (roles = {"admin" , "instructor " }), name = "get" )
895913class LearnersView (PaginatedApiMixin , View ):
896914 def get_query_set (self , request : Any ) -> models .QuerySet :
897915 organization_id = self .kwargs ["organization_id" ]
@@ -913,7 +931,9 @@ def get_item_serializer_class(self) -> Any:
913931 return serializers .LearnerResponse
914932
915933
916- @method_decorator (accessible_for (roles = {"admin" , "editor" , "viewer" }), name = "get" )
934+ @method_decorator (
935+ accessible_for (roles = {"admin" , "editor" , "viewer" , "instructor" }), name = "get"
936+ )
917937class SingleLearnerView (View ):
918938 def get (self , request , * args , ** kwargs ) -> JsonResponse : # type: ignore[no-untyped-def]
919939 try :
@@ -954,7 +974,7 @@ def get(self, request, *args, **kwargs) -> JsonResponse: # type: ignore[no-unty
954974 return JsonResponse ({"error" : "An internal error occurred." }, status = 500 )
955975
956976
957- @method_decorator (accessible_for (roles = {"admin" }), name = "post" )
977+ @method_decorator (accessible_for (roles = {"admin" , "instructor" }), name = "post" )
958978class EnrollmentsView (PaginatedApiMixin , View ):
959979 def post (self , request , * args , ** kwargs ) -> JsonResponse : # type: ignore[no-untyped-def]
960980 payload = json .loads (request .body )
@@ -998,7 +1018,9 @@ def post(self, request, *args, **kwargs) -> JsonResponse: # type: ignore[no-unt
9981018 return JsonResponse ({"error" : e .json ()}, status = 400 )
9991019
10001020
1001- @method_decorator (accessible_for (roles = {"admin" , "editor" , "viewer" }), name = "get" )
1021+ @method_decorator (
1022+ accessible_for (roles = {"admin" , "editor" , "instructor" , "viewer" }), name = "get"
1023+ )
10021024class EnrollmentView (View ):
10031025 def get (self , request , * args , ** kwargs ) -> JsonResponse : # type: ignore[no-untyped-def]
10041026 try :
@@ -1015,7 +1037,9 @@ def get(self, request, *args, **kwargs) -> JsonResponse: # type: ignore[no-unty
10151037 return JsonResponse ({"error" : e .json ()}, status = 400 )
10161038
10171039
1018- @method_decorator (accessible_for (roles = {"admin" , "editor" , "viewer" }), name = "get" )
1040+ @method_decorator (
1041+ accessible_for (roles = {"admin" , "editor" , "instructor" , "viewer" }), name = "get"
1042+ )
10191043class EnrollmentsStatisticsView (View ):
10201044 def get (self , request , * args , ** kwargs ) -> JsonResponse : # type: ignore[no-untyped-def]
10211045 course_id = kwargs ["course_id" ]
0 commit comments