内容项的UUID
项目描述
plone.uuid
这是一个最小的包,可用于为对象获取一个通用唯一标识符(UUID)。
默认实现使用Python标准库中的uuid模块生成符合RFC 4122规范的UUID,使用uuid4()函数。它将在对象创建时分配UUID(通过订阅来自zope.lifecycleevent的IObjectCreatedEvent)并将其存储在对象的属性中。
为什么使用属性而不是注释?最常见的形式是IAttributeAnnotations提供的注释。它在名为__annotations__的属性中存储注释,这意味着注释值不会与父对象在同一个ZODB持久对象中。这对于“大型”值很好,但对于经常需要的小值则不是很好,因为它需要单独的ZODB对象加载。
简单用法
要使用上述默认实现自动为您对象分配UUID,您应该
确保它们实现了plone.uuid.interfaces.IAttributeUUID。您可以在代码中,通过implements()指令,或者在ZCML中使用类似以下语句的方式做这件事:
<class class="my.package.MyClass"> <implements interface="plone.uuid.interfaces.IAttributeUUID" /> </class>
确保在对象首次创建时为该对象触发一个IObjectCreatedEvent。
一旦事件处理器已触发,您可以通过将对象适配到IUUID接口来获取UUID
from plone.uuid.interfaces import IUUID uuid = IUUID(context)
现在,uuid变量将是一个包含UUID的(字节)字符串。如果UUID尚未分配,适配将失败并抛出TypeError。
如果您希望用None代替TypeError,您可以这样做
uuid = IUUID(context, None)
UUID视图
如果您需要在页面模板或远程位置使用UUID,可以使用注册在所有提供IUUIDAware标记接口(它是上述看到的IAttributeUUID标记的超接口)的所有对象上的@@uuid视图。
例如
<div tal:attributes="id string:uuid-${context/@@uuid}"> ... </div>
视图只是返回通过IUUID适配器查找的UUID字符串。
自定义行为
此包有两个主要的自定义点
您可以通过覆盖提供IUUIDGenerator接口的无名实用工具来更改默认UUID生成算法。默认实现简单地调用uuid.uuid4()并将结果转换为str。
您可以通过提供自定义的IUUID适配器实现来更改UUID存储。如果您这样做,您还必须提供在对象创建时分配UUID的机制,通常是通过事件处理器。要获取UUID,请使用IUUIDGenerator接口
from zope.component import getUtility from plone.uuid.interfaces import IUUIDGenerator generator = getUtility(IUUIDGenerator) uuid = generator()
您还应确保具有UUID的实例提供plone.uuid.interfaces.IUUIDAware的子接口。
变更日志
2.0.1 (2024-01-22)
内部
更新配置文件。[plone开发者] (237ff4c8, 6e36bcc4)
2.0.0 (2023-04-26)
破坏性更改
删除对python 2.7的支持。[gforcada] (#1)
内部
更新配置文件。[plone开发者] (2ed8f544)
1.0.6 (2020-04-22)
错误修复
轻微的包装更新。[#1]
1.0.5 (2018-01-18)
错误修复
修复包依赖关系。[gforcada]
修复文档和UUID生成器类的名称,以反映我们使用uuid4实现而不是uuid1的事实。[thet]
1.0.4 (2016-06-02)
错误修复
更新setup.py URL以指向github。[esteele]
修复了阻止Python 3测试通过的问题。[datakurre]
1.0.3 (2012-05-31)
使用zope.browserpage。[hannosch]
在addAttributeUUID()处理器中进行防御性UUID分配:如果处理器调用多次,则保留现有的UUID值,除非是对象复制事件,此时原始和目标应具有不同的UUID。[seanupton]
1.0.2 - 2011-10-18
生成不带破折号的UUID。[elro]
1.0.1 - 2011-05-20
在修改后的BSD许可下重新授权。请参阅http://plone.org/foundation/materials/foundation-resolutions/plone-framework-components-relicensing-policy。[davisagli]
1.0 - 2011-05-13
发布1.0最终版。[esteele]
添加MANIFEST.in。[WouterVH]
1.0b2 - 2011-01-03
添加MutableUUID组件。[toutpt]
1.0b1 - 2010-11-27
初始发布
项目详情
下载文件
下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。