loops/expert/browser/base.py
helmutm 4d05fa9ab3 bug fix: delete all objects in list...
git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2945 fd906abe-77d9-0310-91a1-e0d9ade77398
2008-10-26 14:58:59 +00:00

100 lines
3 KiB
Python

#
# Copyright (c) 2008 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
#
"""
Definition of basic view classes and other browser related stuff for the
loops.expert package.
$Id$
"""
from zope import interface, component
from zope.app.pagetemplate import ViewPageTemplateFile
from zope.cachedescriptors.property import Lazy
from zope.traversing.api import getName, getParent
from cybertools.browser.form import FormController
from loops.browser.common import BaseView, concept_macros
from loops.browser.concept import ConceptView
from loops.browser.resource import ResourceView, ResourceRelationView
from loops.common import adapted
from loops import util
from loops.util import _
queryTemplate = ViewPageTemplateFile('query.pt')
#class BaseQueryView(ConceptView):
class BaseQueryView(BaseView):
template = queryTemplate
childViewFactory = ResourceRelationView
showCheckboxes = True
form_action = 'execute_query_action'
@Lazy
def macro(self):
return self.template.macros['query']
@property
def infos(self):
return concept_macros.macros
@property
def listings(self):
return concept_macros.macros
@Lazy
def targetPredicate(self):
return self.conceptManager['querytarget']
@Lazy
def defaultPredicate(self):
return self.conceptManager.getDefaultPredicate()
@Lazy
def targets(self):
return self.context.getChildren([self.targetPredicate])
def queryInfo(self):
targetNames = ', '.join(["'%s'" % t.title for t in self.targets])
return _(u'Selection using: $targets',
mapping=dict(targets=targetNames))
def results(self):
for t in self.targets:
for r in t.getResourceRelations([self.defaultPredicate]):
yield self.childViewFactory(r, self.request, contextIsSecond=True)
class ActionExecutor(FormController):
def update(self):
form = self.request.form
actions = [k for k in form.keys() if k.startswith('action.')]
if actions:
uids = form.get('selection', [])
action = actions[0]
if action == 'action.delete':
print '*** delete', uids
for uid in uids:
obj = util.getObjectForUid(uid)
parent = getParent(obj)
del parent[getName(obj)]
return True