Export ora2 data to drf (#36556)

* feat: export ora2 data to DRF
This commit is contained in:
Talha Rizwan
2025-06-05 19:37:55 +05:00
committed by GitHub
parent 291c5c3a44
commit b6cec3c67e
2 changed files with 27 additions and 13 deletions

View File

@@ -2710,22 +2710,36 @@ def list_financial_report_downloads(_request, course_id):
return JsonResponse(response_payload)
@transaction.non_atomic_requests
@require_POST
@ensure_csrf_cookie
@cache_control(no_cache=True, no_store=True, must_revalidate=True)
@require_course_permission(permissions.CAN_RESEARCH)
@common_exceptions_400
def export_ora2_data(request, course_id):
@method_decorator(transaction.non_atomic_requests, name='dispatch')
class ExportOra2DataView(DeveloperErrorViewMixin, APIView):
"""
Pushes a Celery task which will aggregate ora2 responses for a course into a .csv
"""
course_key = CourseKey.from_string(course_id)
report_type = _('ORA data')
task_api.submit_export_ora2_data(request, course_key)
success_status = SUCCESS_MESSAGE_TEMPLATE.format(report_type=report_type)
permission_classes = (IsAuthenticated, permissions.InstructorPermission)
permission_name = permissions.CAN_RESEARCH
return JsonResponse({"status": success_status})
@method_decorator(cache_control(no_cache=True, no_store=True, must_revalidate=True))
@method_decorator(ensure_csrf_cookie)
def post(self, request, course_id):
"""
Initiates a task to export Open Response Assessment (ORA) data for a course.
Args:
request: The HTTP request object
course_id: The ID of the course for which to export ORA data
Returns:
Response: A JSON response containing the status message indicating the task has been initiated
"""
course_key = CourseKey.from_string(course_id)
report_type = _('ORA data')
try:
task_api.submit_export_ora2_data(request, course_key)
success_status = SUCCESS_MESSAGE_TEMPLATE.format(report_type=report_type)
return Response({"status": success_status})
except (AlreadyRunningError, QueueConnectionError, AttributeError) as err:
return JsonResponse({"error": str(err)}, status=400)
@transaction.non_atomic_requests

View File

@@ -66,7 +66,7 @@ urlpatterns = [
# Reports..
path('get_course_survey_results', api.GetCourseSurveyResults.as_view(), name='get_course_survey_results'),
path('export_ora2_data', api.export_ora2_data, name='export_ora2_data'),
path('export_ora2_data', api.ExportOra2DataView.as_view(), name='export_ora2_data'),
path('export_ora2_summary', api.export_ora2_summary, name='export_ora2_summary'),
path('export_ora2_submission_files', api.export_ora2_submission_files,