[Zope-Checkins] SVN: Zope/trunk/src/Products/Five/browser/metaconfigure.py - more syncing with zope.browserpage
Yvo Schubbe
cvs-admin at zope.org
Wed Jul 11 19:25:06 UTC 2012
Log message for revision 127331:
- more syncing with zope.browserpage
Changed:
U Zope/trunk/src/Products/Five/browser/metaconfigure.py
-=-
Modified: Zope/trunk/src/Products/Five/browser/metaconfigure.py
===================================================================
--- Zope/trunk/src/Products/Five/browser/metaconfigure.py 2012-07-11 19:11:56 UTC (rev 127330)
+++ Zope/trunk/src/Products/Five/browser/metaconfigure.py 2012-07-11 19:25:03 UTC (rev 127331)
@@ -18,14 +18,17 @@
"""
import os
+import sys
from inspect import ismethod
from zope.component import queryMultiAdapter
from zope.component.interface import provideInterface
from zope.component.zcml import handler
from zope.configuration.exceptions import ConfigurationError
+from zope.interface import classImplements
from zope.interface import Interface
from zope.publisher.interfaces import NotFound
+from zope.publisher.interfaces.browser import IBrowserPublisher
from zope.publisher.interfaces.browser import IBrowserRequest
from zope.publisher.interfaces.browser import IDefaultBrowserLayer
from zope.security.zcml import Permission
@@ -122,14 +125,17 @@
# class and template
new_class = SimpleViewClass(template, bases=(class_, ), name=name)
else:
- cdict = getSecurityInfo(class_)
if not hasattr(class_, 'browserDefault'):
- cdict.update({
+ cdict = {
'browserDefault':
lambda self, request: (getattr(self, attribute), ())
- })
+ }
+ else:
+ cdict = {}
+
cdict['__name__'] = name
cdict['__page_attribute__'] = attribute
+ cdict.update(getSecurityInfo(class_))
new_class = type(class_.__name__, (class_, simple,), cdict)
if attribute != "__call__":
@@ -146,6 +152,9 @@
func = func.im_func
func.__doc__ = "Stub docstring to make ZPublisher work"
+ if hasattr(class_, '__implements__'):
+ classImplements(new_class, IBrowserPublisher)
+
else:
# template
new_class = SimpleViewClass(template, name=name)
@@ -444,16 +453,17 @@
# Original version: zope.browserpage.simpleviewclass.SimpleViewClass
def SimpleViewClass(src, offering=None, used_for=None, bases=(), name=u''):
- if bases:
- cdict = getSecurityInfo(bases[0])
- else:
- cdict = {}
- cdict.update({'index': ViewPageTemplateFile(src, offering),
- '__name__': name})
+ if offering is None:
+ offering = sys._getframe(1).f_globals
bases += (ViewMixinForTemplates,)
- class_ = type("SimpleViewClass from %s" % src, bases, cdict)
+ cdict = {'index': ViewPageTemplateFile(src, offering),
+ '__name__': name}
+ if bases:
+ cdict.update(getSecurityInfo(bases[0]))
+ class_ = type("SimpleViewClass from %s" % src, bases,
+ cdict)
if used_for is not None:
class_.__used_for__ = used_for
More information about the Zope-Checkins
mailing list