def __init__(self, header=None, show_header=True, collections=None, tags=_(u'Tags'), folders=_(u'Folders')): self.collections = collections self.header = header self.show_header = show_header self.tags = tags self.folders = folders
def batch(self): form = self.request.form b_start = int(form.get('b_start', '0')) b_size = int(form.get('b_size', '10')) b_orphan = 1 try: return Batch(self.results(b_start=b_start, b_size=b_size), b_size, start=b_start, orphan=b_orphan) except: message = _(u'input_date_format', default=u'Input date format: YEAR-MONTH-DAY like 2013-01-01.') IStatusMessage(self.request).addStatusMessage(message, type="info") url = self.context.restrictedTraverse('@@plone_context_state').current_base_url() self.request.response.redirect(url)
def __call__(self): super(SearchEventResultsView, self).__call__() if self.request.form.get("form.buttons.Export", None) is not None: defaults_name = [ self.context.translate(PloneMessageFactory(u"Title")), self.context.translate(_(u"Date")), self.context.translate(PloneMessageFactory(u"Description")), self.context.translate(PloneMessageFactory(u"Text")), self.context.translate(PloneMessageFactory(u"URL")), ] extras = ["location", "attendees", "eventUrl", "contactName", "contactEmail", "contactPhone", "subject"] extras_name = [ self.context.translate(ATCTMessageFactory(ATEvent.schema.get(extra).widget.label)) for extra in extras ] plone = getMultiAdapter((self.context, self.request), name="plone") encoding = plone.site_encoding() headers = tuple([header.encode(encoding) for header in (defaults_name + extras_name)]) out = StringIO() writer = csv.writer(out, delimiter="|", quoting=csv.QUOTE_MINIMAL) writer.writerow(headers) adapter = IAdapter(self.context) for item in getMultiAdapter((self.context, self.request), ISearchEventResults)(b_size=None): values = [ item.Title(), adapter.event_datetime(item).encode(encoding), item.Description(), IItemText(item)(), item.getURL(), ] obj = item.getObject() for extra in extras: if extra == "attendees" or extra == "subject": value = u", ".join(getattr(obj, extra)).encode(encoding) else: value = getattr(obj, extra).encode(encoding) values.append(value) writer.writerow(tuple(values)) filename = "search-event-results-{}.csv".format(datetime.now().isoformat()) cd = 'attachment; filename="{}"'.format(filename) self.request.response.setHeader("Content-Type", "text/csv") self.request.response.setHeader("Content-Disposition", cd) return out.getvalue() else: return self.template()