コード例 #1
0
 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
コード例 #2
0
 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)
コード例 #3
0
    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()