[FIX]: Correct xml_id problem and timezone problem for date

bzr revid: atp@tinyerp.com-20110426071857-yt37x7vernms37wi
This commit is contained in:
Atul Patel (OpenERP)
2011-04-26 12:48:57 +05:30
parent eef2053d7d
commit 7924dcd5bf
2 changed files with 18 additions and 6 deletions
@@ -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'))
@@ -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':