diff --git a/openerp/addons/base/res/partner/edi_partner.py b/openerp/addons/base/res/partner/edi_partner.py index 5d2cfa7d2df..7a4127315f8 100644 --- a/openerp/addons/base/res/partner/edi_partner.py +++ b/openerp/addons/base/res/partner/edi_partner.py @@ -23,7 +23,7 @@ from base.ir import ir_edi class res_partner(osv.osv, ir_edi.edi): _inherit = "res.partner" - + res_partner() class res_partner_address(osv.osv, ir_edi.edi): diff --git a/openerp/addons/base/res/partner/partner.py b/openerp/addons/base/res/partner/partner.py index a5ef8bfa49c..de8fce3c5e9 100644 --- a/openerp/addons/base/res/partner/partner.py +++ b/openerp/addons/base/res/partner/partner.py @@ -111,6 +111,7 @@ class res_partner(osv.osv): _order = "name" _columns = { 'name': fields.char('Name', size=128, required=True, select=True), + 'opt_out':fields.boolean('Opt-out'), 'date': fields.date('Date', select=1), 'title': fields.many2one('res.partner.title','Partner Firm'), 'parent_id': fields.many2one('res.partner','Parent Partner'), @@ -149,6 +150,7 @@ class res_partner(osv.osv): 'customer': lambda *a: 1, 'category_id': _default_category, 'company_id': lambda s,cr,uid,c: s.pool.get('res.company')._company_default_get(cr, uid, 'res.partner', context=c), + 'opt_out' : False } def copy(self, cr, uid, id, default={}, context={}): name = self.read(cr, uid, [id], ['name'])[0]['name'] diff --git a/openerp/addons/base/res/partner/partner_view.xml b/openerp/addons/base/res/partner/partner_view.xml index 6d00bc3c61b..b715a193353 100644 --- a/openerp/addons/base/res/partner/partner_view.xml +++ b/openerp/addons/base/res/partner/partner_view.xml @@ -261,6 +261,7 @@ + diff --git a/openerp/addons/base/test/test_edi_documents.yml b/openerp/addons/base/test/test_edi_documents.yml index 678a4955f37..85a350bf3a9 100644 --- a/openerp/addons/base/test/test_edi_documents.yml +++ b/openerp/addons/base/test/test_edi_documents.yml @@ -3,7 +3,7 @@ - !record {model: res.partner, id: res_partner_test33}: name: Ivan - title: 5 + title: base.res_partner_title_sir website: www.openerp.com address: - type: default @@ -15,23 +15,34 @@ supplier: False customer: True company_id: base.main_company + - - Tesing of EDI functionality + I am creating one Document to be stored in ". - + !record {model: 'ir.attachment', id: document_4}: + name : "My partner document" + res_model : res.partner + type : binary + +- + Attach a pdf file in "My partner document" +- + !python {model: 'ir.attachment'}: | + import addons + import base64 + pdf_file = open(addons.get_module_resource('base','test', 'partner.pdf')) + self.write(cr, uid, [ref("document_4")], {'res_id':ref("res_partner_test33"), 'datas_fname': 'partner.pdf', 'datas' : base64.encodestring(pdf_file.read())}, context) + +- + Testing import and export +- + !python {model: ir.edi.document}: | partner_obj = self.pool.get('res.partner') partners = [partner_obj.browse(cr, uid, ref("res_partner_test33"))] tokens = self.export_edi(cr, uid, partners) for token in tokens: document = self.get_document(cr, uid, token, context=context) + print document a = self.import_edi(cr, uid, edi_document = document) -- - Check the exported out_invoice become in_invoice or not -- - !python {model: res.partner}: | - old_ids = self.search(cr,uid,[('id','=',ref('res_partner_test33')),('customer','=',True)]) - partner_old = self.browse(cr ,uid, old_ids[0]) - assert partner_old.name == 'Ivan', "partner is not created" - assert partner_old.website == 'www.openerp.com', "website is inserted" - diff --git a/openerp/service/web_services.py b/openerp/service/web_services.py index 37dadc195fb..116eefdd1a1 100644 --- a/openerp/service/web_services.py +++ b/openerp/service/web_services.py @@ -40,27 +40,43 @@ from cStringIO import StringIO import threading class edi(netsvc.ExportService): - def exp_get_edi_document(self, edi_token): - db_name = getattr(threading.currentThread(), 'dbname', None) + def exp_get_edi_document(self, edi_token, db_name=None): + res = None + if not db_name: + db_name = getattr(threading.currentThread(), 'dbname', None) if db_name: - cr = pooler.get_db_only(db_name).cursor() + cr = pooler.get_db(db_name).cursor() else: raise Exception("No database cursor found!") pool = pooler.get_pool(db_name) edi_pool = pool.get('ir.edi.document') - return edi_pool.get_document(cr, 1, edi_token) + try: + res = edi_pool.get_document(cr, 1, edi_token) + finally: + cr.close() + return res def exp_import_edi_document(self, db, uid, passwd, edi_document, context=None): - cr = pooler.get_db_only(db).cursor() + res = None + cr = pooler.get_db(db).cursor() pool = pooler.get_pool(db) edi_pool = pool.get('ir.edi.document') - return edi_pool.import_edi(cr, uid, edi_document=edi_document, context=context) + try: + res = edi_pool.import_edi(cr, uid, edi_document=edi_document, context=context) + finally: + cr.close() + return res def exp_import_edi_url(self, db, uid, passwd, edi_url, context=None): + res = None cr = pooler.get_db_only(db).cursor() pool = pooler.get_pool(db) edi_pool = pool.get('ir.edi.document') - return edi_pool.import_edi(cr, uid, edi_url=edi_url, context=context) + try: + res = edi_pool.import_edi(cr, uid, edi_url=edi_url, context=context) + finally: + cr.close() + return res def __init__(self, name="edi"): netsvc.ExportService.__init__(self, name)