use new IUid interface for showing the presence of the uid property

This commit is contained in:
Helmut Merz 2024-01-03 13:00:36 +01:00
parent 380d7e7b59
commit 5c4b7fd730
2 changed files with 14 additions and 2 deletions

View file

@ -6,9 +6,12 @@ Provides a Container subclass that defines methods from cybertools...TrackingSto
used by code based on loops.organize.tracking.
"""
from zope.interface import implementer
from cco.storage.tracking import record
from loops.util import IUid
@implementer(IUid)
class Track(record.Track):
@property

13
util.py
View file

@ -24,6 +24,7 @@ import os
from zope.publisher.browser import BrowserView
from zope import component
from zope.catalog.interfaces import ICatalog
from zope.interface import Attribute, Interface
from zope.interface import directlyProvides, directlyProvidedBy, implements
from zope.intid.interfaces import IIntIds
from zope.i18nmessageid import MessageFactory
@ -129,12 +130,19 @@ def reindex(obj, catalog=None):
catalog.index_doc(int(getUidForObject(obj)), obj)
# UID stuff
class IUid(Interface):
"""Provides uid property."""
uid = Attribute("Unique Identifier")
def getItem(uid, intIds=None, storage=None):
if storage is not None and '-' in uid:
return storage.getItem(uid)
return getObjectForUid(uid, intIds=intIds)
def getObjectForUid(uid, intIds=None):
if uid == '*': # wild card
return '*'
@ -150,7 +158,8 @@ def getObjectForUid(uid, intIds=None):
def getUidForObject(obj, intIds=None):
if obj == '*': # wild card
return '*'
if hasattr(obj, 'uid'):
#if hasattr(obj, 'uid'):
if IUid.providedBy(obj):
return str(obj.uid)
if intIds is None:
intIds = component.getUtility(IIntIds)