Commit 4d934a78 by Clinton Blackburn

Merge pull request #11 from edx/problems

Added support for course problems endpoint
parents b12ac07b 2e2affe3
......@@ -94,3 +94,13 @@ class Course(object):
path = 'courses/{0}/recent_activity/?activity_type={1}'.format(self.course_id, activity_type)
return self.client.get(path, data_format=data_format)
def problems(self, data_format=DF.JSON):
"""
Get the problems for the course.
Arguments:
data_format (str): Format in which data should be returned
"""
path = 'courses/{0}/problems/'.format(self.course_id)
return self.client.get(path, data_format=data_format)
import analyticsclient.constants.data_format as DF
from analyticsclient.exceptions import InvalidRequestError
class Module(object):
......@@ -29,22 +28,6 @@ class Module(object):
return self.client.get(path, data_format=data_format)
def submission_counts(self, module_ids, data_format=DF.JSON):
"""
Get submission counts data for multiple modules.
Arguments:
module_ids (list[str]): IDs of modules for which data should be returned
data_format (str): Format in which to return data (default is JSON)
"""
if not module_ids:
raise InvalidRequestError('At least one module ID must be supplied.')
module_ids = ','.join(module_ids)
path = 'problems/submission_counts/?problem_ids={}'.format(module_ids)
return self.client.get(path, data_format=data_format)
def grade_distribution(self, data_format=DF.JSON):
"""
Get grade distribution data for a module.
......
import json
import re
import httpretty
import re
from analyticsclient.constants import activity_type as at
from analyticsclient.constants import data_format
from analyticsclient.constants import demographic as demo
from analyticsclient.exceptions import NotFoundError, InvalidRequestError
from analyticsclient.tests import ClientTestCase
......@@ -134,3 +134,16 @@ class CoursesTests(ClientTestCase):
httpretty.register_uri(httpretty.GET, uri, body='not-json')
self.course.enrollment(data_format=data_format.CSV)
self.assertEquals(httpretty.last_request().headers['Accept'], 'text/csv')
@httpretty.activate
def test_problems(self):
body = [
{
'module_id': 'i4x://a/b/c'
}
]
uri = self.get_api_url('courses/{0}/problems/'.format(self.course_id))
httpretty.register_uri(httpretty.GET, uri, body=json.dumps(body))
self.assertEqual(body, self.course.problems())
import json
import httpretty
from analyticsclient.exceptions import InvalidRequestError
from analyticsclient.tests import ClientTestCase
......@@ -95,19 +95,3 @@ class ModulesTests(ClientTestCase):
uri = self.get_api_url('problems/{0}/grade_distribution/'.format(self.module_id))
httpretty.register_uri(httpretty.GET, uri, body=json.dumps(body))
self.assertEqual(body, self.module.grade_distribution())
@httpretty.activate
def test_submission_counts(self):
self.assertRaises(InvalidRequestError, self.module.submission_counts, None)
body = [
{
'module_id': self.module_id,
'total': 100,
'correct': 80
}
]
uri = self.get_api_url('problems/submission_counts/')
httpretty.register_uri(httpretty.GET, uri, body=json.dumps(body))
self.assertEqual(body, self.module.submission_counts([self.module_id]))
......@@ -2,7 +2,7 @@ from distutils.core import setup
setup(
name='edx-analytics-data-api-client',
version='0.5.0',
version='0.5.1',
packages=['analyticsclient'],
url='https://github.com/edx/edx-analytics-data-api-client',
description='Client used to access edX analytics data warehouse',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment