def test_get_pgreport_csv(self): gzipdata = gzip.GzipFile(fileobj=self.gzipfile, mode='wb') gzipdata.write("row1\nrow2\nrow3\n") gzipdata.close() scontent_mock = MagicMock() cstore_mock = MagicMock() content_mock = MagicMock() content_mock.stream_data.return_value = self.gzipfile.getvalue() cstore_mock.find.return_value = content_mock with nested( patch('pgreport.views.StaticContent', return_value=scontent_mock), patch('pgreport.views.contentstore', return_value=cstore_mock), patch('sys.stdout', new_callable=StringIO.StringIO) ) as (smock, cmock, stdmock): get_pgreport_csv(self.course.id) smock.compute_location.assert_called_once_with(ANY, "progress_students.csv.gz") cmock.assert_called_once_with() cmock.return_value.find.assert_called_once_with(ANY, throw_on_not_found=True, as_stream=True) content_mock.stream_data.assert_called_once_with() self.assertEquals(stdmock.getvalue(), 'row1\nrow2\nrow3\n') cstore_mock.find.side_effect = NotFoundError() with patch('pgreport.views.contentstore', return_value=cstore_mock): with self.assertRaises(NotFoundError): get_pgreport_csv(self.course.id)
def handle(self, *args, **options): create_report = options['create'] delete_report = options['delete'] if len(args) != 1: raise CommandError('"course_id" is not specified') elif create_report and delete_report: raise CommandError( 'Cannot specify "-c" option and "-d" option at the same time.') course_id = args[0] try: course_id = CourseLocator.from_string(course_id) except InvalidKeyError: raise CommandError("'{}' is an invalid course_id".format(course_id)) if not modulestore().get_course(course_id): raise CommandError("The specified course does not exist.") if delete_report: try: delete_pgreport_csv(course_id) except NotFoundError: raise CommandError("CSV not found.") call_command('create_report_task', *['clear_cache'], **{'course_id': course_id.to_deprecated_string()}) elif create_report: call_command('create_report_task', *['create'], **{'course_id': course_id.to_deprecated_string()}) else: try: get_pgreport_csv(course_id) except NotFoundError: raise CommandError("CSV not found.")
def handle(self, *args, **options): create_report = options['create'] delete_report = options['delete'] if len(args) != 1: raise CommandError('"course_id" is not specified') elif create_report and delete_report: raise CommandError( 'Cannot specify "-c" option and "-d" option at the same time.') course_id = args[0] try: course_id = CourseLocator.from_string(course_id) except InvalidKeyError: raise CommandError( "'{}' is an invalid course_id".format(course_id)) if not modulestore().get_course(course_id): raise CommandError("The specified course does not exist.") if delete_report: try: delete_pgreport_csv(course_id) except NotFoundError: raise CommandError("CSV not found.") call_command('create_report_task', *['clear_cache'], **{'course_id': course_id.to_deprecated_string()}) elif create_report: call_command('create_report_task', *['create'], **{'course_id': course_id.to_deprecated_string()}) else: try: get_pgreport_csv(course_id) except NotFoundError: raise CommandError("CSV not found.")