five.intid

软件截图:
five.intid
软件详细信息:
版本: 1.0.3
上传日期: 14 Apr 15
开发: Whit Morriss
许可: 免费
人气: 12

Rating: 2.0/5 (Total Votes: 2)

five.intid是Python包使得能够使用zope.intid (和依赖于它的比如zope.keyreference必然其它封装)中Zope2环境。
用法
首先,让我们确保OFS实用程序提供的接口:
>>>从Products.Five.tests.testing.simplecontent进口(
... manage_addSimpleContent)
>>>从zope.intid.interfaces进口IIntIds
>>>从five.intid导入站点
>>>进口five.intid.tests作为测试
>>>从zope.interface.verify进口verifyObject
>>>从zope.component进口getAllUtilitiesRegisteredFor
>>>从zope.site.hooks进口setSite
>>> tests.setUp(self.app)
内容添加的实用程序将无法注册前(直到明确调用)。现在,我们将设置一些弥补后
  >>> manage_addSimpleContent(self.folder,“mycont1”,“我的内容”)
  >>>内容1 = self.folder.mycont1
five.intid.site具有方便的功能添加,获取和删除一个INTID工具:add_intid,get_intid,del_intid。
您可以安装在特定位置的工具:
>>> site.add_intids(self.folder)
>>> folder_intids = site.get_intids(self.folder)
>>> verifyObject(IIntIds,folder_intids)

你可以告诉add_intids找到网站根目录,并安装在那里。这将是随处可得:
>>> site.add_intids(self.folder,findroot =真)
>>> root_intids = site.get_intids(self.app)
>>> root_intids
<... IntIds ...>
>>> folder_intids是root_intids

最后,做了删除:
>>> site.del_intids(self.folder,findroot =真)
>>> site.get_intids(self.app)
回溯(最近通话最后一个):
...
ComponentLookupError:(,'')
之前,我们来看看INTID事件,我们需要设置遍历挂钩。一旦我们做到了这一点,当我们要求所有注册Intids,我们将得到的测试文件夹中的程序:
>>> setSite(self.folder)
>>>元组(getAllUtilitiesRegisteredFor(IIntIds))
(<... IntIds ...>)
当我们添加的内容,事件将被解雇添加keyreference所述对象的实用工具(目前,我们的内容和实用注册):
>>> manage_addSimpleContent(self.folder,“mycont2”,“我的内容”)
>>>内容2 = self.folder.mycont2
>>> INTID = site.get_intids(self.folder)
>>> LEN(intid.items())== 1

预先存在的内容将引发KeyError如果传递给INTID实用程序:
>>> intid.getId(内容1)
回溯(最近通话最后一个):
...
KeyError异常:
我们可以致电keyreferences,并获得过的对象:
>>> intid.items()[0] [1]()

我们可以得到一个对象的INTID从像这样的程序:
>>> ob_id = intid.getId(内容2)
并得到一个对象返回是这样的:
>>> intid.getObject(ob_id)

这些对象是AQUISITION包裹上检索:
>>>从收购进口IAcquirer
>>> IAcquirer.providedBy(intid.getObject(ob_id))

我们甚至可以把一个对象展开成一个包装对象通过解析从它的INTID,也是INTID工具应该就算是解开:
>>>从收购进口aq_base
>>>解决= intid.getObject(intid.getId(aq_base(内容2)))
>>> IAcquirer.providedBy(解决)

>>>展开= aq_base(INTID)
>>> unwrapped.getObject(ob_id)==解决

>>> unwrapped.getId(内容2)== ob_id

当一个对象被添加或删除,用户将其添加到INTID工具,并触发一个事件被触发(zope.intid.interfaces.IIntIdAddedEvent,zope.intid.interfaces.IIntIdRemovedEvent分别)。
five.intid挂接这些事件重新调度为对象的事件。测试挂钩一个简单订户验证INTID对象事件被触发(这些事件是对catalogish任务有用)。
&NBSP; >>> tests.NOTIFIED [0]
&NBSP;“ <... IntIdAddedEvent的对象......”
注册和注销的对象不会触发这些事件:
>>> tests.NOTIFIED [0] =“没有变化”
>>>的uid = intid.register(内容1)
>>> intid.getObject(UID)

>>> tests.NOTIFIED [0]
“没有变化”
>>> intid.unregister(内容1)
>>> intid.getObject(UID)
回溯(最近通话最后一个):
...
KeyError异常:...
>>> tests.NOTIFIED [0]
“没有变化”
重命名的对象不应打破对象的重新换行:
&NBSP; >>> self.setRoles(['经理'])
&NBSP; >>> folder.mycont2.meta_type ='文件夹'#我们需要一个元类型移动
&NBSP; >>> folder.manage_renameObject('mycont2','mycont_new')
&NBSP; >>>移动= intid.getObject(ob_id)
&NBSP;移动>>>
&NBSP;
也不应移动它:
&NBSP;从>>>进口OFS.Folder manage_addFolder
&NBSP; >>> manage_addFolder(self.folder“FOLDER2”,“文件夹2”)
&NBSP; >>>切= folder.manage_cutObjects(['mycont_new'])
&NBSP; >>>忽略= folder.folder2.manage_pasteObjects(切)
&NBSP; >>>移动= intid.getObject(ob_id)
&NBSP;移动>>>
&NBSP;
&NBSP; >>> moved.aq_parent
&NBSP; <文件夹在/ test_folder_1_ / FOLDER2>
让我们将其移回:
&NBSP; >>>切= folder.folder2.manage_cutObjects(['mycont_new'])
&NBSP; >>>忽略= folder.manage_pasteObjects(切)
&NBSP; >>> folder.manage_renameObject('mycont_new','mycont2')
我们可以创建一个对象,而无需收购,所以我们可以能够INTID添加到它:
&NBSP;从>>>进口five.intid.tests DemoPersistent
&NBSP; >>> demo1的= DemoPersistent()
&NBSP; >>> demo1的.__ parent__ = self.app
&NBSP;从>>>进口zope.event通知
&NBSP;从>>>进口zope.lifecycleevent ObjectAddedEvent
&NBSP; >>>通知(ObjectAddedEvent(demo1的))
&NBSP; >>> nowrappid = intid.getId(demo1的)
&NBSP; >>> demo1的== intid.getObject(nowrappid)
&NBSP;真
这是一个好时机,看看keyreferences,该系统的核心部分。

什么在此版本中是新的

  • 确保在IConnection适配器工作的展开持久对象。 [davisagli]

什么是1.0.2版本,新的

  • 在只有无视“临时”的ObjectAddedEvent事件对象处理程序。 [MJ]

什么是1.0.1版本,新的

  • 在忽略“临时”的对象(在Plone的portal_factory工具)。 [MJ]

什么版本1.0是新的

  • 在删除最后zope.app依赖。 [hannosch]
  • 删除INTID浏览器的看法。 [hannosch]
  • 在现代化的代码,善于以Zope的2.13。 [hannosch]

要求

  • 在Python中

显影剂的其他软件 Whit Morriss

CheesePrism
CheesePrism

20 Feb 15

意见 five.intid

评论没有发现
添加评论
打开图片!