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和主题支持

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
日志列“\u id”中的java JSON到db创建错误不存在   在GWT中使用字符串变量作为对象的java   RESTweb服务中get方法中的java invoke post方法   使用参数类型int时,java MyBatis的列类型无效   java Android在不触发onTextChanged的情况下调用backspace   java为什么在安卓 studio中顶栏搜索不起作用?   从VB转换。net到java   Android Studio Java蓝牙Gatt连接问题   多线程Java从线程通知线程   如果在没有任何选项的情况下运行JVM,java对内存使用的影响?   Java handson使用图表进行练习   java为什么UTF8的新字符串包含更多字节   java如何使用此方法制作声音循环?   java为什么强制转换对象是多余的