泛型formlib字段

dolmen.field的Python项目详细描述


dolmen.field包为 扩展zope.schema。

配置字段

配置字段用于描述和约束,以 强制使用一致的架构和数据模型。

全局类

globalClass是需要有效接口类的字段。可能是 用于工厂和其他需要存储 接口,可以检查和验证 给定值:

>>> from zope.interface import Interface
>>> from dolmen.field import GlobalClass, IClassField

>>> class IDummy(Interface):
...     def shall_fail():
...         pass

>>> class Dummy(object):
...     pass

当然,它必须是一个有效的接口:

>>> field = GlobalClass(
...             title=u'a class field',
...             schema=object
...             )
Traceback (most recent call last):
...
WrongType: <type 'object'> is not a valid Interface

接口将用于验证类:

>>> field = GlobalClass(
...             title=u'a class field',
...             schema=IDummy
...             )

>>> field.schema
<InterfaceClass dolmen.field.tests.IDummy>
>>> IClassField.providedBy(field)
True

我们确保未触摸接口属性:

>>> print field.interface
None

在第一次,我们确保类实现所需的接口:

>>> field._validate(Dummy)
Traceback (most recent call last):
...
ConstraintNotSatisfied: <class 'dolmen.field.tests.Dummy'> does not implement <InterfaceClass dolmen.field.tests.IDummy>

>>> from zope.interface import classImplements
>>> classImplements(Dummy, IDummy)
>>> IDummy.implementedBy(Dummy)
True

然后该接口充当一个严格的验证器:

>>> field._validate(Dummy)
Traceback (most recent call last):
...
BrokenImplementation: An object has failed to implement interface <InterfaceClass dolmen.field.tests.IDummy>
<BLANKLINE>
The shall_fail attribute was not provided.
<BLANKLINE>

>>> Dummy.shall_fail = lambda x: u'not'
>>> field._validate(Dummy) is None
True

更改日志

0.3(2009-10-25)

  • 重构字段以使用“schema”属性而不是 “接口”。属性名“interface”与 其他处理包的字段。
  • 现在使用readme.txt而不是内联doctests,了解更多 可读性。

0.2(2009-06-09)

  • 初始PYPI版本

0.1(2009-05-03)

  • 内部释放

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

推荐PyPI第三方库


热门话题
java处理:“神奇”函数是如何工作的   java JAXB Marshaller不需要值为null或空的元素   java如何解决类案例异常?使用arraylist   如何用Java读取JSON数据   向上转换时捕获的java错误异常   多线程是受Java内存模型约束的JVM语言还是只受Java编程语言约束的JVM语言?   在java环境中,如何将进程关联到特定监视器上运行?   json在Java中解析JsonString到JsonObject   java在这个例子中,2d精灵的非光滑运动有什么原因   java我可以使用ApacheIgnite中的EntryProcessor和Spring数据吗?   java如何在Stagemonitor中使用度量   java JavaFX Timeline动画在几个小时后会结巴   当JSON值为空时,java应用程序崩溃   java使用Spel通过另一个Spring值来计算Spring值   java更高级版本的集合。频率()   如何捕获此站点以使用PhantomJsDriver和Selenium(Java)   java在抽象类中实现compareTo()   泽西岛java Show图片例外Apper   java识别处理中的特定blob   java Cassandra 2.1.3。如何提取CommitLog