Skip to Content
Menu
This question has been flagged
2 Replies
13298 Views

I'm trying to create a XML file and add it as a attachment to the record. It generates the xml as a string and saves it into 'ir.attachment' but I don't know how to add it to the models record so I could download it from the custom modules form view.

    @api.model

def attach_xml_file(self, docids):

import base64

xml_string = self.generate_xml()

file_name = 'myfile-1.xml'

attach_name = file_name

attach_id = self.env['ir.attachment'].create({'name': attach_name,

'datas': base64.encodestring(xml_string),

'datas_fname': file_name,

'res_model': 'this.model.name',

'res_id': docids[0]})

Do I have to inherit the ir.attchment in my custom model? How can I attach the file to the specific instance of the model? Is there a odoo base addon that does this and I could use it as example? 



Avatar
Discard
Author Best Answer

OK did it. used etree from lxml to create the file and convert it to string with etree.tostring() and then encoded the string with base64 and passed it to a field.

self.xml_doc = base64.encodestring(etree.tostring(xml_root, pretty_print=False, encoding='utf8'))
Avatar
Discard
Best Answer

Hello Samo Arko

You can Try This, 

attachment = {'name': 'Name of Attachmnet',    
              'datas': base64.encodestring('Data'),
             'datas_fname': 'File Name',
             'res_model': 'Model Name',
             'res_id': 'res_id'}

self.env['ir.attachment'].create(attachment)
Avatar
Discard
Related Posts Replies Views Activity
2
Nov 24
25061
2
May 24
5510
3
Mar 24
4960
0
Mar 24
261
3
Feb 24
11413