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
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