跳转到主要内容

内容项的UUID

项目描述

plone.uuid

这是一个最小的包,可用于为对象获取一个通用唯一标识符(UUID)。

默认实现使用Python标准库中的uuid模块生成符合RFC 4122规范的UUID,使用uuid4()函数。它将在对象创建时分配UUID(通过订阅来自zope.lifecycleeventIObjectCreatedEvent)并将其存储在对象的属性中。

为什么使用属性而不是注释?最常见的形式是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

1.0 - 2011-05-13

  • 发布1.0最终版。[esteele]

  • 添加MANIFEST.in。[WouterVH]

1.0b2 - 2011-01-03

  • 添加MutableUUID组件。[toutpt]

1.0b1 - 2010-11-27

  • 初始发布

项目详情


下载文件

下载适用于您的平台的文件。如果您不确定选择哪个,请了解更多关于安装软件包的信息。

源分发

plone.uuid-2.0.1.tar.gz (11.8 kB 查看哈希值)

上传时间

构建分发

plone.uuid-2.0.1-py3-none-any.whl (8.2 kB 查看哈希值)

上传时间 Python 3

由以下组织支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面