2016-06-01 38 views
2

我試圖插入一個課程模板(模板是必需的詳細信息,需要在edx studio上創建課程以及一些評分設置)。我希望通過外部腳本插入課程模板,該腳本將對安裝opensx的服務器的數據庫具有讀取/寫入權限。在openx中通過外部腳本定義課程

我已經瀏覽了文檔,但他們似乎沒有關於我的目標的信息。我隨意嘗試在opensx中插入一門課程,並看到至少有一個MySQL表格發生了變化,並且關聯的MongoDB中的某些集合也發生了變化。但這並不是什麼具體的事情。 我會通過源代碼,但它是如此之大的代碼庫。

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

難道有人請指出我正確的方向,我該如何做到這一點,或者至少告訴我應該看看哪部分代碼庫?

+0

你能指定你想改變的參數嗎?你有沒有嘗試以編程方式更改這些細節?如果是的話,你嘗試了什麼? –

+0

詳細信息,如edX課程將具有的評估類型,各自的權重,課程開始日期和結束日期除了強制課程顯示名稱,縮寫,組織和課程運行 –

回答

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

+0

非常感謝您的幫助,我會更多地關注它 –