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 persistent.mapping import PersistentMapping
|
||||||
from zope.app.intid import IntIds
|
from zope.app.intid import IntIds
|
||||||
from zope.app.intid.interfaces import IIntIds
|
from zope.app.intid.interfaces import IIntIds
|
||||||
from zope.app.keyreference.interfaces import IKeyReference
|
|
||||||
from zope.cachedescriptors.property import Lazy
|
from zope.cachedescriptors.property import Lazy
|
||||||
from zope import component
|
from zope import component
|
||||||
from zope.component import adapts
|
from zope.component import adapts
|
||||||
|
@ -91,7 +90,6 @@ class WikiManager(BaseWikiManager):
|
||||||
|
|
||||||
def renameWiki(self, wiki, newName):
|
def renameWiki(self, wiki, newName):
|
||||||
wiki.rename(newName)
|
wiki.rename(newName)
|
||||||
moveKeyReference(self.getPlugin(IIntIds), wiki)
|
|
||||||
|
|
||||||
def listWikis(self):
|
def listWikis(self):
|
||||||
for uid in self.wikiUids:
|
for uid in self.wikiUids:
|
||||||
|
@ -161,11 +159,3 @@ class LinkManager(BaseLinkManager):
|
||||||
def getObject(self, uid):
|
def getObject(self, uid):
|
||||||
return self.manager.getObject(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
|
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):
|
class IWikiConfigInfo(Interface):
|
||||||
""" A collection of configuration settings.
|
""" 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.
|
""" 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.
|
""" 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