[IMP] Google calendar - add function to allow the cron to run google calendar synchronization
This commit is contained in:
parent
ecacffcb6e
commit
f3346223ac
|
@ -37,6 +37,7 @@ The module adds the possibility to synchronize Google Calendar with OpenERP
|
||||||
'security/ir.model.access.csv',
|
'security/ir.model.access.csv',
|
||||||
'views/google_calendar.xml',
|
'views/google_calendar.xml',
|
||||||
'views/res_users.xml',
|
'views/res_users.xml',
|
||||||
|
'google_calendar.xml',
|
||||||
],
|
],
|
||||||
'demo': [],
|
'demo': [],
|
||||||
'installable': True,
|
'installable': True,
|
||||||
|
|
|
@ -40,7 +40,7 @@ class google_calendar_controller(http.Controller):
|
||||||
}
|
}
|
||||||
|
|
||||||
# If App authorized, and user access accepted, We launch the synchronization
|
# If App authorized, and user access accepted, We launch the synchronization
|
||||||
return gc_obj.synchronize_events(request.cr, request.uid, [], context=kw.get('local_context'))
|
return gc_obj.synchronize_events(request.cr, request.uid, [request.uid], context=kw.get('local_context'))
|
||||||
|
|
||||||
return {"status": "success"}
|
return {"status": "success"}
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,8 @@ import urllib2
|
||||||
import openerp
|
import openerp
|
||||||
from openerp import tools
|
from openerp import tools
|
||||||
from openerp import SUPERUSER_ID
|
from openerp import SUPERUSER_ID
|
||||||
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT
|
from openerp.tools import DEFAULT_SERVER_DATE_FORMAT, DEFAULT_SERVER_DATETIME_FORMAT, exception_to_unicode
|
||||||
|
|
||||||
from openerp.tools.translate import _
|
from openerp.tools.translate import _
|
||||||
from openerp.http import request
|
from openerp.http import request
|
||||||
from datetime import datetime, timedelta
|
from datetime import datetime, timedelta
|
||||||
|
@ -496,6 +497,22 @@ class google_calendar(osv.AbstractModel):
|
||||||
current_user.write(reset_data, context=context)
|
current_user.write(reset_data, context=context)
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
def synchronize_events_cron(self, cr, uid, context=None):
|
||||||
|
ids = self.pool['res.users'].search(cr, uid, [('google_calendar_last_sync_date', '!=', False)], context=context)
|
||||||
|
_logger.info("Calendar Synchro - Started by cron")
|
||||||
|
|
||||||
|
for user_to_sync in ids:
|
||||||
|
_logger.info("Calendar Synchro - Starting synchronization for a new user [%s] " % user_to_sync)
|
||||||
|
try:
|
||||||
|
resp = self.synchronize_events(cr, uid, [user_to_sync], lastSync=True, context=None)
|
||||||
|
if resp.get("status") == "need_reset":
|
||||||
|
_logger.info("[%s] Calendar Synchro - Failed - NEED RESET !" % user_to_sync)
|
||||||
|
else:
|
||||||
|
_logger.info("[%s] Calendar Synchro - Done with status : %s !" % (user_to_sync, resp.get("status")))
|
||||||
|
except Exception, e:
|
||||||
|
_logger.info("[%s] Calendar Synchro - Exception : %s !" % exception_to_unicode(e))
|
||||||
|
_logger.info("Calendar Synchro - Ended by cron")
|
||||||
|
|
||||||
def synchronize_events(self, cr, uid, ids, lastSync=True, context=None):
|
def synchronize_events(self, cr, uid, ids, lastSync=True, context=None):
|
||||||
if context is None:
|
if context is None:
|
||||||
context = {}
|
context = {}
|
||||||
|
@ -512,7 +529,8 @@ class google_calendar(osv.AbstractModel):
|
||||||
# status, response = gs_pool._do_request(cr, uid, url, params, type='GET', context=context)
|
# status, response = gs_pool._do_request(cr, uid, url, params, type='GET', context=context)
|
||||||
# return int(status) != 410
|
# return int(status) != 410
|
||||||
|
|
||||||
current_user = self.pool['res.users'].browse(cr, SUPERUSER_ID, uid, context=context)
|
user_to_sync = ids and ids[0] or uid
|
||||||
|
current_user = self.pool['res.users'].browse(cr, SUPERUSER_ID, user_to_sync, context=context)
|
||||||
|
|
||||||
st, current_google, ask_time = self.get_calendar_primary_id(cr, uid, context=context)
|
st, current_google, ask_time = self.get_calendar_primary_id(cr, uid, context=context)
|
||||||
|
|
||||||
|
@ -529,14 +547,14 @@ class google_calendar(osv.AbstractModel):
|
||||||
|
|
||||||
if lastSync and self.get_last_sync_date(cr, uid, context=context) and not self.get_disable_since_synchro(cr, uid, context=context):
|
if lastSync and self.get_last_sync_date(cr, uid, context=context) and not self.get_disable_since_synchro(cr, uid, context=context):
|
||||||
lastSync = self.get_last_sync_date(cr, uid, context)
|
lastSync = self.get_last_sync_date(cr, uid, context)
|
||||||
_logger.info("Calendar Synchro - MODE SINCE_MODIFIED : %s !" % lastSync.strftime(DEFAULT_SERVER_DATETIME_FORMAT))
|
_logger.info("[%s] Calendar Synchro - MODE SINCE_MODIFIED : %s !" % (user_to_sync, lastSync.strftime(DEFAULT_SERVER_DATETIME_FORMAT)))
|
||||||
else:
|
else:
|
||||||
lastSync = False
|
lastSync = False
|
||||||
_logger.info("Calendar Synchro - MODE FULL SYNCHRO FORCED")
|
_logger.info("[%s] Calendar Synchro - MODE FULL SYNCHRO FORCED" % user_to_sync)
|
||||||
else:
|
else:
|
||||||
current_user.write({'google_calendar_cal_id': current_google}, context=context)
|
current_user.write({'google_calendar_cal_id': current_google}, context=context)
|
||||||
lastSync = False
|
lastSync = False
|
||||||
_logger.info("Calendar Synchro - MODE FULL SYNCHRO - NEW CAL ID")
|
_logger.info("[%s] Calendar Synchro - MODE FULL SYNCHRO - NEW CAL ID" % user_to_sync)
|
||||||
|
|
||||||
new_ids = []
|
new_ids = []
|
||||||
new_ids += self.create_new_events(cr, uid, context=context)
|
new_ids += self.create_new_events(cr, uid, context=context)
|
||||||
|
|
Loading…
Reference in New Issue