Exemple #1
0
    def get_attachment(self, part):
        #charset = self.get_charset(part)
        fcontent = part.get_payload(decode=True)

        if fcontent:
            content_type = part.get_content_type()
            fname = part.get_filename()
            if fname:
                try:
                    fname = fname.replace('\n', ' ').replace('\r', '')
                    fname = cstr(decode_header(fname)[0][0])
                except:
                    fname = get_random_filename(content_type=content_type)
            else:
                fname = get_random_filename(content_type=content_type)

            self.attachments.append({
                'content_type': content_type,
                'fname': fname,
                'fcontent': fcontent,
            })

            cid = (cstr(part.get("Content-Id")) or "").strip("><")
            if cid:
                self.cid_map[fname] = cid
Exemple #2
0
    def _save_file(match):
        data = match.group(1)
        data = data.split("data:")[1]
        headers, content = data.split(",")

        if "filename=" in headers:
            filename = headers.split("filename=")[-1]

            # decode filename
            if not isinstance(filename, text_type):
                filename = text_type(filename, 'utf-8')
        else:
            mtype = headers.split(";")[0]
            filename = get_random_filename(content_type=mtype)

        _file = frappe.get_doc({
            "doctype": "File",
            "file_name": filename,
            "content": content,
            "decode": True
        })
        _file.save(ignore_permissions=True)
        file_url = _file.file_url
        if not frappe.flags.has_dataurl:
            frappe.flags.has_dataurl = True

        return '<img src="{file_url}"'.format(file_url=file_url)