# -*- python -*- import logging, iso8601, time, dbagg, dbagg.web from xml.sax.saxutils import escape #from twisted.web.woven.utils import doSendPage from twisted.web.woven import view # TODO: Get OPML export working, along with other methods. class ExportSourcesPage(dbagg.web.AggPage): addSlash = False templateFile = 'export_sources.opml.tmpl' def initialize(self, *args, **kwargs): self.log = logging.getLogger("%s"%self.__class__) self.conn = kwargs['conn'] self.sources = kwargs['sources'] self.items = kwargs['items'] def getChild(self, path, request): return self def wvupdate_outline(self, request, widget, model): node = widget.node node.setAttribute('xmlUrl', escape(model.source.url).replace("\r","")) node.setAttribute('htmlUrl', escape(model.source.link).replace("\r","")) node.setAttribute('title', escape(model.source.title).replace("\r","")) node.setAttribute('text', escape(model.source.title)) node.setAttribute('description', escape(model.source.title)) def wmfactory_sources(self, request): source_list = [] for curr_source in self.sources: source_list.append(dbagg.web.SourceModel(sources=self.sources, \ items=self.items, \ source=curr_source)) return source_list def renderView(self, request): return view.View.render(self, request, doneCallback=mySendPage) def mySendPage(self, d, request): page = str(d.toprettyxml()) page = page.replace('', '', 1) request.setHeader('content-length', str(len(page))) request.write(page) request.finish() return page ################################################################################ from __main__ import conn, sources, items resource = ExportSourcesPage(conn=conn, sources=sources, items=items)