[Checkins]
SVN: Sandbox/darrylcousins/mars.template/src/mars/template/
Added WidgetTemplateFactory
Darryl Cousins
darryl at darrylcousins.net.nz
Wed Jul 11 20:28:07 EDT 2007
Log message for revision 77707:
Added WidgetTemplateFactory
Changed:
U Sandbox/darrylcousins/mars.template/src/mars/template/__init__.py
U Sandbox/darrylcousins/mars.template/src/mars/template/components.py
U Sandbox/darrylcousins/mars.template/src/mars/template/directive.py
U Sandbox/darrylcousins/mars.template/src/mars/template/meta.py
-=-
Modified: Sandbox/darrylcousins/mars.template/src/mars/template/__init__.py
===================================================================
--- Sandbox/darrylcousins/mars.template/src/mars/template/__init__.py 2007-07-11 21:03:24 UTC (rev 77706)
+++ Sandbox/darrylcousins/mars.template/src/mars/template/__init__.py 2007-07-12 00:28:03 UTC (rev 77707)
@@ -1,2 +1,2 @@
-from directive import macro, content_type
-from components import TemplateFactory, LayoutFactory
+from directive import macro, content_type, mode, view, field, widget
+from components import TemplateFactory, LayoutFactory, WidgetTemplateFactory
Modified: Sandbox/darrylcousins/mars.template/src/mars/template/components.py
===================================================================
--- Sandbox/darrylcousins/mars.template/src/mars/template/components.py 2007-07-11 21:03:24 UTC (rev 77706)
+++ Sandbox/darrylcousins/mars.template/src/mars/template/components.py 2007-07-12 00:28:03 UTC (rev 77707)
@@ -6,3 +6,7 @@
pass
+class WidgetTemplateFactory(object):
+ pass
+
+
Modified: Sandbox/darrylcousins/mars.template/src/mars/template/directive.py
===================================================================
--- Sandbox/darrylcousins/mars.template/src/mars/template/directive.py 2007-07-11 21:03:24 UTC (rev 77706)
+++ Sandbox/darrylcousins/mars.template/src/mars/template/directive.py 2007-07-12 00:28:03 UTC (rev 77707)
@@ -1,8 +1,17 @@
-from martian.directive import (SingleTextDirective,
+from martian.directive import (InterfaceOrClassDirective,
+ SingleTextDirective,
ClassDirectiveContext)
macro = SingleTextDirective('mars.template.macro',
ClassDirectiveContext())
content_type = SingleTextDirective('mars.template.content_type',
ClassDirectiveContext())
+mode = SingleTextDirective('mars.template.mode',
+ ClassDirectiveContext())
+view = InterfaceOrClassDirective('mars.template.view',
+ ClassDirectiveContext())
+field = InterfaceOrClassDirective('mars.template.field',
+ ClassDirectiveContext())
+widget = InterfaceOrClassDirective('mars.template.widget',
+ ClassDirectiveContext())
Modified: Sandbox/darrylcousins/mars.template/src/mars/template/meta.py
===================================================================
--- Sandbox/darrylcousins/mars.template/src/mars/template/meta.py 2007-07-11 21:03:24 UTC (rev 77706)
+++ Sandbox/darrylcousins/mars.template/src/mars/template/meta.py 2007-07-12 00:28:03 UTC (rev 77707)
@@ -6,6 +6,8 @@
from zope.publisher.interfaces.browser import IDefaultBrowserLayer
from zope.pagetemplate.interfaces import IPageTemplate
+from z3c.form.interfaces import INPUT_MODE
+from z3c.form.widget import WidgetTemplateFactory
from z3c.template.template import TemplateFactory
from z3c.template.interfaces import ILayoutTemplate
@@ -72,3 +74,49 @@
provides = ILayoutTemplate
+class WidgetTemplateFactoryGrokker(martian.ClassGrokker):
+ component_class = mars.template.WidgetTemplateFactory
+ provides = IPageTemplate
+
+ def grok(self, name, factory, context, module_info, templates):
+ view_context = util.determine_class_context(factory, context)
+ factory.module_info = module_info
+ factory_name = factory.__name__.lower()
+
+ # we need a path to the file containing the template
+ template_name = util.class_annotation(factory, 'grok.template',
+ factory_name)
+ filepath = os.path.join(os.path.dirname(module_info.path), template_name)
+ if not os.path.exists(filepath):
+ filepath = None
+ if os.path.exists(template_name):
+ filepath = template_name
+ if filepath is None:
+ raise GrokError("No template found for %s."
+ " Please use grok.template to define path to the"
+ " file containing the template"
+ % (factory.__name__),
+ factory)
+
+ provides = util.class_annotation(factory, 'grok.provides', self.provides)
+ contentType = util.class_annotation(factory,
+ 'mars.template.content_type', 'text/html')
+ view_layer = util.class_annotation(factory, 'mars.layer.layer',
+ None) or module_info.getAnnotation('mars.layer.layer',
+ None) or IDefaultBrowserLayer
+ mode = util.class_annotation(factory, 'mars.template.mode', INPUT_MODE)
+ view = util.class_annotation(factory, 'mars.template.view', None)
+ field = util.class_annotation(factory, 'mars.template.field', None)
+ widget = util.class_annotation(factory, 'mars.template.widget', None)
+
+ factory = WidgetTemplateFactory(filepath, contentType)
+ zope.interface.directlyProvides(factory, provides)
+ #print '\nname:', mode,'context:', view_context,'factory:',\
+ # factory, 'provides', provides, 'view:', view, 'field:', field, \
+ # 'widget:', widget, '\n'
+ zope.component.provideAdapter(factory,
+ adapts=(view_context, view_layer, view, field, widget),
+ provides=provides,
+ name=mode)
+ return True
+
More information about the Checkins
mailing list