Files
edx-platform/common/djangoapps/course_about/api.py
stephensanchez 1e7d567b58 Initial framework for the Course About API.
ECOM-248 Course Info API. Basic functionality implemented.

ECOM-248 adding factory for about descriptor and test cases for course info api

ECOM-248 adding test cases for couse info api.

ECOM-248 re-factoring code. updating test cases.

Tests for course_about data module

ECOM-248 Adding test cases for the exceptions.

ECOM-248 re-factoring code. fixing quality issues.

ECOM-248 fixing test cases and moved parse video method into utils.

added github username in authors

ECOM-248 removed merging issue of test_data

ECOM-248 removed unused files
2015-01-07 20:03:54 +05:00

66 lines
2.1 KiB
Python

"""
The Python API layer of the Course About API. Essentially the middle tier of the project, responsible for all
business logic that is not directly tied to the data itself.
Data access is managed through the configured data module, or defaults to the project's data.py module.
This API is exposed via the RESTful layer (views.py) but may be used directly in-process.
"""
import logging
from django.conf import settings
from django.utils import importlib
from course_about import errors
DEFAULT_DATA_API = 'course_about.data'
log = logging.getLogger(__name__)
def get_course_about_details(course_id):
"""Get course about details for the given course ID.
Given a Course ID, retrieve all the metadata necessary to fully describe the Course.
Args:
course_id (str): The String representation of a Course ID. Used to look up the requested
course.
Returns:
A JSON serializable dictionary of metadata describing the course.
Example:
>>> get_course_about_details('edX/Demo/2014T2')
{
"advertised_start": "FALL",
"announcement": "YYYY-MM-DD",
"course_id": "edx/DemoCourse",
"course_number": "DEMO101",
"start": "YYYY-MM-DD",
"end": "YYYY-MM-DD",
"effort": "HH:MM",
"display_name": "Demo Course",
"is_new": true,
"media": {
"course_image": "/some/image/location.png"
},
}
"""
return _data_api().get_course_about_details(course_id)
def _data_api():
"""Returns a Data API.
This relies on Django settings to find the appropriate data API.
We retrieve the settings in-line here (rather than using the
top-level constant), so that @override_settings will work
in the test suite.
"""
api_path = getattr(settings, "COURSE_ABOUT_DATA_API", DEFAULT_DATA_API)
try:
return importlib.import_module(api_path)
except (ImportError, ValueError):
log.exception(u"Could not load module at '{path}'".format(path=api_path))
raise errors.CourseAboutApiLoadError(api_path)