← Back to team overview

openerp-dev-web team mailing list archive

lp:~openerp-dev/openobject-addons/trunk-contact-google-sync-import-wizard-uco into lp:~openerp-dev/openobject-addons/trunk-contact-google-sync

 

Ujjvala Collins (OpenERP) has proposed merging lp:~openerp-dev/openobject-addons/trunk-contact-google-sync-import-wizard-uco into lp:~openerp-dev/openobject-addons/trunk-contact-google-sync.

Requested reviews:
  Bhumika (OpenERP) (sbh-openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-contact-google-sync-import-wizard-uco/+merge/50287

[IMP] sync_google_contact:
----------------------------
-> by default don't create partner
-> a checkbox "create also partner"
    if the checkbox is checked, create one partner by contact import
    But here there is a mistake, all the contact are create in one partner
    But what it asked is to create one partner per contact in google
    One contact = one partner with one address 
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-contact-google-sync-import-wizard-uco/+merge/50287
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-addons/trunk-contact-google-sync.
=== modified file 'google_base_account/wizard/google_login.py'
--- google_base_account/wizard/google_login.py	2011-02-17 11:28:36 +0000
+++ google_base_account/wizard/google_login.py	2011-02-18 09:23:14 +0000
@@ -21,7 +21,6 @@
 
 from osv import fields,osv,orm
 from tools.translate import _
-import gdata.contacts
 import gdata.contacts.service
 
 class google_login(osv.osv_memory):
@@ -40,7 +39,8 @@
             gd_client.ProgrammaticLogin()     
         except Exception, e:
            return False
-        return gd_client    
+        return gd_client
+        
     def check_login(self, cr, uid, ids, context=None):
         if context == None:
             context = {}

=== modified file 'google_base_account/wizard/google_login_view.xml'
--- google_base_account/wizard/google_login_view.xml	2011-02-14 13:37:07 +0000
+++ google_base_account/wizard/google_login_view.xml	2011-02-18 09:23:14 +0000
@@ -18,7 +18,7 @@
 	                <separator string="" colspan="4"/>
 	                <group colspan="2" col="2">
 	                    <button special="cancel" string="Cancel" icon="gtk-cancel"/>
-	                    <button name="check_login" string="Login" type="object" icon="terp-personal+"/>
+	                    <button name="check_login" string="Login" type="object" icon="terp-check"/>
 	                </group>                  
                 </form>             
             </field>

=== modified file 'sync_google_contact/wizard/google_contact_import.py'
--- sync_google_contact/wizard/google_contact_import.py	2011-02-18 05:27:12 +0000
+++ sync_google_contact/wizard/google_contact_import.py	2011-02-18 09:23:14 +0000
@@ -25,8 +25,6 @@
 
 class google_contact_import(osv.osv_memory):
     _inherit = 'google.login'
-    _columns = {
-     }
     
     def default_get(self, cr, uid, fields, context=None):
         res = super(google_contact_import, self).default_get(cr, uid, fields, context=context)
@@ -36,6 +34,7 @@
         if 'password' in fields:
             res.update({'password': user_obj.gmail_password})
         return res
+    
     def check_login_contact(self, cr, uid, ids, context=None):
         gd_client = self.check_login(cr, uid, ids, context=context)
         if not gd_client:
@@ -63,24 +62,41 @@
 class synchronize_google_contact(osv.osv_memory):
     _name = "synchronize.base"    
     _inherit = 'synchronize.base'
+    
     def _get_group(self, cr, uid, context=None):
         user_obj = self.pool.get('res.users').browse(cr, uid, uid)
         google=self.pool.get('google.login')
-        gd_client=google.google_login(cr,uid,user_obj.gmail_user,user_obj.gmail_password)
-        res=[]
+        gd_client = google.google_login(cr,uid,user_obj.gmail_user,user_obj.gmail_password)
+        res = []
         if gd_client:
-            groups=gd_client.GetGroupsFeed()
+            groups = gd_client.GetGroupsFeed()
             for grp in groups.entry:
-                res.append((grp.id.text ,grp.title.text))
+                res.append((grp.id.text, grp.title.text))
         res.append(('none','None'))
-        res.append(('all','All Group'))
-        return res    
+        res.append(('all','All Groups'))
+        return res
+    
+    def _get_default_group(self, cr, uid, context=None):
+        return 'all'
+    
     _columns = {
         'tools': fields.selection([('gmail','Gmail')], 'Tools'),
         'create_partner': fields.boolean('Create Partner', help="It will create Partner for given gmail user otherwise only adds contacts in Partner Addresses.")  ,      
         'group_name': fields.selection(_get_group, "Group Name", size=32,help="Choose which group to import, By defult it take all "),        
-      
-     }        
+     }
+    
+    _defaults = {
+        'group_name': _get_default_group,
+    }
+    
+    def create_partner(self, cr, uid, ids, data={}, context=None):
+        partner_obj = self.pool.get('res.partner')
+        name = data.get('name', '')
+        partner_id = partner_obj.search(cr, uid, [('name','ilike',name)], context=context)   
+        if not partner_id:
+            partner_id.append(partner_obj.create(cr, uid, {'name': name}, context=context)) 
+        data.update({'partner_id': partner_id and partner_id[0]})
+        return partner_id, data
     
     def import_contact(self, cr, uid, ids, context=None):
         addresss_obj = self.pool.get('res.partner.address')
