From 208f5338ac8cad0407456a099e076d3f71c405c8 Mon Sep 17 00:00:00 2001 From: helmutm Date: Fri, 25 Jul 2008 22:13:00 +0000 Subject: [PATCH] add first specialized view for external content access git-svn-id: svn://svn.cy55.de/Zope3/src/loops/trunk@2772 fd906abe-77d9-0310-91a1-e0d9ade77398 --- integrator/content/browser.py | 17 ++++++++++++++++- integrator/content/configure.zcml | 11 ++++++++++- integrator/content/view_macros.pt | 16 ++++++++++++++++ integrator/interfaces.py | 2 +- resource.py | 2 +- 5 files changed, 44 insertions(+), 4 deletions(-) create mode 100755 integrator/content/view_macros.pt diff --git a/integrator/content/browser.py b/integrator/content/browser.py index ef513e8..741c437 100644 --- a/integrator/content/browser.py +++ b/integrator/content/browser.py @@ -23,6 +23,7 @@ $Id$ """ from zope import interface, component +from zope.app.pagetemplate import ViewPageTemplateFile from zope.app.publisher.browser import getDefaultViewName from zope.cachedescriptors.property import Lazy @@ -31,7 +32,10 @@ from loops.browser.node import NodeView from loops.common import adapted -class ExternalAccessView(NodeView): +view_macros = ViewPageTemplateFile('view_macros.pt') + + +class ExternalAccessRenderer(NodeView): @Lazy def adapted(self): @@ -45,3 +49,14 @@ class ExternalAccessView(NodeView): def publishTraverse(self, request, name): return self.adapted()[name] + + +class FlashVideo(ConceptView): + + @Lazy + def macro(self): + return view_macros.macros['flashvideo'] + + @Lazy + def startName(self): + return self.adapted.address + '.html' diff --git a/integrator/content/configure.zcml b/integrator/content/configure.zcml index 0e6f7f9..1818b6b 100644 --- a/integrator/content/configure.zcml +++ b/integrator/content/configure.zcml @@ -40,11 +40,20 @@ + + diff --git a/integrator/content/view_macros.pt b/integrator/content/view_macros.pt new file mode 100755 index 0000000..6bb1136 --- /dev/null +++ b/integrator/content/view_macros.pt @@ -0,0 +1,16 @@ + + + +
+

+ Title +

+ + + +
diff --git a/integrator/interfaces.py b/integrator/interfaces.py index 8421cb0..97410da 100644 --- a/integrator/interfaces.py +++ b/integrator/interfaces.py @@ -57,7 +57,7 @@ class IExternalCollection(IConceptSchema): title=_(u'Base address'), description=_(u'A base path or URL for accessing this collection ' 'on the external system'), - required=False) + required=True) address = schema.TextLine( title=_(u'Relative address'), description=_(u'Optional second (local) part of the ' diff --git a/resource.py b/resource.py index ca711a6..1c05fc9 100644 --- a/resource.py +++ b/resource.py @@ -379,7 +379,7 @@ class ExternalFileAdapter(FileAdapter): self.storageName = storageName def getData(self): - if self.storageName == 'unknown': # object not set up yet + if self.storageName in ('unknown', None): # object not set up yet return '' storage = component.getUtility(IExternalStorage, name=self.storageName) return storage.getData(self.externalAddress, params=self.storageParams)