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)
|
targetPageName, params = targetPageName.split('?', 1)
|
||||||
if '#' in targetPageName:
|
if '#' in targetPageName:
|
||||||
targetPageName, fragment = targetPageName.split('#', 1)
|
targetPageName, fragment = targetPageName.split('#', 1)
|
||||||
existing = iter(lm.query(source=self.source, name=self.targetName))
|
#existing = iter(lm.query(source=self.source, name=self.targetName))
|
||||||
if existing:
|
for link in lm.query(source=self.source, name=self.targetName):
|
||||||
link = existing.next()
|
#link = existing.next()
|
||||||
if link.target is not None:
|
if link.target is not None:
|
||||||
target = manager.getObject(link.target)
|
target = manager.getObject(link.target)
|
||||||
else:
|
else:
|
||||||
target = None
|
target = None
|
||||||
|
break
|
||||||
else:
|
else:
|
||||||
target = wiki.getPage(targetPageName)
|
target = wiki.getPage(targetPageName)
|
||||||
link = lm.createLink(name=self.targetName,
|
link = lm.createLink(name=self.targetName,
|
||||||
|
|
|
@ -22,10 +22,6 @@ Wiki implementation = mixin classes for Zope2 content objects.
|
||||||
$Id$
|
$Id$
|
||||||
"""
|
"""
|
||||||
|
|
||||||
try:
|
|
||||||
from Acquisition import aq_inner, aq_parent
|
|
||||||
except ImportError:
|
|
||||||
pass
|
|
||||||
from BTrees.IOBTree import IOTreeSet
|
from BTrees.IOBTree import IOTreeSet
|
||||||
from BTrees.OOBTree import OOBTree
|
from BTrees.OOBTree import OOBTree
|
||||||
from persistent.mapping import PersistentMapping
|
from persistent.mapping import PersistentMapping
|
||||||
|
@ -117,22 +113,23 @@ class Wiki(BaseWiki):
|
||||||
return self.getId()
|
return self.getId()
|
||||||
|
|
||||||
def getPages(self):
|
def getPages(self):
|
||||||
# TODO: restrict to wiki page objects; use generic access methods
|
# 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.objectItems())
|
||||||
|
return dict((k, v) for k, v in self.getItems())
|
||||||
|
|
||||||
def createPage(self, name, title, text=u''):
|
def createPage(self, name, title, text=u''):
|
||||||
# TODO: delegate to generic folder
|
#self._setObject(name, self.pageFactory(name))
|
||||||
# page = self[name] = self.pageFactory(name)
|
#page = getattr(self, name)
|
||||||
self._setObject(name, self.pageFactory(name))
|
self[name] = self.pageFactory(name)
|
||||||
page = getattr(self, name)
|
page = self[name]
|
||||||
page.title = title
|
page.title = title
|
||||||
page.text = text
|
page.text = text
|
||||||
# TODO: notify(ObjectAddedEvent())
|
# notify(ObjectAddedEvent()): called by persistent mixin class
|
||||||
return page
|
return page
|
||||||
|
|
||||||
def getManager(self):
|
def getManager(self):
|
||||||
# TODO: fetch tool/utility in a generic way
|
# provide in subclass
|
||||||
return self.portal_wikimanager
|
raise NotImplementedError
|
||||||
|
|
||||||
|
|
||||||
class WikiPage(BaseWikiPage):
|
class WikiPage(BaseWikiPage):
|
||||||
|
@ -144,9 +141,7 @@ class WikiPage(BaseWikiPage):
|
||||||
text = property(getText, setText)
|
text = property(getText, setText)
|
||||||
|
|
||||||
def getWiki(self):
|
def getWiki(self):
|
||||||
# TODO: fetch wiki in a generic way
|
return self.getParent()
|
||||||
# return self.getParent()
|
|
||||||
return aq_parent(aq_inner(self))
|
|
||||||
|
|
||||||
|
|
||||||
class LinkManager(BaseLinkManager):
|
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
|
# 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
|
# 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
|
# 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
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
@ -22,6 +22,7 @@ Base classes.
|
||||||
$Id$
|
$Id$
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
from Acquisition import aq_inner, aq_parent
|
||||||
from persistent.mapping import PersistentMapping
|
from persistent.mapping import PersistentMapping
|
||||||
from zope.app.container.interfaces import IObjectAddedEvent
|
from zope.app.container.interfaces import IObjectAddedEvent
|
||||||
from zope import component
|
from zope import component
|
||||||
|
@ -60,6 +61,9 @@ class GenericObject(object):
|
||||||
self.__generic_attributes__[attr] = value
|
self.__generic_attributes__[attr] = value
|
||||||
return value
|
return value
|
||||||
|
|
||||||
|
def getParent(self):
|
||||||
|
return aq_parent(aq_inner(self))
|
||||||
|
|
||||||
|
|
||||||
class GenericFolder(GenericObject):
|
class GenericFolder(GenericObject):
|
||||||
""" Provide generic (i.e. dictionary-like) folder access to Zope2's
|
""" Provide generic (i.e. dictionary-like) folder access to Zope2's
|
||||||
|
@ -68,6 +72,15 @@ class GenericFolder(GenericObject):
|
||||||
|
|
||||||
implements(IGenericFolder)
|
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)
|
@component.adapter(IGeneric, IObjectAddedEvent)
|
||||||
def setup(obj, event):
|
def setup(obj, event):
|
||||||
|
|
Loading…
Add table
Reference in a new issue