Exemplo n.º 1
0
    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)
Exemplo n.º 2
0
    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.")
Exemplo n.º 3
0
    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.")