[Checkins] SVN: grok/branches/ksmith_mcweekly-viewlets/src/grok/
make viewletmanager behave more like grok.View,
addition of viewlets to the standard TAL namespaces
Kevin Smith
kevin at mcweekly.com
Sat Apr 28 20:02:25 EDT 2007
Log message for revision 74887:
make viewletmanager behave more like grok.View, addition of viewlets to the standard TAL namespaces
Changed:
U grok/branches/ksmith_mcweekly-viewlets/src/grok/components.py
U grok/branches/ksmith_mcweekly-viewlets/src/grok/meta.py
-=-
Modified: grok/branches/ksmith_mcweekly-viewlets/src/grok/components.py
===================================================================
--- grok/branches/ksmith_mcweekly-viewlets/src/grok/components.py 2007-04-28 23:14:57 UTC (rev 74886)
+++ grok/branches/ksmith_mcweekly-viewlets/src/grok/components.py 2007-04-29 00:02:25 UTC (rev 74887)
@@ -518,6 +518,61 @@
class ViewletManager(ViewletManagerBase):
template = None
+ def __init__(self, context, request, view):
+ super(ViewletManager, self).__init__(context, request, view)
+ self.static = component.queryAdapter(
+ self.request,
+ interface.Interface,
+ name=self.module_info.package_dotted_name
+ )
+
+
+ def render(self):
+ """See zope.contentprovider.interfaces.IContentProvider"""
+ # Now render the view
+ if self.template:
+ #return self.template(viewlets=self.viewlets)
+ return self._render_template()
+ else:
+ return u'\n'.join([viewlet.render() for viewlet in self.viewlets])
+
+
+ @property
+ def response(self):
+ return self.request.response
+
+ def _render_template(self):
+ namespace = self.template.pt_getContext()
+ namespace['request'] = self.request
+ namespace['view'] = self
+ namespace['viewlets'] = self.viewlets
+ namespace['static'] = self.static
+ namespace['context'] = self.context
+ # XXX need to check whether we really want to put None here if missing
+ return self.template.pt_render(namespace)
+
+ def url(self, obj=None, name=None):
+ # if the first argument is a string, that's the name. There should
+ # be no second argument
+ if isinstance(obj, basestring):
+ if name is not None:
+ raise TypeError(
+ 'url() takes either obj argument, obj, string arguments, '
+ 'or string argument')
+ name = obj
+ obj = None
+
+ if name is None and obj is None:
+ # create URL to view itself
+ obj = self
+ elif name is not None and obj is None:
+ # create URL to view on context
+ obj = self.context
+ return util.url(self.request, obj, name)
+
+ def redirect(self, url):
+ return self.request.response.redirect(url)
+
class OrderedViewletManager(ViewletManager):
def sort(self, viewlets):
Modified: grok/branches/ksmith_mcweekly-viewlets/src/grok/meta.py
===================================================================
--- grok/branches/ksmith_mcweekly-viewlets/src/grok/meta.py 2007-04-28 23:14:57 UTC (rev 74886)
+++ grok/branches/ksmith_mcweekly-viewlets/src/grok/meta.py 2007-04-29 00:02:25 UTC (rev 74887)
@@ -599,6 +599,8 @@
def register(self, context, name, factory, module_info, templates):
+ factory.module_info = module_info # to make /static available
+
name = grok.util.class_annotation(factory, 'grok.name', factory.__name__.lower())
view_layer = util.class_annotation(factory, 'grok.layer',
None) or module_info.getAnnotation('grok.layer',
More information about the Checkins
mailing list