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
.
,您可以更好地了解评分设置的定义方式
我正在尝试插入课程模板(模板是在 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
.