move update of keyreference upon renaming of an object to separate module that will be called by an event handler; mark objects that may be addressed by an intid with an interface
git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3948 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
e50ba0a780
commit
f9ded2be00
3 changed files with 48 additions and 12 deletions
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
"""
|
||||
|
||||
|
|
40
z2/util.py
Normal file
40
z2/util.py
Normal file
|
@ -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
|
||||
|
Loading…
Add table
Reference in a new issue