← Back to team overview

openerp-dev-web team mailing list archive

lp:~openerp-dev/openobject-addons/trunk-contact-google-sync-validation_1205-jam into lp:~openerp-dev/openobject-addons/trunk-contact-google-sync

 

Jigar Amin - OpenERP has proposed merging lp:~openerp-dev/openobject-addons/trunk-contact-google-sync-validation_1205-jam 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-validation_1205-jam/+merge/61063

Changes :
  + Company name as partner
  + Address created should be type "Default"
  + the responsible salesman (user_id) should be the connected user

Kindly Review this.
Thank You

-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/trunk-contact-google-sync-validation_1205-jam/+merge/61063
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-addons/trunk-contact-google-sync.
=== modified file 'import_google_contact/security/ir.model.access.csv'
--- import_google_contact/security/ir.model.access.csv	2011-05-10 12:56:12 +0000
+++ import_google_contact/security/ir.model.access.csv	2011-05-16 04:37:25 +0000
@@ -1,3 +1,3 @@
 "id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
 "access_res_users_partner_manager","google.res.partner.manager","base.model_ir_model_data","base.group_partner_manager",1,1,1,0
-"access_ir_model_data_partner_manager","ir.model.data.partner.manager","base.model_res_users","base.group_partner_manager",1,1,0,0
\ No newline at end of file
+"access_ir_model_data_partner_manager","ir.model.data.partner.manager","base.model_res_users","base.group_partner_manager",1,1,0,0

=== modified file 'import_google_contact/wizard/google_contact_import.py'
--- import_google_contact/wizard/google_contact_import.py	2011-05-10 12:56:12 +0000
+++ import_google_contact/wizard/google_contact_import.py	2011-05-16 04:37:25 +0000
@@ -22,7 +22,6 @@
 import dateutil
 from dateutil.parser import *
 from pytz import timezone
-import os
 
 try:
     import gdata
@@ -41,7 +40,8 @@
     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')
-        
+        if not user_obj.gmail_user or not user_obj.gmail_password:
+            raise osv.except_osv(_('Warning !'), _("No Google Username or password Defined for user.\nPlease define in user view"))
         gd_client = google.google_login(user_obj.gmail_user,user_obj.gmail_password,type='group')
         if not gd_client:
             raise osv.except_osv(_('Error'), _("Authentication fail check the user and password !"))
@@ -68,9 +68,18 @@
     }
 
     def create_partner(self, cr, uid, data={}, context=None):
-        partner_obj = self.pool.get('res.partner')
-        partner_id = partner_obj.create(cr, uid, {
-                                                  'name': data.get('name',''), 
+        if context == None:
+            context = {}
+        if not data:
+            return False
+        partner_pool = self.pool.get('res.partner')
+        company_pool = self.pool.get('res.company')        
+        if 'company_id' in data:
+            company = company_pool.browse(cr, uid, data.get('company_id'), context=context)
+            return company.partner_id.id
+        partner_id = partner_pool.create(cr, uid, {
+                                                  'name': data.get('name',''),
+                                                  'user_id': uid,
                                                   'address' : [(6, 0, [data['address_id']])],
                                                   'customer': data.get('customer', False),
                                                   'supplier': data.get('supplier', False)
@@ -113,6 +122,16 @@
                 'type': 'ir.actions.act_window',
         }
 
+    def getCompanyId(self, cr, uid, company, context=None):
+        if context == None:
+            context = {}
+        company_pool = self.pool.get('res.company')
+        company_id = company_pool.search(cr, uid, [('name', '=', company)])
+        if company_id:
+            return company_id[0]
+        new_cid = company_pool.create(cr, uid, {'name': company})
+        return new_cid
+
     def create_contact(self, cr, uid, ids, gd_client, contact, option,context=None):
         model_obj = self.pool.get('ir.model.data')
         addresss_obj = self.pool.get('res.partner.address')
@@ -124,10 +143,13 @@
         else:
             time_zone = tools.get_server_timezone()
         au_tz = timezone(time_zone)
-        
         while contact:
             for entry in contact.entry:
                 data = self._retreive_data(entry)
+                if 'company' in data:
+                    company = data.pop('company')
+                    if company:
+                        data.update({'company_id': self.getCompanyId(cr, uid, company, context=context)})
                 google_id = data.pop('id')
                 model_data = {
                     'name':  google_id,
@@ -154,6 +176,7 @@
                     res_id = contact_ids[0]
                 if not contact_ids:
                     #create or link to an existing partner only if it's a new contact
+                    data.update({'type': 'default'})
                     res_id = addresss_obj.create(cr, uid, data, context=context)
                     data['address_id'] = res_id
                     if option == 'create_all':
@@ -162,8 +185,9 @@
                         data['supplier'] = obj.supplier
                         partner_id = self.create_partner(cr, uid, data, context=context)
                         partner_ids.append(partner_id)
+                        addresss_obj.write(cr, uid, [res_id], {'partner_id': partner_id}, context=context)
                     addresses.append(res_id)
-                        
+
                 if not data_ids: #link to google_id if it was not the case before            
                     model_data.update({'res_id': res_id})
                     model_obj.create(cr, uid, model_data, context=context)
@@ -185,7 +209,13 @@
         data['name'] = name
         emails = ','.join(email.address for email in entry.email)
         data['email'] = emails
-        
+        if entry.organization:
+            if entry.organization.org_name:
+                data.update({'company': entry.organization.org_name.text})
+            if entry.organization.org_title:
+                data.update ({'function': entry.organization.org_title.text})
+
+
         if entry.phone_number:
             for phone in entry.phone_number:
                 if phone.rel == gdata.contacts.REL_WORK:

=== modified file 'import_google_contact/wizard/google_contact_import_view.xml'
--- import_google_contact/wizard/google_contact_import_view.xml	2011-05-11 07:28:05 +0000
+++ import_google_contact/wizard/google_contact_import_view.xml	2011-05-16 04:37:25 +0000
@@ -13,11 +13,9 @@
                        <field name="create_partner" colspan="4"/>
                        <newline/>
                        <group attrs="{'invisible': [('create_partner','!=','create_all')]}" colspan="4" col="4">
-                            <separator string="Partner status for this group:"/>
-                            <field name="customer"/>
-                            <newline/>
-                            <label string=""/>
-                            <field name="supplier"/>
+                            <separator string="Partner status for this group:" colspan="4"/>
+                            <field name="customer" colspan="4"/>
+                            <field name="supplier"  colspan="4"/>
                        </group>
                     </group>
                     <separator string="" colspan="4"/>
@@ -31,8 +29,7 @@
                 </form>
             </field>
         </record>
-        
-        
+
         <record model="ir.actions.act_window" id="act_import_google_contacts_form">
           <field name="name">Import Contacts</field>
           <field name="type">ir.actions.act_window</field>
@@ -45,7 +42,7 @@
 
 
         <menuitem id="menu_sync_contact"
-                  parent="base.menu_address_book" 
+                  parent="base.menu_address_book"
                   action="act_import_google_contacts_form"
                   sequence="40" />
     </data>


Follow ups