公共关系的atfield

plonerelations.ATField的Python项目详细描述


简介

这个包允许您使用基于plone.app.relations的关系 在原型领域。它在引用中公开了与标准相同的api 做,让它成为一个简单的替代品。

测试

初步测试,并设置我们的组件和一些基本内容

>>> from plonerelations.ATField import tests
>>> tests.base_setup(portal)
>>> ob1 = portal['ob1']
>>> ob2 = portal['ob2']
>>> ob3 = portal['ob3']
>>> ob4 = portal['ob4']
>>> ob5 = portal['ob5']

导入字段,创建其实例,使其多值

>>> from plonerelations.ATField.ploneRelationsATField import PloneRelationsATField
>>> multiValueATField = PloneRelationsATField ()
>>> multiValueATField.multiValued = True
>>> multiValueATField.relationship = 'test multi valued relationship'

将单个值设为1,以便进行良好测量

>>> singleValueATField = PloneRelationsATField ()
>>> singleValueATField.multiValued = False
>>> singleValueATField.relationship = 'test single relationship'

创建接口

>>> from zope.interface import Interface
>>> class IMyInterface (Interface):
...     pass

在atfields上设置关系界面

>>> multiValueATField.relationship_interface = IMyInterface
>>> singleValueATField.relationship_interface = IMyInterface

从ob1到objs 2和3建立多个关系,从ob4到ob5建立一个关系

>>> singleValueATField.set ( ob4, ob5 )
>>> multiValueATField.set ( ob1, [ob2,ob3] )

测试get方法是否返回正确的对象。multi返回列表

>>> list (multiValueATField.get( ob1 ))
[<Demo ob2>, <Demo ob3>]
>>> list (multiValueATField.getRaw( ob1, aslist=False))
['ob2', 'ob3']
>>> list (multiValueATField.getRaw( ob1, aslist=True ))
['ob2', 'ob3']

sinlge返回一个对象

>>> singleValueATField.get ( ob4 )
<Demo ob5>
>>> singleValueATField.getRaw( ob4, aslist=False )
'ob5'
>>> singleValueATField.getRaw( ob4, aslist=True )
['ob5']

仔细检查plone.app.interface是否返回相同的值

>>> from plone.app.relations import interfaces
>>> multiValueSource = interfaces.IRelationshipSource(ob1)
>>> singleValueSource = interfaces.IRelationshipSource(ob4)
>>> multiValueRelationships = list(multiValueSource.getRelationships())
>>> singleValueRelationship = list(singleValueSource.getRelationships())
>>> multiValueRelationships
[<Relationship 'test multi valued relationship' from (<Demo ob1>,) to (<Demo ob2>,)>, <Relationship 'test multi valued relationship' from (<Demo ob1>,) to (<Demo ob3>,)>]
>>> singleValueRelationship
[<Relationship 'test single relationship' from (<Demo ob4>,) to (<Demo ob5>,)>]

检查relathinshiops是否提供接口

>>> IMyInterface.providedBy (singleValueRelationship[0])
True
>>> IMyInterface.providedBy (multiValueRelationships[0])
True

检查是否删除

>>> multiValueATField.set ( ob1, [ob2,ob5] )
>>> list(multiValueSource.getRelationships())
[<Relationship 'test multi valued relationship' from (<Demo ob1>,) to (<Demo ob2>,)>, <Relationship 'test multi valued relationship' from (<Demo ob1>,) to (<Demo ob5>,)>]
>>> singleValueATField.set ( ob4, ob1 )
>>> singleValueRelationship = list(singleValueSource.getRelationships())
>>> singleValueRelationship
[<Relationship 'test single relationship' from (<Demo ob4>,) to (<Demo ob1>,)>]

更改日志

1.0-2011年10月10日

  • 删除__implements__以与plone 4兼容。 [汉诺什]
  • 更新分发元数据,一些代码清理。 [汉诺什]

0.1-2008年5月20日

  • 第一次释放。

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

推荐PyPI第三方库


热门话题
IntelliJ中的java默认Maven项目结构不一致   java我希望链接(在帖子和页面上)在一些访问者加载时被自动点击   java如何使用单独的方法隐藏JButton并在新类中调用   java KStream leftJoin KStream具有相同的密钥   java图像在垂直滚动窗格视图端口中消失   java从指定的起始点开始以n的增量填充数组   java JLabel和JTextField不在swing表单中应用   java springboot mongo如果没有映像,请使用现有映像   类似C++映射的java容器   java如何在没有Valgrind错误的情况下调用JNI_CreateJavaVM?   java如何在安卓中运行后台服务   java onPostExecute不运行