[Zope-Checkins]
SVN: Zope/trunk/lib/python/Products/Five/browser/adding.py
- resynced Products.Five.browser.adding with
zope.app.container.browser.adding
Yvo Schubbe
y.2008 at wcm-solutions.de
Tue Apr 15 07:23:08 EDT 2008
Log message for revision 85374:
- resynced Products.Five.browser.adding with zope.app.container.browser.adding
Changed:
U Zope/trunk/lib/python/Products/Five/browser/adding.py
-=-
Modified: Zope/trunk/lib/python/Products/Five/browser/adding.py
===================================================================
--- Zope/trunk/lib/python/Products/Five/browser/adding.py 2008-04-15 11:22:30 UTC (rev 85373)
+++ Zope/trunk/lib/python/Products/Five/browser/adding.py 2008-04-15 11:23:08 UTC (rev 85374)
@@ -16,23 +16,29 @@
The Adding View is used to add new objects to a container. It is sort of a
factory screen.
+(original: zope.app.container.browser.adding)
+
$Id$
"""
+
__docformat__ = 'restructuredtext'
-from warnings import warn
-
-import zope.component
-from zope.interface import implements
-from zope.publisher.interfaces import IPublishTraverse
+from zope.component import getMultiAdapter
+from zope.component import getUtility
+from zope.component import queryMultiAdapter
+from zope.component import queryUtility
from zope.component.interfaces import IFactory
from zope.event import notify
-from zope.exceptions import UserError
+from zope.interface import implements
+from zope.publisher.interfaces import IPublishTraverse
+from zope.traversing.browser.absoluteurl import absoluteURL
+from zope.exceptions.interfaces import UserError
from zope.lifecycleevent import ObjectCreatedEvent
+from zope.app.container.constraints import checkFactory, checkObject
+from zope.app.container.i18n import ZopeMessageFactory as _
from zope.app.container.interfaces import IAdding, INameChooser
from zope.app.container.interfaces import IContainerNamesContainer
-from zope.app.container.constraints import checkFactory, checkObject
from zope.app.publisher.browser.menu import getMenu
from Acquisition import Implicit
@@ -40,10 +46,10 @@
from OFS.SimpleItem import SimpleItem
from Products.Five import BrowserView
+from Products.Five.browser.pagetemplatefile import ViewPageTemplateFile
-from Products.Five.browser.pagetemplatefile import ZopeTwoPageTemplateFile
-class BasicAdding(Implicit, BrowserView):
+class Adding(Implicit, BrowserView):
implements(IAdding, IPublishTraverse)
def add(self, content):
@@ -57,7 +63,7 @@
checkObject(container, name, content)
if IContainerNamesContainer.providedBy(container):
- # The container picks it's own names.
+ # The container picks its own names.
# We need to ask it to pick one.
name = chooser.chooseName(self.contentName or '', content)
else:
@@ -72,7 +78,7 @@
# Invoke the name chooser even when we have a
# name. It'll do useful things with it like converting
# the incoming unicode to an ASCII string.
- name = chooser.chooseName(name, container)
+ name = chooser.chooseName(name, content)
content.id = name
container._setObject(name, content)
@@ -86,85 +92,73 @@
# XXX this is definitely not right for all or even most uses
# of Five, but can be overridden by an AddView subclass, using
# the class attribute of a zcml:addform directive
- return str(zope.component.getMultiAdapter(
- (self.context, self.request), name=u"absolute_url")) + '/manage_main'
+ return absoluteURL(self.context, self.request) + '/manage_main'
# set in BrowserView.__init__
- request = None
+ request = None
context = None
- def renderAddButton(self):
- warn("The renderAddButton method is deprecated, use nameAllowed",
- DeprecationWarning, 2)
-
-
def publishTraverse(self, request, name):
- """See zope.app.container.interfaces.IAdding"""
+ """See zope.publisher.interfaces.IPublishTraverse"""
if '=' in name:
view_name, content_name = name.split("=", 1)
self.contentName = content_name
if view_name.startswith('@@'):
view_name = view_name[2:]
- return zope.component.getMultiAdapter((self, request), name=view_name)
+ return getMultiAdapter((self, request), name=view_name)
if name.startswith('@@'):
view_name = name[2:]
else:
view_name = name
- view = zope.component.queryMultiAdapter((self, request), name=view_name)
+ view = queryMultiAdapter((self, request), name=view_name)
if view is not None:
return view
- factory = zope.component.queryUtility(IFactory, name)
+ factory = queryUtility(IFactory, name)
if factory is None:
- return super(BasicAdding, self).publishTraverse(request, name)
+ return super(Adding, self).publishTraverse(request, name)
return factory
def action(self, type_name='', id=''):
if not type_name:
- raise UserError("You must select the type of object to add.")
+ raise UserError(_(u"You must select the type of object to add."))
if type_name.startswith('@@'):
type_name = type_name[2:]
if '/' in type_name:
- view_name = type_name.split('/', 1)[0]
+ view_name = type_name.split('/', 1)[0]
else:
view_name = type_name
- if (zope.component.queryMultiAdapter((self, self.request), name=view_name)
- is not None):
+ if queryMultiAdapter((self, self.request),
+ name=view_name) is not None:
url = "%s/%s=%s" % (
- zope.component.getMultiAdapter((self, self.request), name=u"absolute_url"),
- type_name, id)
+ absoluteURL(self, self.request), type_name, id)
self.request.response.redirect(url)
return
if not self.contentName:
self.contentName = id
- factory = zope.component.getUtility(IFactory, type_name)
+ factory = getUtility(IFactory, type_name)
content = factory()
notify(ObjectCreatedEvent(content))
+
self.add(content)
self.request.response.redirect(self.nextURL())
- def namesAccepted(self):
- return not IContainerNamesContainer.providedBy(self.context)
-
def nameAllowed(self):
"""Return whether names can be input by the user."""
return not IContainerNamesContainer.providedBy(self.context)
-
-class Adding(BasicAdding):
-
menu_id = None
- index = ZopeTwoPageTemplateFile("adding.pt")
+ index = ViewPageTemplateFile("adding.pt")
def addingInfo(self):
"""Return menu data.
@@ -181,7 +175,7 @@
if extra:
factory = extra.get('factory')
if factory:
- factory = zope.component.getUtility(IFactory, factory)
+ factory = getUtility(IFactory, factory)
if not checkFactory(container, None, factory):
continue
elif item['extra']['factory'] != item['action']:
@@ -203,10 +197,12 @@
return True
return False
+
class ContentAdding(Adding, SimpleItem):
menu_id = "add_content"
+
class ObjectManagerNameChooser:
"""A name chooser for a Zope object manager.
"""
More information about the Zope-Checkins
mailing list