Skip to content

Commit b6cec3c

Browse files
authored
Export ora2 data to drf (#36556)
* feat: export ora2 data to DRF
1 parent 291c5c3 commit b6cec3c

File tree

2 files changed

+27
-13
lines changed

2 files changed

+27
-13
lines changed

lms/djangoapps/instructor/views/api.py

Lines changed: 26 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2710,22 +2710,36 @@ def list_financial_report_downloads(_request, course_id):
27102710
return JsonResponse(response_payload)
27112711

27122712

2713-
@transaction.non_atomic_requests
2714-
@require_POST
2715-
@ensure_csrf_cookie
2716-
@cache_control(no_cache=True, no_store=True, must_revalidate=True)
2717-
@require_course_permission(permissions.CAN_RESEARCH)
2718-
@common_exceptions_400
2719-
def export_ora2_data(request, course_id):
2713+
@method_decorator(transaction.non_atomic_requests, name='dispatch')
2714+
class ExportOra2DataView(DeveloperErrorViewMixin, APIView):
27202715
"""
27212716
Pushes a Celery task which will aggregate ora2 responses for a course into a .csv
27222717
"""
2723-
course_key = CourseKey.from_string(course_id)
2724-
report_type = _('ORA data')
2725-
task_api.submit_export_ora2_data(request, course_key)
2726-
success_status = SUCCESS_MESSAGE_TEMPLATE.format(report_type=report_type)
2718+
permission_classes = (IsAuthenticated, permissions.InstructorPermission)
2719+
permission_name = permissions.CAN_RESEARCH
27272720

2728-
return JsonResponse({"status": success_status})
2721+
@method_decorator(cache_control(no_cache=True, no_store=True, must_revalidate=True))
2722+
@method_decorator(ensure_csrf_cookie)
2723+
def post(self, request, course_id):
2724+
"""
2725+
Initiates a task to export Open Response Assessment (ORA) data for a course.
2726+
2727+
Args:
2728+
request: The HTTP request object
2729+
course_id: The ID of the course for which to export ORA data
2730+
2731+
Returns:
2732+
Response: A JSON response containing the status message indicating the task has been initiated
2733+
"""
2734+
course_key = CourseKey.from_string(course_id)
2735+
report_type = _('ORA data')
2736+
2737+
try:
2738+
task_api.submit_export_ora2_data(request, course_key)
2739+
success_status = SUCCESS_MESSAGE_TEMPLATE.format(report_type=report_type)
2740+
return Response({"status": success_status})
2741+
except (AlreadyRunningError, QueueConnectionError, AttributeError) as err:
2742+
return JsonResponse({"error": str(err)}, status=400)
27292743

27302744

27312745
@transaction.non_atomic_requests

lms/djangoapps/instructor/views/api_urls.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@
6666

6767
# Reports..
6868
path('get_course_survey_results', api.GetCourseSurveyResults.as_view(), name='get_course_survey_results'),
69-
path('export_ora2_data', api.export_ora2_data, name='export_ora2_data'),
69+
path('export_ora2_data', api.ExportOra2DataView.as_view(), name='export_ora2_data'),
7070
path('export_ora2_summary', api.export_ora2_summary, name='export_ora2_summary'),
7171

7272
path('export_ora2_submission_files', api.export_ora2_submission_files,

0 commit comments

Comments
 (0)