From 7924dcd5bff1f0f8571c08015abd344656ebec95 Mon Sep 17 00:00:00 2001 From: "Atul Patel (OpenERP)" Date: Tue, 26 Apr 2011 12:48:57 +0530 Subject: [PATCH] [FIX]: Correct xml_id problem and timezone problem for date bzr revid: atp@tinyerp.com-20110426071857-yt37x7vernms37wi --- addons/import_sugarcrm/import_sugarcrm.py | 9 +++++++++ addons/import_sugarcrm/sugarcrm_fields_mapping.py | 15 +++++++++------ 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/addons/import_sugarcrm/import_sugarcrm.py b/addons/import_sugarcrm/import_sugarcrm.py index 6f9f7da1981..06099890a3a 100644 --- a/addons/import_sugarcrm/import_sugarcrm.py +++ b/addons/import_sugarcrm/import_sugarcrm.py @@ -750,6 +750,7 @@ def import_claims(sugar_obj, cr, uid, context=None): sugar_data = sugar.search(PortType, sessionid, 'Cases') for val in sugar_data: partner_id, partner_address_id, partner_phone,partner_email = get_acc_contact_claim(sugar_obj, cr, uid, val, context) + val['id'] = 'Cases_' + val.get('id') val['partner_id/.id'] = partner_id val['partner_address_id/.id'] = partner_address_id val['partner_phone'] = partner_phone @@ -781,6 +782,7 @@ def import_bug(sugar_obj, cr, uid, context=None): project_id = project_ids[0] else: project_id = project_obj.create(cr, uid, {'name':'sugarcrm_bugs'}) + val['id'] = 'Bugs_' + val.get('id') val['project_id/.id'] = project_id val['categ_id.id'] = get_category(sugar_obj, cr, uid, 'project.issue', val.get('type')) val['priority'] = get_bug_priority(sugar_obj, cr, uid, val.get('priority'),context) @@ -843,6 +845,7 @@ def import_history(sugar_obj, cr, uid, context=None): 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: + val['id'] = 'Notes_' + val.get('id') File = sugar.attachment_search(PortType, sessionid, 'Notes', val.get('id')) model_ids = model_obj.search(cr, uid, [('name', 'like', val.get('parent_id')),('model','=', OPENERP_FIEDS_MAPS[val.get('parent_type')])]) if model_ids: @@ -873,6 +876,7 @@ def import_employees(sugar_obj, cr, uid, context=None): PortType, sessionid = sugar.login(context.get('username', ''), context.get('password', ''), context.get('url','')) sugar_data = sugar.search(PortType, sessionid, 'Employees') for val in sugar_data: + val['id'] = 'Employees_' + val.get('id') address_id = get_user_address(sugar_obj, cr, uid, val, context) val['address_home_id/.id'] = address_id model_ids = find_mapped_id(sugar_obj, cr, uid, 'resource.resource', val.get('user_hash')+ '_resource_resource', context) @@ -917,6 +921,7 @@ def import_emails(sugar_obj, cr, uid, context=None): PortType, sessionid = sugar.login(context.get('username', ''), context.get('password', ''), context.get('url','')) sugar_data = sugar.search(PortType, sessionid, 'Emails') for val in sugar_data: + val['id'] = 'Emails_' + 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 @@ -959,6 +964,7 @@ def import_projects(sugar_obj, cr, uid, context=None): PortType, sessionid = sugar.login(context.get('username', ''), context.get('password', ''), context.get('url','')) sugar_data = sugar.search(PortType, sessionid, 'Project') for val in sugar_data: + val['id'] = 'Project_' + val.get('id') partner_id, partner_invoice_id = get_project_account(sugar_obj,cr,uid, PortType, sessionid, val, context) val['partner_id/.id'] = partner_id val['contact_id/.id'] = partner_invoice_id @@ -988,6 +994,7 @@ def import_project_tasks(sugar_obj, cr, uid, context=None): PortType, sessionid = sugar.login(context.get('username', ''), context.get('password', ''), context.get('url','')) sugar_data = sugar.search(PortType, sessionid, 'ProjectTask') for val in sugar_data: + val['id'] = 'ProjectTask_' + val.get('id') val['state'] = get_project_task_state(sugar_obj, cr, uid, val.get('status'),context) val['priority'] = get_project_task_priority(sugar_obj, cr, uid, val.get('priority'),context) fields, datas = sugarcrm_fields_mapping.sugarcrm_fields_mapp(val, map_project_task, context) @@ -1026,6 +1033,7 @@ def import_leads(sugar_obj, cr, uid, context=None): PortType, sessionid = sugar.login(context.get('username', ''), context.get('password', ''), context.get('url','')) sugar_data = sugar.search(PortType, sessionid, 'Leads') for val in sugar_data: + val['id'] = 'Leads_' + val.get('id') if val.get('do_not_call') == '0': val['optout'] = '1' if val.get('opportunity_id'): @@ -1088,6 +1096,7 @@ def import_opportunities(sugar_obj, cr, uid, context=None): PortType, sessionid = sugar.login(context.get('username', ''), context.get('password', ''), context.get('url','')) sugar_data = sugar.search(PortType, sessionid, 'Opportunities') for val in sugar_data: + val['id'] = 'Opportunities_' + val.get('id') partner_xml_id = partner_obj.search(cr, uid, [('name', 'like', val.get('account_name'))]) if not partner_xml_id: raise osv.except_osv(_('Warning !'), _('Reference Partner %s cannot be created, due to Lower Record Limit in SugarCRM Configuration.') % val.get('account_name')) diff --git a/addons/import_sugarcrm/sugarcrm_fields_mapping.py b/addons/import_sugarcrm/sugarcrm_fields_mapping.py index c6b33516ad6..b8b6f39bed4 100644 --- a/addons/import_sugarcrm/sugarcrm_fields_mapping.py +++ b/addons/import_sugarcrm/sugarcrm_fields_mapping.py @@ -20,7 +20,8 @@ ############################################################################## import tools import pytz -from datetime import datetime +import time +from datetime import datetime, timedelta, date from dateutil import parser import dateutil @@ -38,17 +39,19 @@ def sugarcrm_fields_mapp(dict_sugar, openerp_dict, context=None): 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.get(x,''), val))) elif val[0] == '__datetime__': val = val[1] - convert_date = datetime.strptime(dict_sugar.get(val), '%Y-%m-%d %H:%M:%S') - edate = convert_date.replace(tzinfo=dateutil.tz.gettz('UTC')) - au_dt = au_tz.normalize(edate.astimezone(au_tz)) - updated_dt = datetime(*au_dt.timetuple()[:6]).strftime('%Y-%m-%d %H:%M:%S') + if len(dict_sugar.get(val))<=10: + updated_dt = date.fromtimestamp(time.mktime(time.strptime(dict_sugar.get(val), '%Y-%m-%d'))) + else: + convert_date = datetime.strptime(dict_sugar.get(val), '%Y-%m-%d %H:%M:%S') + edate = convert_date.replace(tzinfo=dateutil.tz.gettz('UTC')) + au_dt = au_tz.normalize(edate.astimezone(au_tz)) + updated_dt = datetime(*au_dt.timetuple()[:6]).strftime('%Y-%m-%d %H:%M:%S') data_lst.append(updated_dt) else: if key == 'duration':