From 0e950f71a959cb5e6c2dfcd178671ed91c8c06cb Mon Sep 17 00:00:00 2001 From: "tfr@openerp.com" <> Date: Thu, 21 Apr 2011 14:40:47 +0200 Subject: [PATCH 1/4] [FIX] category of task + simple map field bzr revid: tfr@openerp.com-20110421124047-xcwdxqka3t4f31y1 --- addons/import_sugarcrm/import_sugarcrm.py | 50 ++++++++++--------- .../sugarcrm_fields_mapping.py | 21 ++++---- 2 files changed, 37 insertions(+), 34 deletions(-) diff --git a/addons/import_sugarcrm/import_sugarcrm.py b/addons/import_sugarcrm/import_sugarcrm.py index fcaedaaa4c5..34a58197872 100644 --- a/addons/import_sugarcrm/import_sugarcrm.py +++ b/addons/import_sugarcrm/import_sugarcrm.py @@ -306,7 +306,9 @@ def get_category(sugar_obj, cr, uid, model, name, context=None): if categ_ids: categ_id = categ_ids[0] else: - categ_id = categ_obj.create(cr, uid, {'name': name, 'object_id.model': model}) + model_ids = sugar_obj.pool.get('ir.model').search(cr, uid, [('model', '=', model)], context=context) + model = model_ids and model_ids[0] or False + categ_id = categ_obj.create(cr, uid, {'name': name, 'object_id': model}) return categ_id def get_alarm_id(sugar_obj, cr, uid, val, context=None): @@ -424,7 +426,8 @@ def import_tasks(sugar_obj, cr, uid, context=None): context = {} map_task = {'id' : 'id', 'name': 'name', - 'date': 'date_entered', + 'date': 'date_start', + 'date_deadline' : 'date_due', 'user_id/id': 'assigned_user_id', 'categ_id/.id': 'categ_id/.id', 'partner_id/.id': 'partner_id/.id', @@ -523,7 +526,7 @@ def import_calls(sugar_obj, cr, uid, context=None): 'partner_id/.id': 'partner_id/.id', 'partner_address_id/.id': 'partner_address_id/.id', 'categ_id/.id': 'categ_id/.id', - 'state': 'state', + 'state': 'state', } phonecall_obj = sugar_obj.pool.get('crm.phonecall') PortType, sessionid = sugar.login(context.get('username', ''), context.get('password', ''), context.get('url','')) @@ -641,7 +644,7 @@ def get_attachment(sugar_obj, cr, uid, val, model, File, context=None): message_model_ids = find_mapped_id(sugar_obj, cr, uid, model, val.get('id'), context) message_xml_id = model_obj.browse(cr, uid, message_model_ids) if message_xml_id: - mailgate_obj.write(cr, uid, [message_xml_id[0].res_id], {'attachment_ids': [(4, new_attachment_id)]}) + mailgate_obj.write(cr, uid, [message_xml_id[0].res_id], {'attachment_ids': [(4, new_attachment_id)]}) return True def import_history(sugar_obj, cr, uid, context=None): @@ -654,20 +657,21 @@ def import_history(sugar_obj, cr, uid, context=None): 'description': 'description_html', 'res_id': 'res_id', 'model': 'model', + 'partner_id.id' : 'partner_id.id', } mailgate_obj = sugar_obj.pool.get('mailgate.message') model_obj = sugar_obj.pool.get('ir.model.data') PortType, sessionid = sugar.login(context.get('username', ''), context.get('password', ''), context.get('url','')) sugar_data = sugar.search(PortType, sessionid, 'Notes') for val in sugar_data: - File = sugar.attachment_search(PortType, sessionid, 'Notes', val.get('id')) - model_ids = model_obj.search(cr, uid, [('name', 'like', val.get('parent_id'))]) - for model in model_obj.browse(cr, uid, model_ids): + File = sugar.attachment_search(PortType, sessionid, 'Notes', val.get('id')) + model_ids = model_obj.search(cr, uid, [('name', 'like', val.get('parent_id'))]) + for model in model_obj.browse(cr, uid, model_ids): val['res_id'] = model.res_id val['model'] = model.model - fields, datas = sugarcrm_fields_mapping.sugarcrm_fields_mapp(val, map_attachment) - mailgate_obj.import_data(cr, uid, fields, [datas], mode='update', current_module='sugarcrm_import', noupdate=True, context=context) - get_attachment(sugar_obj, cr, uid, val, 'mailgate.message', File, context) + fields, datas = sugarcrm_fields_mapping.sugarcrm_fields_mapp(val, map_attachment) + mailgate_obj.import_data(cr, uid, fields, [datas], mode='update', current_module='sugarcrm_import', noupdate=True, context=context) + get_attachment(sugar_obj, cr, uid, val, 'mailgate.message', File, context) return True def import_employees(sugar_obj, cr, uid, context=None): @@ -991,19 +995,19 @@ class import_sugarcrm(osv.osv): 'username': fields.char('User Name', size=64), 'password': fields.char('Password', size=24), } - _defaults = { - 'lead': True, - 'opportunity': True, - 'user' : True, - 'contact' : True, - 'account' : True, - 'employee' : True, - 'meeting' : True, - 'call' : True, - 'email' : True, - 'project' : True, - 'project_task': True, - 'bug': True, + _defaults = { #to be set to true, but easier for debugging + 'lead': False, + 'opportunity': False, + 'user' : False, + 'contact' : False, + 'account' : False, + 'employee' : False, + 'meeting' : False, + 'call' : False, + 'email' : False, + 'project' : False, + 'project_task': False, + 'bug': False, } def get_key(self, cr, uid, ids, context=None): diff --git a/addons/import_sugarcrm/sugarcrm_fields_mapping.py b/addons/import_sugarcrm/sugarcrm_fields_mapping.py index aedd88346ee..d6f9c28732c 100644 --- a/addons/import_sugarcrm/sugarcrm_fields_mapping.py +++ b/addons/import_sugarcrm/sugarcrm_fields_mapping.py @@ -25,16 +25,15 @@ def sugarcrm_fields_mapp(dict_sugar, openerp_dict): for key,val in openerp_dict.items(): if key not in fields and dict_sugar: fields.append(key) - if isinstance(val, list) and val: - #Allow to print a bit more pretty way long list of data in the same field - if len(val) >= 1 and val[0] == "__prettyprint__": - val = val[1:] - data_lst.append('\n\n'.join(map(lambda x : x + ": " + dict_sugar[x], val))) - else: - if key == 'duration': - data_lst.append('.'.join(map(lambda x : dict_sugar[x], val))) - else: - data_lst.append(' '.join(map(lambda x : dict_sugar[x], val))) + if not isinstance(val, list): + val = [val] + #Allow to print a bit more pretty way long list of data in the same field + if len(val) >= 1 and val[0] == "__prettyprint__": + val = val[1:] + data_lst.append('\n\n'.join(map(lambda x : x + ": " + str(dict_sugar[x]), val))) else: - data_lst.append(dict_sugar.get(val,'')) + if key == 'duration': + data_lst.append('.'.join(map(lambda x : str(dict_sugar[x]), val))) + else: + data_lst.append(' '.join(map(lambda x : str(dict_sugar[x]), val))) return fields,data_lst From 685d89fe66e90b5a74de050fdd8566e1ab8f3f05 Mon Sep 17 00:00:00 2001 From: "tfr@openerp.com" <> Date: Thu, 21 Apr 2011 15:03:16 +0200 Subject: [PATCH 2/4] [FIX] map field bzr revid: tfr@openerp.com-20110421130316-6qo9j6a9rco20iwr --- addons/import_sugarcrm/import_sugarcrm.py | 8 ++----- .../import_sugarcrm/import_sugarcrm_view.xml | 1 - .../sugarcrm_fields_mapping.py | 21 ++++++++++--------- 3 files changed, 13 insertions(+), 17 deletions(-) diff --git a/addons/import_sugarcrm/import_sugarcrm.py b/addons/import_sugarcrm/import_sugarcrm.py index 34a58197872..7ead1937ca4 100644 --- a/addons/import_sugarcrm/import_sugarcrm.py +++ b/addons/import_sugarcrm/import_sugarcrm.py @@ -912,7 +912,7 @@ def import_opportunities(sugar_obj, cr, uid, context=None): return True MAP_FIELDS = {'Opportunities': #Object Mapping name - {'dependencies' : ['Users', 'Accounts', 'Contacts'], #Object to import before this table + {'dependencies' : ['Users', 'Accounts', 'Contacts', 'Leads'], #Object to import before this table 'process' : import_opportunities, }, 'Leads': @@ -979,8 +979,7 @@ class import_sugarcrm(osv.osv): _name = "import.sugarcrm" _description = __doc__ _columns = { - 'lead': fields.boolean('Leads', help="If Leads are checked, SugarCRM Leads data imported in OpenERP crm-Lead form"), - 'opportunity': fields.boolean('Opportunities', help="If Opportunities are checked, SugarCRM opportunities data imported in OpenERP crm-Opportunity form"), + 'opportunity': fields.boolean('Lead and Opportunities', help="If Opportunities are checked, SugarCRM opportunities data imported in OpenERP crm-Opportunity form"), 'user': fields.boolean('User', help="If Users are checked, SugarCRM Users data imported in OpenERP Users form"), 'contact': fields.boolean('Contacts', help="If Contacts are checked, SugarCRM Contacts data imported in OpenERP partner address form"), 'account': fields.boolean('Accounts', help="If Accounts are checked, SugarCRM Accounts data imported in OpenERP partners form"), @@ -996,7 +995,6 @@ class import_sugarcrm(osv.osv): 'password': fields.char('Password', size=24), } _defaults = { #to be set to true, but easier for debugging - 'lead': False, 'opportunity': False, 'user' : False, 'contact' : False, @@ -1016,8 +1014,6 @@ class import_sugarcrm(osv.osv): context = {} key_list = [] for current in self.browse(cr, uid, ids, context): - if current.lead: - key_list.append('Leads') if current.opportunity: key_list.append('Opportunities') if current.user: diff --git a/addons/import_sugarcrm/import_sugarcrm_view.xml b/addons/import_sugarcrm/import_sugarcrm_view.xml index eb4af473b39..1c8165c8f2f 100644 --- a/addons/import_sugarcrm/import_sugarcrm_view.xml +++ b/addons/import_sugarcrm/import_sugarcrm_view.xml @@ -12,7 +12,6 @@ - diff --git a/addons/import_sugarcrm/sugarcrm_fields_mapping.py b/addons/import_sugarcrm/sugarcrm_fields_mapping.py index d6f9c28732c..d689aa882af 100644 --- a/addons/import_sugarcrm/sugarcrm_fields_mapping.py +++ b/addons/import_sugarcrm/sugarcrm_fields_mapping.py @@ -25,15 +25,16 @@ def sugarcrm_fields_mapp(dict_sugar, openerp_dict): for key,val in openerp_dict.items(): if key not in fields and dict_sugar: fields.append(key) - if not isinstance(val, list): - val = [val] - #Allow to print a bit more pretty way long list of data in the same field - if len(val) >= 1 and val[0] == "__prettyprint__": - val = val[1:] - data_lst.append('\n\n'.join(map(lambda x : x + ": " + str(dict_sugar[x]), val))) - else: - if key == 'duration': - data_lst.append('.'.join(map(lambda x : str(dict_sugar[x]), val))) + if isinstance(val, list) and val: + #Allow to print a bit more pretty way long list of data in the same field + if len(val) >= 1 and val[0] == "__prettyprint__": + val = val[1:] + data_lst.append('\n\n'.join(map(lambda x : x + ": " + dict_sugar.get(val,''), val))) else: - data_lst.append(' '.join(map(lambda x : str(dict_sugar[x]), val))) + if key == 'duration': + data_lst.append('.'.join(map(lambda x : dict_sugar.get(val,''), val))) + else: + data_lst.append(' '.join(map(lambda x : dict_sugar.get(val,''), val))) + else: + data_lst.append(dict_sugar.get(val,'')) return fields,data_lst From ceac0b0588c55b88cf8265d7a3d0fd96a3c1ab75 Mon Sep 17 00:00:00 2001 From: "tfr@openerp.com" <> Date: Thu, 21 Apr 2011 15:12:39 +0200 Subject: [PATCH 3/4] [FIX] map field bzr revid: tfr@openerp.com-20110421131239-sqq8dnfn4qhn1g8y --- addons/import_sugarcrm/sugarcrm_fields_mapping.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/addons/import_sugarcrm/sugarcrm_fields_mapping.py b/addons/import_sugarcrm/sugarcrm_fields_mapping.py index d689aa882af..05c7f0b6ad7 100644 --- a/addons/import_sugarcrm/sugarcrm_fields_mapping.py +++ b/addons/import_sugarcrm/sugarcrm_fields_mapping.py @@ -29,12 +29,12 @@ def sugarcrm_fields_mapp(dict_sugar, openerp_dict): #Allow to print a bit more pretty way long list of data in the same field if len(val) >= 1 and val[0] == "__prettyprint__": val = val[1:] - data_lst.append('\n\n'.join(map(lambda x : x + ": " + dict_sugar.get(val,''), val))) + data_lst.append('\n\n'.join(map(lambda x : x + ": " + dict_sugar.get(x,''), val))) else: if key == 'duration': - data_lst.append('.'.join(map(lambda x : dict_sugar.get(val,''), val))) + data_lst.append('.'.join(map(lambda x : dict_sugar.get(x,''), val))) else: - data_lst.append(' '.join(map(lambda x : dict_sugar.get(val,''), val))) + data_lst.append(' '.join(map(lambda x : dict_sugar.get(x,''), val))) else: data_lst.append(dict_sugar.get(val,'')) return fields,data_lst From 1fa2fbc063e2cefee0b884c8957555854aebbaf4 Mon Sep 17 00:00:00 2001 From: "tfr@openerp.com" <> Date: Thu, 21 Apr 2011 17:24:58 +0200 Subject: [PATCH 4/4] [CLEAN] typo bzr revid: tfr@openerp.com-20110421152458-l0y1yyru1tg4ikzw --- addons/import_sugarcrm/import_sugarcrm.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/import_sugarcrm/import_sugarcrm.py b/addons/import_sugarcrm/import_sugarcrm.py index 7ead1937ca4..de5d479db45 100644 --- a/addons/import_sugarcrm/import_sugarcrm.py +++ b/addons/import_sugarcrm/import_sugarcrm.py @@ -654,7 +654,7 @@ def import_history(sugar_obj, cr, uid, context=None): 'name':'name', 'date':'date_entered', 'user_id/id': 'assigned_user_id', - 'description': 'description_html', + 'description': ['description', 'description_html'], 'res_id': 'res_id', 'model': 'model', 'partner_id.id' : 'partner_id.id', @@ -728,7 +728,7 @@ def import_emails(sugar_obj, cr, uid, context=None): 'email_bcc': 'bcc_addrs_names', 'message_id': 'message_id', 'user_id/id': 'assigned_user_id', - 'description': 'description_html', + 'description': ['description', 'description_html'], 'res_id': 'res_id', 'model': 'model', } @@ -979,8 +979,8 @@ class import_sugarcrm(osv.osv): _name = "import.sugarcrm" _description = __doc__ _columns = { - 'opportunity': fields.boolean('Lead and Opportunities', help="If Opportunities are checked, SugarCRM opportunities data imported in OpenERP crm-Opportunity form"), - 'user': fields.boolean('User', help="If Users are checked, SugarCRM Users data imported in OpenERP Users form"), + 'opportunity': fields.boolean('Leads and Opportunities', help="If Opportunities are checked, SugarCRM opportunities data imported in OpenERP crm-Opportunity form"), + 'user': fields.boolean('Users', help="If Users are checked, SugarCRM Users data imported in OpenERP Users form"), 'contact': fields.boolean('Contacts', help="If Contacts are checked, SugarCRM Contacts data imported in OpenERP partner address form"), 'account': fields.boolean('Accounts', help="If Accounts are checked, SugarCRM Accounts data imported in OpenERP partners form"), 'employee': fields.boolean('Employee', help="If Employees is checked, SugarCRM Employees data imported in OpenERP employees form"),