def test_certificate_generation_no_specific_student_id(self): """ Raises ValueError when student_set is 'specific_student' and 'specific_student_id' is None. """ with self.assertRaises(SpecificStudentIdMissingError): generate_certificates_for_students(self.create_task_request( self.instructor), self.course.id, student_set='specific_student', specific_student_id=None)
def test_certificate_generation_no_specific_student_id(self): """ Raises ValueError when student_set is 'specific_student' and 'specific_student_id' is None. """ with self.assertRaises(SpecificStudentIdMissingError): generate_certificates_for_students( self.create_task_request(self.instructor), self.course.id, student_set='specific_student', specific_student_id=None )
def generate_certificate_for_user(request): """ Generate certificates for a user. This is meant to be used by support staff through the UI in lms/djangoapps/support Arguments: request (HttpRequest): The request object Returns: HttpResponse Example Usage: POST /certificates/generate * username: "******" * course_key: "edX/DemoX/Demo_Course" Response: 200 OK """ # Check the POST parameters, returning a 400 response if they're not valid. params, response = _validate_post_params(request.POST) if response is not None: return response try: # Check that the course exists CourseOverview.get_from_id(params["course_key"]) except CourseOverview.DoesNotExist: msg = _("The course {course_key} does not exist").format( course_key=params["course_key"]) return HttpResponseBadRequest(msg) else: # Check that the user is enrolled in the course if not CourseEnrollment.is_enrolled(params["user"], params["course_key"]): msg = _( "User {username} is not enrolled in the course {course_key}" ).format(username=params["user"].username, course_key=params["course_key"]) return HttpResponseBadRequest(msg) # Attempt to generate certificate generate_certificates_for_students( request, params["course_key"], student_set="specific_student", specific_student_id=params["user"].id) return HttpResponse(200)
def generate_certificate_for_user(request): """ Generate certificates for a user. This is meant to be used by support staff through the UI in lms/djangoapps/support Arguments: request (HttpRequest): The request object Returns: HttpResponse Example Usage: POST /certificates/generate * username: "******" * course_key: "edX/DemoX/Demo_Course" Response: 200 OK """ # Check the POST parameters, returning a 400 response if they're not valid. params, response = _validate_post_params(request.POST) if response is not None: return response try: # Check that the course exists CourseOverview.get_from_id(params["course_key"]) except CourseOverview.DoesNotExist: msg = _("The course {course_key} does not exist").format(course_key=params["course_key"]) return HttpResponseBadRequest(msg) else: # Check that the user is enrolled in the course if not CourseEnrollment.is_enrolled(params["user"], params["course_key"]): msg = _("User {username} is not enrolled in the course {course_key}").format( username=params["user"].username, course_key=params["course_key"] ) return HttpResponseBadRequest(msg) # Attempt to generate certificate generate_certificates_for_students( request, params["course_key"], student_set="specific_student", specific_student_id=params["user"].id ) return HttpResponse(200)
def test_certificate_generation_history(self): """ Tests that a new record is added whenever certificate generation/regeneration task is submitted. """ instructor_task = generate_certificates_for_students( self.create_task_request(self.instructor), self.course.id ) certificate_generation_history = CertificateGenerationHistory.objects.filter( course_id=self.course.id, generated_by=self.instructor, instructor_task=instructor_task, is_regeneration=False ) # Validate that record was added to CertificateGenerationHistory self.assertTrue(certificate_generation_history.exists()) instructor_task = regenerate_certificates( self.create_task_request(self.instructor), self.course.id, [CertificateStatuses.downloadable, CertificateStatuses.generating] ) certificate_generation_history = CertificateGenerationHistory.objects.filter( course_id=self.course.id, generated_by=self.instructor, instructor_task=instructor_task, is_regeneration=True ) # Validate that record was added to CertificateGenerationHistory self.assertTrue(certificate_generation_history.exists())
def test_certificate_generation_history(self): """ Tests that a new record is added whenever certificate generation/regeneration task is submitted. """ instructor_task = generate_certificates_for_students( self.create_task_request(self.instructor), self.course.id) certificate_generation_history = CertificateGenerationHistory.objects.filter( course_id=self.course.id, generated_by=self.instructor, instructor_task=instructor_task, is_regeneration=False) # Validate that record was added to CertificateGenerationHistory self.assertTrue(certificate_generation_history.exists()) instructor_task = regenerate_certificates( self.create_task_request(self.instructor), self.course.id, [CertificateStatuses.downloadable, CertificateStatuses.generating]) certificate_generation_history = CertificateGenerationHistory.objects.filter( course_id=self.course.id, generated_by=self.instructor, instructor_task=instructor_task, is_regeneration=True) # Validate that record was added to CertificateGenerationHistory self.assertTrue(certificate_generation_history.exists())
def test_submit_generate_certs_students(self): """ Tests certificates generation task submission api """ api_call = lambda: generate_certificates_for_students( self.create_task_request(self.instructor), self.course.id) self._test_resubmission(api_call)
def test_submit_generate_certs_students(self): """ Tests certificates generation task submission api """ api_call = lambda: generate_certificates_for_students( self.create_task_request(self.instructor), self.course.id ) self._test_resubmission(api_call)