Example #1
0
    def _decode_multipart_body(self):
        boundary = self._get_boundary()
        if not boundary:
            LOG.warn("Message detected as multipart but boundary "
                     "declaration was not found")
            return

        start_bnd = '\n' + '--' + boundary + '\n'
        end_bnd = '\n' + '--' + boundary + '--' + '\n'

        self.body = '\n' + self.body  # for string matching purpose

        try:
            start_index = self.body.index(start_bnd) + len(start_bnd)
        except ValueError:
            LOG.warn("Cannot find boundaries in body, "
                     "treating as single message")
            self._decode_single_body()
            return

        end_index = self.body.rfind(end_bnd)
        if end_index < 0:
            end_index = None

        content = self.body[start_index:end_index]

        parts = content.split(start_bnd)

        messages = [MessageParser(self.name, msg_content, self.headers)
                    for msg_content in parts]
        self.body = "\n".join([msg.body for msg in messages])
        for msg in messages:
            self.email_stats += msg.email_stats
            self.html_stats += msg.html_stats
Example #2
0
    def prepare(self, langs=None):
        LOG.debug("bottle request.headers.keys %s", request.headers.get("Accept-Language", None))
        if langs is None:
            langs = self.get_language_list()
            LOG.debug("web client accept langs: %s", langs)

        prepared_key = tuple(langs)
        if prepared_key in self.prepared:
            trans = self.prepared.get(prepared_key)
            if trans:
                trans.install(True)
                self.app._ = trans.gettext
            else:
                self.app._ = lambda s: s
            return

        LOG.debug("setup i18n ...")
        try:
            trans = gettext.translation(self.domain, self.locale_dir, languages=langs)
            trans.install(True)
            self.app._ = trans.gettext
            self.prepared[prepared_key] = trans
        except Exception, e:
            LOG.warn('can not install application for language "%s" with locale path as "%s"', langs, self.locale_dir)
            LOG.warn(e)
            self.app._ = lambda s: s
            self.prepared[prepared_key] = None