2017-07-21 1 views
3

Ich möchte eine Variable automatisch in eine fields.binary (email_attachment_file) von get_pdf Funktion speichern.Speichern der Variable get_pdf() in fields.binary

Meine Codes unten hier:

class example_example(models.Model): 
    email_attachment_file = fields.Binary('Data (.txt,.pdf)') 
    email_filename   = fields.Char('Filename') 

    def generate(self,etc..): 
     report_name = "report_name_template" 

     datas = { 
      'ids':[], 
      'model' : etc, 
      'form' : etc 
      'context': context 
      } 

     moddelReport = self.pool.get('report') 
     alpha = modelReport.get_pdf(cr, uid,[],report_name,None,datas,context=context) 

     #alpha = base64.decodestring(alpha) 
     #alpha = alpha.decode('unicode_escape').encode('utf-8') 

     # --------- how to save alpha variable into fields.binary 

Und es ist etwas falsch modelReport.get_pdf Funktion?

Antwort

2

Verwenden Sie encodestring() anstelle von decodestring().

report_obj = self.pool.get('report') 
data = modelReport.get_pdf(cr, uid,[],report_name,None,datas,context=context) 
self.email_attachment_file = base64.encodestring(data) 
+0

die Rückkehr von Daten% PDF-1.3 1 0 obj << /Kinder [] /Typ/Pages /Count 0 >> endobj 2 0 obj << /Produzent (Python PDF-Bibliothek \ 055 http \ 072 \ 057 \ 057pybrary \ 056net \ 057pyPdf \ 057) .. etc ..., ich kann es nicht herausfinden, um die Lösung zu finden –

+0

get_pdf den Bericht als String-Format zurückgeben so, Sie müssen es in der Binärdatei konvertieren, indem Sie base64.encodetring (data) verwenden. –