From 51eb931727cfc301bb0d32afdbbc1f0b20aec415 Mon Sep 17 00:00:00 2001 From: "Ujjvala Collins (OpenERP)" Date: Tue, 29 Mar 2011 15:36:41 +0530 Subject: [PATCH] [REF] sync_google_contact: Refactored the changes of adding timestamp checking. bzr revid: uco@tinyerp.com-20110329100641-gmle34qvuk18s87z --- addons/sync_google_contact/__openerp__.py | 1 - .../sync_google_contact.py | 4 +- .../sync_google_contact_view.xml | 21 ----------- .../wizard/google_contact_import.py | 37 +++++++------------ 4 files changed, 16 insertions(+), 47 deletions(-) delete mode 100644 addons/sync_google_contact/sync_google_contact_view.xml diff --git a/addons/sync_google_contact/__openerp__.py b/addons/sync_google_contact/__openerp__.py index 5612542dfe5..6d19f2c6865 100644 --- a/addons/sync_google_contact/__openerp__.py +++ b/addons/sync_google_contact/__openerp__.py @@ -30,7 +30,6 @@ '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 29fa4bfab43..1c00a67cd52 100644 --- a/addons/sync_google_contact/sync_google_contact.py +++ b/addons/sync_google_contact/sync_google_contact.py @@ -19,13 +19,13 @@ # ############################################################################## -from osv import fields,osv,orm +from osv import fields,osv 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."), + 'write_date': fields.datetime('Date Modified', readonly=True, help="Modification date and time of address."), } def unlink(self, cr, uid, ids, context=None): diff --git a/addons/sync_google_contact/sync_google_contact_view.xml b/addons/sync_google_contact/sync_google_contact_view.xml deleted file mode 100644 index d250e7f483e..00000000000 --- a/addons/sync_google_contact/sync_google_contact_view.xml +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - 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 abd7c446638..e6642730f0d 100644 --- a/addons/sync_google_contact/wizard/google_contact_import.py +++ b/addons/sync_google_contact/wizard/google_contact_import.py @@ -18,13 +18,10 @@ # 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 try: import gdata @@ -146,10 +143,15 @@ class synchronize_google_contact(osv.osv_memory): addresses = [] partner_ids = [] contact_ids=[] + if 'tz' in context and context['tz']: + time_zone = context['tz'] + else: + time_zone = 'Asia/Kolkata' + au_tz = timezone(time_zone) while contact: for entry in contact.entry: - data = self._retreive_data(entry, context=context) + data = self._retreive_data(entry) google_id = data.pop('id') model_data = { 'name': google_id, @@ -161,15 +163,18 @@ 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'])]) if contact_ids: addresses.append(contact_ids[0]) - self.update_contact(cr, uid, contact_ids, data, context=context) + address = addresss_obj.browse(cr, uid, contact_ids[0], context=context) + 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') + if address.write_date < updated_dt: + self.update_contact(cr, uid, contact_ids, data, context=context) res_id = contact_ids[0] if not contact_ids: #create or link to an existing partner only if it's a new contact @@ -195,7 +200,7 @@ class synchronize_google_contact(osv.osv_memory): else: return addresses - def _retreive_data(self, entry, context=None): + def _retreive_data(self, entry): data = {} data['id'] = entry.id.text name = tools.ustr(entry.title.text) @@ -205,19 +210,6 @@ class synchronize_google_contact(osv.osv_memory): 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: if phone.rel == gdata.contacts.REL_WORK: @@ -244,7 +236,6 @@ class synchronize_google_contact(osv.osv_memory): vals['phone'] = data.get('phone','') if not addr.fax: 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'}