Plone: pasado, presente y futuro
View more presentations from Héctor Velarde
* { -moz-user-select: auto !important }
* { -moz-user-focus: normal !important }
<fieldset id="folder-listing">
<legend i18n:translate="">Contents</legend>
<tal:block define="listing_macro context/folder_listing/macros/listing">
<metal:use_macro use-macro="listing_macro" />
</tal:block>
</fieldset>
<fieldset id="folder-listing">
<legend i18n:translate="">Contents</legend>
<tal:block define="listing_macro context/folder_listing/macros/listing;
contentFilter python:{'portal_type': ['File']};
limit_display python:5">
<metal:use_macro use-macro="listing_macro" />
</tal:block>
</fieldset>
import logging
import sys
logger = logging.getLogger('YOUR LOGGER NAME')
logger.setLevel(logging.DEBUG)
handler = logging.StreamHandler(sys.stdout)
formatter = logging.Formatter("%(asctime)s %(levelname)s %(name)s %(message)s")
handler.setFormatter(formatter)
logger.addHandler(handler)
import xlrd
from zope.interface import classProvides
from zope.interface import implements
from collective.transmogrifier.interfaces import ISection
from collective.transmogrifier.interfaces import ISectionBlueprint
from collective.transmogrifier.utils import resolvePackageReferenceOrFile
class ExcelReader:
def __init__(self, f, s, *args, **kwds):
self.fieldnames = None
book = xlrd.open_workbook(f)
sheet = book.sheet_by_name(s)
self.reader = list()
for row in range(0, sheet.nrows):
self.reader.append([sheet.cell_value(row, col)
for col in range(0, sheet.ncols)])
self.reader = iter(self.reader)
def __iter__(self):
return self
def next(self):
row = self.reader.next()
if self.fieldnames is None:
self.fieldnames = row
row = self.reader.next()
return dict(zip(self.fieldnames, row))
class ExcelSource(object):
classProvides(ISectionBlueprint)
implements(ISection)
def __init__(self, transmogrifier, name, options, previous):
self.previous = previous
filename = resolvePackageReferenceOrFile(options['filename'])
sheet = options['sheet']
self.reader = ExcelReader(filename, sheet)
def __iter__(self):
for item in self.previous:
yield item
for item in self.reader:
yield item
[excelsource] blueprint = your.package.excelsource filename = excel_book sheet = sheet_inside_the_book
<utility
component="your.package.ExcelSource"
name="your.package.excelsource"
/>