provide generic implementation of folder methods for Zope 2
git-svn-id: svn://svn.cy55.de/Zope3/src/cybertools/trunk@3851 fd906abe-77d9-0310-91a1-e0d9ade77398
This commit is contained in:
parent
6625abe012
commit
973c533355
4 changed files with 30 additions and 21 deletions
|
@ -54,13 +54,14 @@ class LinkProcessor(object):
|
|||
targetPageName, params = targetPageName.split('?', 1)
|
||||
if '#' in targetPageName:
|
||||
targetPageName, fragment = targetPageName.split('#', 1)
|
||||
existing = iter(lm.query(source=self.source, name=self.targetName))
|
||||
if existing:
|
||||
link = existing.next()
|
||||
#existing = iter(lm.query(source=self.source, name=self.targetName))
|
||||
for link in lm.query(source=self.source, name=self.targetName):
|
||||
#link = existing.next()
|
||||
if link.target is not None:
|
||||
target = manager.getObject(link.target)
|
||||
else:
|
||||
target = None
|
||||
break
|
||||
else:
|
||||
target = wiki.getPage(targetPageName)
|
||||
link = lm.createLink(name=self.targetName,
|
||||
|
|
|
@ -22,10 +22,6 @@ Wiki implementation = mixin classes for Zope2 content objects.
|
|||
$Id$
|
||||
"""
|
||||
|
||||
try:
|
||||
from Acquisition import aq_inner, aq_parent
|
||||
except ImportError:
|
||||
pass
|
||||
from BTrees.IOBTree import IOTreeSet
|
||||
from BTrees.OOBTree import OOBTree
|
||||
from persistent.mapping import PersistentMapping
|
||||
|
@ -117,22 +113,23 @@ class Wiki(BaseWiki):
|
|||
return self.getId()
|
||||
|
||||
def getPages(self):
|
||||
# TODO: restrict to wiki page objects; use generic access methods
|
||||
return dict((k, v) for k, v in self.objectItems())
|
||||
# TODO: restrict to wiki page objects
|
||||
#return dict((k, v) for k, v in self.objectItems())
|
||||
return dict((k, v) for k, v in self.getItems())
|
||||
|
||||
def createPage(self, name, title, text=u''):
|
||||
# TODO: delegate to generic folder
|
||||
# page = self[name] = self.pageFactory(name)
|
||||
self._setObject(name, self.pageFactory(name))
|
||||
page = getattr(self, name)
|
||||
#self._setObject(name, self.pageFactory(name))
|
||||
#page = getattr(self, name)
|
||||
self[name] = self.pageFactory(name)
|
||||
page = self[name]
|
||||
page.title = title
|
||||
page.text = text
|
||||
# TODO: notify(ObjectAddedEvent())
|
||||
# notify(ObjectAddedEvent()): called by persistent mixin class
|
||||
return page
|
||||
|
||||
def getManager(self):
|
||||
# TODO: fetch tool/utility in a generic way
|
||||
return self.portal_wikimanager
|
||||
# provide in subclass
|
||||
raise NotImplementedError
|
||||
|
||||
|
||||
class WikiPage(BaseWikiPage):
|
||||
|
@ -144,9 +141,7 @@ class WikiPage(BaseWikiPage):
|
|||
text = property(getText, setText)
|
||||
|
||||
def getWiki(self):
|
||||
# TODO: fetch wiki in a generic way
|
||||
# return self.getParent()
|
||||
return aq_parent(aq_inner(self))
|
||||
return self.getParent()
|
||||
|
||||
|
||||
class LinkManager(BaseLinkManager):
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2009 Helmut Merz helmutm@cy55.de
|
||||
# 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
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
#
|
||||
# Copyright (c) 2009 Helmut Merz helmutm@cy55.de
|
||||
# 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
|
||||
|
@ -22,6 +22,7 @@ Base classes.
|
|||
$Id$
|
||||
"""
|
||||
|
||||
from Acquisition import aq_inner, aq_parent
|
||||
from persistent.mapping import PersistentMapping
|
||||
from zope.app.container.interfaces import IObjectAddedEvent
|
||||
from zope import component
|
||||
|
@ -60,6 +61,9 @@ class GenericObject(object):
|
|||
self.__generic_attributes__[attr] = value
|
||||
return value
|
||||
|
||||
def getParent(self):
|
||||
return aq_parent(aq_inner(self))
|
||||
|
||||
|
||||
class GenericFolder(GenericObject):
|
||||
""" Provide generic (i.e. dictionary-like) folder access to Zope2's
|
||||
|
@ -68,6 +72,15 @@ class GenericFolder(GenericObject):
|
|||
|
||||
implements(IGenericFolder)
|
||||
|
||||
def __getitem__(self, name):
|
||||
return getattr(self, name)
|
||||
|
||||
def __setitem__(self, name, value):
|
||||
self._setObject(name, value)
|
||||
|
||||
def getItems(self, types=None):
|
||||
return self.objectItems(types)
|
||||
|
||||
|
||||
@component.adapter(IGeneric, IObjectAddedEvent)
|
||||
def setup(obj, event):
|
||||
|
|
Loading…
Add table
Reference in a new issue