diff --git a/wiki/generic/mixin.py b/wiki/generic/mixin.py index 532ce3e..e7b02ec 100644 --- a/wiki/generic/mixin.py +++ b/wiki/generic/mixin.py @@ -27,7 +27,6 @@ from BTrees.OOBTree import OOBTree from persistent.mapping import PersistentMapping from zope.app.intid import IntIds from zope.app.intid.interfaces import IIntIds -from zope.app.keyreference.interfaces import IKeyReference from zope.cachedescriptors.property import Lazy from zope import component from zope.component import adapts @@ -91,7 +90,6 @@ class WikiManager(BaseWikiManager): def renameWiki(self, wiki, newName): wiki.rename(newName) - moveKeyReference(self.getPlugin(IIntIds), wiki) def listWikis(self): for uid in self.wikiUids: @@ -161,11 +159,3 @@ class LinkManager(BaseLinkManager): def getObject(self, uid): return self.manager.getObject(uid) - -def moveKeyReference(intIds, obj): - """ Make sure entry in intIds utility is updated after a move or rename. - """ - key = IKeyReference(obj) - uid = intIds.getId(obj) - intIds.refs[uid] = key - intIds.ids[key] = uid diff --git a/wiki/interfaces.py b/wiki/interfaces.py index b655379..01515bf 100644 --- a/wiki/interfaces.py +++ b/wiki/interfaces.py @@ -26,6 +26,12 @@ from zope.interface import Interface, Attribute from zope import schema +class IIntIdProvider(Interface): + """ An object that may be addressed by an intid (a unique id + represented by an integer) that is registered in a wiki manager plugin. + """ + + class IWikiConfigInfo(Interface): """ A collection of configuration settings. """ @@ -93,7 +99,7 @@ class IWikiManager(Interface): """ -class IWiki(Interface): +class IWiki(IIntIdProvider): """ A collection of wiki pages, or - more generally - wiki components. """ @@ -139,7 +145,7 @@ class IWebResource(Interface): """ -class IWikiPage(IWebResource): +class IWikiPage(IWebResource, IIntIdProvider): """ An object representing a page of a wiki. """ diff --git a/z2/util.py b/z2/util.py new file mode 100644 index 0000000..0e2b1ee --- /dev/null +++ b/z2/util.py @@ -0,0 +1,40 @@ +# +# Copyright (c) 2010 Helmut Merz helmutm@cy55.de +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# + +""" +Zope2-related utility functions. + +$Id$ +""" + +from zope.app.keyreference.interfaces import IKeyReference + + +def moveKeyReference(intIds, obj): + """ Make sure entry in intIds utility is updated after a move or rename. + """ + key = IKeyReference(obj, None) + if key is not None: + try: + uid = intIds.getId(obj) + except KeyError: + return + if uid is not None: + intIds.refs[uid] = key + intIds.ids[key] = uid +