[ADD]: Add Attendee in Meeting For sugarcrm
authorAtul Patel (OpenERP) <atp@tinyerp.com>
Mon, 11 Apr 2011 06:02:16 +0000 (11:32 +0530)
committerAtul Patel (OpenERP) <atp@tinyerp.com>
Mon, 11 Apr 2011 06:02:16 +0000 (11:32 +0530)
bzr revid: atp@tinyerp.com-20110411060216-obzpdy3cbm6vetid

addons/import_sugarcrm/import_sugarcrm.py
addons/import_sugarcrm/sugar.py

index ba77def..4ee5f77 100644 (file)
@@ -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):
index c6cac53..0425bd1 100644 (file)
@@ -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()