Xblocks的各种实用程序
xblock-openedx-utils的Python项目详细描述
Xblock实用程序:Xblocks的各种实用程序
===
==
这些是有用的实用程序函数的集合,
测试基类和许多Xblocks共享的文档。
(尤其是那些"edx解决方案"的实用程序)
。_ edx-solutions:https://github.com/edx solutions
要测试实用程序,请运行:
要获取覆盖率报告,请使用:
——
…代码::python
from xblockutils.studio_editable导入studioeditablexblockmixin
此mixin将自动生成一个工作的"studio_view"窗体,允许内容作者编辑xblock的字段。要使用,
只需将类添加到基类列表中,并添加一个名为"可编辑字段"的新类字段,设置为希望用户能够编辑的字段名称的元组。code::python
@xblock.needs("i18n")
类示例块(studioeditablexblockmixin,xblock):
…
mode=string(
display\u name="mode",
help="确定此组件的行为。建议使用"标准"。",
默认值="标准",
作用域=作用域.content,
值=("标准","疯狂")
)
可编辑字段=("模式","显示名称")
mixin将从
您提到并构建编辑器表单的字段以及ajax save
处理程序中读取可选的
``显示名称``,``帮助`,``默认`,和``值``设置。
如果要验证数据,可以重写
``验证`字段数据(self,validation,data)``和/或
`` clean_studio_edits(self,data)``-有关详细信息,请参阅源代码。
支持的字段类型:
*布尔值:
``字段名=布尔值(display_name="field name")```
*浮点值:
``字段名=浮点值(display_name="field name")```
*整数:
``字段_ name=integer(display庘name="field name")`
*字符串:
`` field庘name=string(display庘name="field name")``
*字符串(多行):
`` field庘name=string(多行编辑器=true,可重置编辑器=false)`
*字符串(html):
`` field庘name=string(多行编辑器='html',resettable_editor=false)``
如果上面的任何一个选项有一个预定义的
可能值列表,则它们都将使用下拉菜单。
*从一小组
可能值中提取的无序唯一值(即集合)列表:
`` field恚name=list(list恚style='set',list恚values恚provider=某些方法)`
-``list``声明必须包含属性``list`style=`set``到
表示``list``字段正与set语义一起使用。
-``list``声明还必须定义一个``list`values`provider``方法
e block作为其唯一参数,它必须返回一个可能值的列表。
*对dict、ordered list和任何其他jsonfield派生字段类型的基本支持normal dict",default={}``
支持的字段选项(所有字段类型):
*``values``可以定义可能的选项列表,将ui元素
更改为选择框。可以将值设置为
xblock源代码中定义的任何格式<;https://github.com/edx/xblock/blob/master/xblock/fields.py>;` ` ` ` ` ` `:
-有限元素集:` `[1,2,3]` `
-有限元素集,其中显示名称与值不同r/>[
{"显示名称":"始终","值":"始终"},
{"显示名称":"过期","值":"过期"_due"},
]
-特定增量浮点数的范围:
`{"min":0,"max":10,"step":.1}``
-返回上述值之一的可调用函数。(注意:callable没有通过xblock实例或运行时,因此它不能是一个普通的成员函数)
*``values`u provider``可以定义一个接受xblock
实例作为参数的callable,并以上面列出的一种格式返回一个可能值的列表。
*``resetable`u editor`-defa结果为"真"。将"false"设置为隐藏"reset"按钮,该按钮用于通过从xblock实例中删除字段的值来将字段返回到其默认值。
基本屏幕截图:屏幕截图1
studiocontainerxblockmixin
代码::python
from xblockutils.studio_editable import studiocontainerxblockmixin
此mixin有助于创建允许内容作者添加、删除或重新排序子块的xblock。通过删除任何现有的
``author\u view``并添加此mixin,您将在studio中获得可编辑的
re-orderable和可删除的子支持。要使作者能够将任意块添加为子块,只需在调用"render"子块时重写"author\u edit"视图并设置"can\u add=true"-请参见源代码。为了限制作者,以便他们只能添加特定类型的
子块或数量有限的子块,需要自定义HTML。
例如指导Xblock:屏幕截图2
SeleniumxBlockTest
----
。代码::python
from xblockutils.base_test import seleniumxblocktest
这是一个基类,可用于编写xblock sdk(工作台)中托管的selenium集成测试。
代码::python
class test student view(seleniumxblocktest):
"
"测试mycoolxblock的学生视图
"
def setup(self):
super(teststudentview,self).setup()
self.set_scenario_xml('<;mycoolblock display_name="test demo block"field2="hello"/>;')
self.element=self.go_to_view("student_view")
"
"xblock应显示field2的文本值。
"
"self.assertin("hello",self.element.text)
=--
代码::python
from xblockutils.studio_editable-test import studioeditablebasetest
这是"seleniumxblocktest"的一个子类,它添加了一些有用的helper
方法,可用于使用
"studioeditablexblockmixin"测试任何xblock的"studio_-view"。
代码::python
from xblockutils.helpers import child\isinstance
如果您的xblock需要查找特定类/mixin的子级/子级,则应使用
。代码::python
child-isinstance(self,child-usage-id,somexblockclassormixin)
,而不是调用
。代码::python
``isinstance(self.runtime.get戋block(child戋usage戋id),somexblockclassormixin``.
在edx平台等运行时,``child戋isinstance``的速度要快得多个数量级。
|截图1图片::https://cloud.githubusercontent.com/assets/945577/6341782/7d237966-bb83-11e4-9344-faa647056999.png
|屏幕截图2 image::https://cloud.githubusercontent.com/assets/945577/6341803/d0195ec4-bb83-11e4-82f6-8052c9f70690.png
xblockwithsettingsmixin
——-主题支持访问Xblock特定设置)用于DETails
ThemableXblockMixin
----
此Mixin提供基于Xblock特定设置的Xblock主题化功能。
有关详细信息,请参阅[维基页面](https://github.com/edx/xblock-utils/wiki/settings和主题支持
===
==
这些是有用的实用程序函数的集合,
测试基类和许多Xblocks共享的文档。
(尤其是那些"edx解决方案"的实用程序)
。_ edx-solutions:https://github.com/edx solutions
要测试实用程序,请运行:
要获取覆盖率报告,请使用:
…代码::python
from xblockutils.studio_editable导入studioeditablexblockmixin
此mixin将自动生成一个工作的"studio_view"窗体,允许内容作者编辑xblock的字段。要使用,
只需将类添加到基类列表中,并添加一个名为"可编辑字段"的新类字段,设置为希望用户能够编辑的字段名称的元组。code::python
@xblock.needs("i18n")
类示例块(studioeditablexblockmixin,xblock):
…
mode=string(
display\u name="mode",
help="确定此组件的行为。建议使用"标准"。",
默认值="标准",
作用域=作用域.content,
值=("标准","疯狂")
)
可编辑字段=("模式","显示名称")
mixin将从
您提到并构建编辑器表单的字段以及ajax save
处理程序中读取可选的
``显示名称``,``帮助`,``默认`,和``值``设置。
如果要验证数据,可以重写
``验证`字段数据(self,validation,data)``和/或
`` clean_studio_edits(self,data)``-有关详细信息,请参阅源代码。
支持的字段类型:
*布尔值:
``字段名=布尔值(display_name="field name")```
*浮点值:
``字段名=浮点值(display_name="field name")```
*整数:
``字段_ name=integer(display庘name="field name")`
*字符串:
`` field庘name=string(display庘name="field name")``
*字符串(多行):
`` field庘name=string(多行编辑器=true,可重置编辑器=false)`
*字符串(html):
`` field庘name=string(多行编辑器='html',resettable_editor=false)``
如果上面的任何一个选项有一个预定义的
可能值列表,则它们都将使用下拉菜单。
*从一小组
可能值中提取的无序唯一值(即集合)列表:
`` field恚name=list(list恚style='set',list恚values恚provider=某些方法)`
-``list``声明必须包含属性``list`style=`set``到
表示``list``字段正与set语义一起使用。
-``list``声明还必须定义一个``list`values`provider``方法
e block作为其唯一参数,它必须返回一个可能值的列表。
*对dict、ordered list和任何其他jsonfield派生字段类型的基本支持normal dict",default={}``
支持的字段选项(所有字段类型):
*``values``可以定义可能的选项列表,将ui元素
更改为选择框。可以将值设置为
xblock源代码中定义的任何格式<;https://github.com/edx/xblock/blob/master/xblock/fields.py>;` ` ` ` ` ` `:
-有限元素集:` `[1,2,3]` `
-有限元素集,其中显示名称与值不同r/>[
{"显示名称":"始终","值":"始终"},
{"显示名称":"过期","值":"过期"_due"},
]
-特定增量浮点数的范围:
`{"min":0,"max":10,"step":.1}``
-返回上述值之一的可调用函数。(注意:callable没有通过xblock实例或运行时,因此它不能是一个普通的成员函数)
*``values`u provider``可以定义一个接受xblock
实例作为参数的callable,并以上面列出的一种格式返回一个可能值的列表。
*``resetable`u editor`-defa结果为"真"。将"false"设置为隐藏"reset"按钮,该按钮用于通过从xblock实例中删除字段的值来将字段返回到其默认值。
基本屏幕截图:屏幕截图1
studiocontainerxblockmixin
代码::python
from xblockutils.studio_editable import studiocontainerxblockmixin
此mixin有助于创建允许内容作者添加、删除或重新排序子块的xblock。通过删除任何现有的
``author\u view``并添加此mixin,您将在studio中获得可编辑的
re-orderable和可删除的子支持。要使作者能够将任意块添加为子块,只需在调用"render"子块时重写"author\u edit"视图并设置"can\u add=true"-请参见源代码。为了限制作者,以便他们只能添加特定类型的
子块或数量有限的子块,需要自定义HTML。
例如指导Xblock:屏幕截图2
SeleniumxBlockTest
----
。代码::python
from xblockutils.base_test import seleniumxblocktest
这是一个基类,可用于编写xblock sdk(工作台)中托管的selenium集成测试。
代码::python
class test student view(seleniumxblocktest):
"
"测试mycoolxblock的学生视图
"
def setup(self):
super(teststudentview,self).setup()
self.set_scenario_xml('<;mycoolblock display_name="test demo block"field2="hello"/>;')
self.element=self.go_to_view("student_view")
"xblock应显示field2的文本值。
"
"self.assertin("hello",self.element.text)
代码::python
from xblockutils.studio_editable-test import studioeditablebasetest
这是"seleniumxblocktest"的一个子类,它添加了一些有用的helper
方法,可用于使用
"studioeditablexblockmixin"测试任何xblock的"studio_-view"。
代码::python
from xblockutils.helpers import child\isinstance
如果您的xblock需要查找特定类/mixin的子级/子级,则应使用
。代码::python
child-isinstance(self,child-usage-id,somexblockclassormixin)
,而不是调用
。代码::python
``isinstance(self.runtime.get戋block(child戋usage戋id),somexblockclassormixin``.
在edx平台等运行时,``child戋isinstance``的速度要快得多个数量级。
|截图1图片::https://cloud.githubusercontent.com/assets/945577/6341782/7d237966-bb83-11e4-9344-faa647056999.png
|屏幕截图2 image::https://cloud.githubusercontent.com/assets/945577/6341803/d0195ec4-bb83-11e4-82f6-8052c9f70690.png
xblockwithsettingsmixin
——-主题支持访问Xblock特定设置)用于DETails
ThemableXblockMixin
----
此Mixin提供基于Xblock特定设置的Xblock主题化功能。
有关详细信息,请参阅[维基页面](https://github.com/edx/xblock-utils/wiki/settings和主题支持