diff --git a/addons/sync_google_contact/__openerp__.py b/addons/sync_google_contact/__openerp__.py
index 6d19f2c6865..5612542dfe5 100644
--- a/addons/sync_google_contact/__openerp__.py
+++ b/addons/sync_google_contact/__openerp__.py
@@ -30,6 +30,7 @@
'depends': ['base','google_base_account'],
'init_xml': [],
'update_xml': [
+ 'sync_google_contact_view.xml',
'wizard/google_contact_import_view.xml'
],
'demo_xml': [],
diff --git a/addons/sync_google_contact/sync_google_contact.py b/addons/sync_google_contact/sync_google_contact.py
index 9e7e3f49126..29fa4bfab43 100644
--- a/addons/sync_google_contact/sync_google_contact.py
+++ b/addons/sync_google_contact/sync_google_contact.py
@@ -24,6 +24,10 @@ from osv import fields,osv,orm
class res_partner_address(osv.osv):
_inherit = "res.partner.address"
+ _columns = {
+ 'last_modification_date': fields.datetime('Last Modification Date', readonly=True, help="Last modification date of google contact."),
+ }
+
def unlink(self, cr, uid, ids, context=None):
model_obj = self.pool.get('ir.model.data')
model_ids = model_obj.search(cr, uid, [('res_id','in',ids),('model','=','res.partner.address'),('module','=','sync_google_contact')], context=context)
diff --git a/addons/sync_google_contact/sync_google_contact_view.xml b/addons/sync_google_contact/sync_google_contact_view.xml
new file mode 100644
index 00000000000..d250e7f483e
--- /dev/null
+++ b/addons/sync_google_contact/sync_google_contact_view.xml
@@ -0,0 +1,21 @@
+
+
+
+
+
+ res.partner.google.form
+ form
+ res.partner.address
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/addons/sync_google_contact/wizard/google_contact_import.py b/addons/sync_google_contact/wizard/google_contact_import.py
index d482a256515..abd7c446638 100644
--- a/addons/sync_google_contact/wizard/google_contact_import.py
+++ b/addons/sync_google_contact/wizard/google_contact_import.py
@@ -18,10 +18,14 @@
# along with this program. If not, see .
#
##############################################################################
+import time
+import datetime
+import dateutil
+from dateutil.tz import *
+from dateutil.parser import *
+from pytz import timezone
+import pytz
-from osv import fields,osv
-from tools.translate import _
-import tools
try:
import gdata
import gdata.contacts.service
@@ -29,6 +33,10 @@ try:
except ImportError:
raise osv.except_osv(_('Google Contacts Import Error!'), _('Please install gdata-python-client from http://code.google.com/p/gdata-python-client/downloads/list'))
+from osv import fields,osv
+from tools.translate import _
+import tools
+
class google_contact_import(osv.osv_memory):
_inherit = 'google.login'
_name = 'google.login.contact'
@@ -138,9 +146,10 @@ class synchronize_google_contact(osv.osv_memory):
addresses = []
partner_ids = []
contact_ids=[]
+
while contact:
for entry in contact.entry:
- data = self._retreive_data(entry)
+ data = self._retreive_data(entry, context=context)
google_id = data.pop('id')
model_data = {
'name': google_id,
@@ -152,6 +161,9 @@ class synchronize_google_contact(osv.osv_memory):
data_ids = model_obj.search(cr, uid, [('model','=','res.partner.address'), ('name','=', google_id)])
if data_ids:
contact_ids = [model_obj.browse(cr, uid, data_ids[0], context=context).res_id]
+ address = addresss_obj.browse(cr, uid, contact_ids[0], context=context)
+ if address.last_modification_date > data.get('last_modification_date'):
+ data['last_modification_date'] = address.last_modification_date
elif data['email']:
contact_ids = addresss_obj.search(cr, uid, [('email', 'ilike', data['email'])])
@@ -183,7 +195,7 @@ class synchronize_google_contact(osv.osv_memory):
else:
return addresses
- def _retreive_data(self, entry):
+ def _retreive_data(self, entry, context=None):
data = {}
data['id'] = entry.id.text
name = tools.ustr(entry.title.text)
@@ -192,7 +204,19 @@ class synchronize_google_contact(osv.osv_memory):
data['name'] = name
emails = ','.join(email.address for email in entry.email)
data['email'] = emails
-
+
+ if 'tz' in context and context['tz']:
+ time_zone = context['tz']
+ else:
+ time_zone = 'Asia/Kolkata'
+ au_tz = timezone(time_zone)
+
+ if entry.updated:
+ google_updated = entry.updated.text
+ utime = dateutil.parser.parse(google_updated)
+ au_dt = au_tz.normalize(utime.astimezone(au_tz))
+ updated_dt = datetime.datetime(*au_dt.timetuple()[:6]).strftime('%Y-%m-%d %H:%M:%S')
+ data['last_modification_date'] = updated_dt
if entry.phone_number:
for phone in entry.phone_number:
@@ -211,17 +235,18 @@ class synchronize_google_contact(osv.osv_memory):
name = str((addr.name or addr.partner_id and addr.partner_id.name or '').encode('utf-8'))
if not name:
- vals['name']=data.get('name','')
+ vals['name'] = data.get('name','')
if not addr.email:
- vals['email']=data.get('email','')
+ vals['email'] = data.get('email','')
if not addr.mobile:
- vals['mobile']=data.get('mobile','')
+ vals['mobile'] = data.get('mobile','')
if not addr.phone:
- vals['phone']=data.get('phone','')
+ vals['phone'] = data.get('phone','')
if not addr.fax:
- vals['fax']=data.get('fax','')
-
- addresss_obj.write(cr,uid,contact_ids,vals,context=context)
+ vals['fax'] = data.get('fax','')
+ vals['last_modification_date'] = data.get('last_modification_date')
+
+ addresss_obj.write(cr, uid, contact_ids, vals, context=context)
return {'type': 'ir.actions.act_window_close'}
synchronize_google_contact()