From 5e2bc14de956a2dd23734158f6ba80bb7260d7ca Mon Sep 17 00:00:00 2001 From: "Atul Patel (OpenERP)" Date: Mon, 11 Apr 2011 11:32:16 +0530 Subject: [PATCH] [ADD]: Add Attendee in Meeting For sugarcrm bzr revid: atp@tinyerp.com-20110411060216-obzpdy3cbm6vetid --- addons/import_sugarcrm/import_sugarcrm.py | 22 +++++++++++++++++++--- addons/import_sugarcrm/sugar.py | 23 ++++++++++++++++++++++- 2 files changed, 41 insertions(+), 4 deletions(-) diff --git a/addons/import_sugarcrm/import_sugarcrm.py b/addons/import_sugarcrm/import_sugarcrm.py index ba77def..4ee5f77 100644 --- a/addons/import_sugarcrm/import_sugarcrm.py +++ b/addons/import_sugarcrm/import_sugarcrm.py @@ -424,9 +424,7 @@ def get_account(sugar_obj, cr, uid, val, context=None): for model in model_obj.browse(cr, uid, model_ids): partner_address_id = model.res_id address_id = address_obj.browse(cr, uid, partner_address_id) - if address_id.partner_id: - partner_id = address_id.partner_id - + partner_id = address_id and address_id.partner_id or False return partner_id, partner_address_id def import_tasks(sugar_obj, cr, uid, context=None): @@ -460,6 +458,23 @@ def import_tasks(sugar_obj, cr, uid, context=None): meeting_obj.import_data(cr, uid, fields, [datas], mode='update', current_module='sugarcrm_import', noupdate=True, context=context) return True +def get_attendee_id(PortType, sessionid, module_name=None, module_id=None, val, context=None): + if not context: + context = {} + model_obj = sugar_obj.pool.get('ir.model.data') + att_obj = sugar_obj.pool.get('calendar.attendee') + user_xml_id, user_email_id = sugar.user_get_attendee_list(PortType, sessionid, module_name='Meetings', module_id=val.get('id')) + user_model_ids = find_mapped_id(sugar_obj, cr, uid, 'res.users', user_xml_id, context) + user_resource_id = model_obj.browse(cr, uid, user_model_ids) + if user_resource_id: + user_id = user_resource_id[0].res_id + attendees = att_obj.create(cr, uid, {'user_id': user_id, 'email': user_email_id}) + meeting_model_ids = find_mapped_id(sugar_obj, cr, uid, 'crm.meeting', val.get('id'), context) + meeting_xml_id = sugar_obj.pool.get('ir.model.data').browse(cr, uid, meeting_model_ids) + if meeting_xml_id: + meeting_obj.write(cr, uid, [meeting_xml_id[0].res_id], {'attendee_ids': [(4, attendees)]}) + return True + def import_meetings(sugar_obj, cr, uid, context=None): if not context: context = {} @@ -487,6 +502,7 @@ def import_meetings(sugar_obj, cr, uid, context=None): val['alarm_id/.id'] = get_alarm_id(sugar_obj, cr, uid, val.get('reminder_time'), context) fields, datas = sugarcrm_fields_mapping.sugarcrm_fields_mapp(val, map_meeting) meeting_obj.import_data(cr, uid, fields, [datas], mode='update', current_module='sugarcrm_import', noupdate=True, context=context) + get_attendee_id(portType, sessionid, module_name=None, module_id=None, val, context) return True def get_calls_state(sugar_obj, cr, uid, val,context=None): diff --git a/addons/import_sugarcrm/sugar.py b/addons/import_sugarcrm/sugar.py index c6cac53..0425bd1 100644 --- a/addons/import_sugarcrm/sugar.py +++ b/addons/import_sugarcrm/sugar.py @@ -25,7 +25,8 @@ from sugarsoap_services import * from sugarsoap_services_types import * from osv import osv from tools.translate import _ - +import base64 +from lxml import etree class LoginError(Exception): pass def login(username, password, url): @@ -61,6 +62,26 @@ def relation_search(portType, sessionid, module_name=None, module_id=None, relat ans_list.append(i.get_element_id()) return ans_list +def user_get_attendee_list(portType, sessionid, module_name=None, module_id=None): + se_req = get_attendee_listRequest() + se_req._session = sessionid + se_req._module_name = module_name + se_req._id = module_id + se_resp = portType.get_attendee_list(se_req) + list = se_resp.get_element_return() + arch = base64.decodestring(list.Result) + eview = False + attende_id = False + attende_email_id = False + eview = etree.XML(arch) + for child in eview: + for ch in child.getchildren(): + if ch.tag == 'id': + attende_id = ch.text + if ch.tag == 'email1': + attende_email_id = ch.text + return attende_id, attende_email_id + def search(portType, sessionid, module_name=None): se_req = get_entry_listRequest() -- 1.7.10.4