openx中外部脚本的课程定义

时间:2016-06-01 05:11:04

标签: openedx

我正在尝试插入课程模板(模板是在edx studio上创建课程所需的必备详细信息以及一些评分设置)。我希望通过外部脚本插入课程模板,该脚本将对安装了opensx的服务器的数据库具有读/写权限。

我已经浏览了文档,但他们似乎没有关于我的目标的信息。我试着在opensx中插入一个课程,看到至少有一个MySQL表发生了变化,还有一些集合在里面 相关的MongoDB也发生了变化。但这几乎不具体。 我会浏览源代码,但它是如此庞大的代码库。

我正在使用openx的山茱萸版本。

有人可以指出我正确的方向,我是如何做到这一点,或者至少告诉我应该看哪个代码库部分?

1 个答案:

答案 0 :(得分:1)

这就是你创建课程的方式:

from xmodule.modulestore.django import modulestore
from datetime import datetime
store.create_course(
    "org", "num", "run", # course ID
    1,                   # course creator user ID
    # Set the start date of the course to the start of the year
    fields={"start": datetime(2016, 1, 1)} 
)

请参阅fields参数?这是可以定义的新课程的属性。 common.lib.xmodule.xmodule.course_module:CourseFields中提供了可以定义的属性列表。在上面的示例中,我们定义了start属性,但是可以使用相同的方法定义其他字段。

如果您希望在创建课程属性后修改课程属性,例如start属性,您可以这样做:

from opaque_keys.edx.keys import CourseKey
course = store.get_course(CourseKey.from_string("course-v1:org+num+run"))
course.start = datetime.now()
course.save()

请注意,这并不包括定义每门课程的评估。以编程方式定义此更复杂。通过查看grading_handler view from the contentstore views,您可以更好地了解如何定义评分设置。我们可以看到,所有评分信息都存储在CourseGradingModel中。您需要的方法是update_from_json