From 5c4b7fd73094d1bfc99098682a4dd55f6a71e032 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Wed, 3 Jan 2024 13:00:36 +0100 Subject: [PATCH] use new IUid interface for showing the presence of the uid property --- organize/tracking/storage/compat.py | 3 +++ util.py | 13 +++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/organize/tracking/storage/compat.py b/organize/tracking/storage/compat.py index 20cb963..d84b887 100644 --- a/organize/tracking/storage/compat.py +++ b/organize/tracking/storage/compat.py @@ -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 diff --git a/util.py b/util.py index edb1476..0ee7b5f 100644 --- a/util.py +++ b/util.py @@ -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)