@@ -88,52 +104,49 @@
         user_obj = self.pool.get('res.users').browse(cr, uid, uid)
         gmail_user = user_obj.gmail_user
         gamil_pwd = user_obj.gmail_password
-        google=self.pool.get('google.login')
-        gd_client=google.google_login(cr,uid,user_obj.gmail_user,user_obj.gmail_password)        
+        google = self.pool.get('google.login')
+        gd_client = google.google_login(cr,uid,user_obj.gmail_user,user_obj.gmail_password)        
+        
         if not gmail_user or not gamil_pwd:
             raise osv.except_osv(_('Error'), _("Please specify the user and password !"))      
 
         contact = gd_client.GetContactsFeed()
         partner_id = []
         addresses = []
-        partner_ids=[]
+        partner_ids = []
         
         for obj in self.browse(cr, uid, ids, context=context):
-            if obj.tools=='gmail':
-#                if obj.create_partner:
-#                    for user in contact.author:
-#                        partner_name = user.name.text
-#                    if not partner_id:
-#                        partner_id.append(partner_obj.create(cr, uid, {'name': partner_name}, context=context))
+            if obj.tools == 'gmail':
                 while contact:
-                    data={}
                     for entry in contact.entry:
-                        partner_id = False   
-                        if obj.create_partner:
-                            partner_name = tools.ustr(entry.title.text)
-                            if partner_name:
-                                partner_id = partner_obj.search(cr, uid, [('name','ilike',partner_name)], context=context)   
-                                if not partner_id:
-                                    partner_id.append(partner_obj.create(cr, uid, {'name': partner_name}, context=context)) 
-                                partner_ids.append(partner_id[0])  
-                                data.update({'partner_id': partner_id and partner_id[0]} ) 
-                                              
-                        name = entry.title.text
+                        partner_id = False
+                        name = tools.ustr(entry.title.text)
                         phone_numbers = ','.join(phone_number.text for phone_number in entry.phone_number)
                         emails = ','.join(email.address for email in entry.email)
                         data = {
                                 'name': name or '',
                                 'phone': phone_numbers,
                                 'email': emails,
-                         }
+                        }
+                        if obj.create_partner and obj.group_name == 'all':
+                            if name:
+                                partner_id, data = self.create_partner(cr, uid, ids, data, context=context)
+                                partner_ids.append(partner_id[0])
+                            addresses.append(addresss_obj.create(cr, uid, data, context=context))
                         contact_ids = addresss_obj.search(cr, uid, [('email','ilike',emails)])
-                        if obj.group_name and entry.group_membership_info and  not contact_ids:
-                            for grp in entry.group_membership_info:
-                                if grp.href ==  obj.group_name:
-                                    addresss_obj.create(cr, uid, data, context=context)                        
+                        if not contact_ids:
+                            if obj.group_name and entry.group_membership_info:
+                                for grp in entry.group_membership_info:
+                                    if grp.href == obj.group_name:
+                                        if obj.create_partner:
+                                            partner_id, data = self.create_partner(cr, uid, ids, data, context=context)
+                                            partner_ids.append(partner_id[0])
+                                        addresses.append(addresss_obj.create(cr, uid, data, context=context))                        
+                            else:
+                                if obj.group_name == 'all':
+                                    addresses.append(addresss_obj.create(cr, uid, data, context=context))
                         else:
-                            if obj.group_name=='all':
-                                addresses.append(addresss_obj.create(cr, uid, data, context=context))
+                            addresss_obj.write(cr, uid, contact_ids, data, context=context)
                     if not contact:
                         break
                     next = contact.GetNextLink()

=== modified file 'sync_google_contact/wizard/google_contact_import_view.xml'
--- sync_google_contact/wizard/google_contact_import_view.xml	2011-02-17 13:31:43 +0000
+++ sync_google_contact/wizard/google_contact_import_view.xml	2011-02-18 09:23:14 +0000
@@ -16,7 +16,7 @@
 	                <separator string="" colspan="4"/>
 	                <group colspan="4" col="4">
 	                    <button special="cancel" string="Cancel" icon="gtk-cancel"/>
-	                    <button name="check_login_contact"   string="Login" type="object" icon="terp-personal+"/>
+	                    <button name="check_login_contact" string="Login" type="object" icon="terp-check"/>
 	                </group>     
 	                </group>             
                 </form>             
@@ -32,8 +32,9 @@
                 <form string="Import Google Contacts">
 	                <group colspan="2" col="2">
 	                   <field name="tools"/>
-	                   <field name="create_partner"/>
-	              		<field name="group_name" />
+	                   <field name="group_name" />
+	                   <separator string="Do you want to create partner?" colspan="4"/>
+	              	   <field name="create_partner"/>
 	                </group>
 	                <separator string="" colspan="4"/>
 	                <group colspan="2" col="2">


Follow ups