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. used by code based on loops.organize.tracking.
""" """
from zope.interface import implementer
from cco.storage.tracking import record from cco.storage.tracking import record
from loops.util import IUid
@implementer(IUid)
class Track(record.Track): class Track(record.Track):
@property @property

13
util.py
View file

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