openx 中外部脚本的课程定义

Course definition by external script in openedx

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

我已经查看了文档,但他们似乎没有关于我的 objective 的信息。我随意尝试在 openedx 中插入一门课程,发现至少有一个 MySQL table 发生了变化,还有一些集合在 关联的 MongoDB 也发生了变化。但这几乎不是什么具体的事情。 我会查看源代码,但它是如此庞大的代码库。

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

有人可以为我指出正确的方向,告诉我如何完成这项工作,或者至少告诉我应该查看代码库的哪一部分吗?

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

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. As we can see, all the grading information is stored in a CourseGradingModel. The method that you need is update_from_json.

,您可以更好地了解评分设置的定义方式