from zope.interface import implements from zope.component import adapts from zope.publisher.interfaces import IPublishTraverse from zope.publisher.http import IHTTPRequest from ZPublisher.BaseRequest import DefaultPublishTraverse from zope.publisher.interfaces import NotFound from interfaces import ImFolio class KMLTraverser(object): """ KML export of onto data """ adapts(ImFolio, IHTTPRequest) implements(IPublishTraverse) def __init__(self, context, request): self.context = context self.default = DefaultPublishTraverse(context,request) def publishTraverse(self, request, name): try: obj = self.default.publishTraverse(request, name) except (NotFound, KeyError, AttributeError), e: if name == 'kml': obj = self.context.kml_generator(request, name) else: raise NotFound(None, name, request) return obj