使用ZCatalogs作为导出源
项目描述
在ZCatalogs中以表格形式包含的数据通常是站点管理员经常想要导出为其他格式(如CSV)的数据。此软件包提供了将目录数据导出为各种格式的视图。
目前,仅支持将整个目录以及所有元数据/大脑/列以CSV格式导出。我计划添加对提交任意索引查询和控制导出的元数据/大脑/列的支持。
从具有一些索引、元数据/大脑/列和少量已索引对象的目录开始。
>>> self.folder.manage_addProduct['ZCatalog'].manage_addZCatalog( ... 'catalog', 'Catalog') >>> catalog = self.folder.catalog>>> catalog.addIndex('id', 'FieldIndex') >>> catalog.addIndex('title', 'FieldIndex') >>> catalog.indexes() ['id', 'title']>>> catalog.addColumn('meta_type') >>> catalog.addColumn('id')>>> self.folder.manage_addProduct['OFSP'].manage_addDTMLDocument( ... 'foo_doc', 'Foo Document') '' >>> catalog.catalog_object(self.folder.foo_doc) >>> self.folder.manage_addProduct['OFSP'].manage_addDTMLDocument( ... 'bar_doc', 'Bar Document') '' >>> catalog.catalog_object(self.folder.bar_doc)>>> [(brain.meta_type, brain.id) for brain in catalog()] [('DTML Document', 'foo_doc'), ('DTML Document', 'bar_doc')]
在浏览器中打开导出视图,指定导出格式为CSV。
>>> from Products.Five.testbrowser import Browser >>> from Testing import ZopeTestCase >>> self.setRoles(['Manager']) >>> browser = Browser() >>> browser.addHeader( ... 'Authorization', 'Basic %s:%s' % ... (ZopeTestCase.user_name, ZopeTestCase.user_password)) >>> browser.handleErrors = False >>> browser.open(catalog.absolute_url()+ ... '/export?Content-Type=text/csv') >>> browser.isHtml False >>> print browser.headers Status: 200 OK... Content-Disposition: attachment... Content-Type: text/csv... >>> print browser.contents
XXX测试浏览器无法处理response.write()的使用。我已验证在真实浏览器中此功能正常
DTML Document,foo_doc DTML Document,bar_doc
变更日志
0.1 - 2008-11-14
初始发布