[IMP] Redirect admin to configurations page for Google Calendar API when trying synchro but not still configured

bzr revid: jke@openerp.com-20131219165011-xgy18qcr1n1q4jz1
This commit is contained in:
jke-openerp 2013-12-19 17:50:11 +01:00
parent e70d4e88ae
commit 59c932477e
3 changed files with 20 additions and 4 deletions

View File

@ -28,9 +28,14 @@ class google_calendar_controller(http.Controller):
client_id = gs_obj.get_client_id(request.cr, request.uid,'calendar',context=kw.get('LocalContext'))
if not client_id or client_id == '':
action = ''
if gc_obj.can_authorize_google(request.cr,request.uid):
dummy, action = request.registry.get('ir.model.data').get_object_reference(request.cr, request.uid, 'google_calendar', 'action_config_settings_google_calendar')
return {
"status" : "NeedConfigFromAdmin",
"url" : ''
"url" : '',
"action" : action
}
# Checking that user have already accepted OpenERP to access his calendar !

View File

@ -672,6 +672,9 @@ class google_calendar(osv.osv):
url = self.pool.get('google.service')._get_authorize_uri(cr,uid,from_url,self.STR_SERVICE,scope=self.get_calendar_scope(),context=context)
return url
def can_authorize_google(self,cr,uid,context=None):
return self.pool['res.users'].has_group(cr, uid, 'base.group_erp_manager')
def set_all_tokens(self,cr,uid,authorization_code,context=None):
gs_pool = self.pool.get('google.service')
all_token = gs_pool._get_google_token_json(cr, uid, authorization_code,self.STR_SERVICE,context=context)

View File

@ -32,8 +32,16 @@ openerp.google_calendar = function(instance) {
window.location = o.url;
}
else if (o.status == "NeedConfigFromAdmin") {
alert(_t("Admin need to configure Google Synchronization before to use it !"));
window.location = o.url;
if (typeof o.action !== 'undefined' && parseInt(o.action)) {
if (confirm(_t("An admin need to configure Google Synchronization before to use it, do you want to configure it now ? !"))) {
self.do_action(o.action);
}
}
else {
alert(_t("An admin need to configure Google Synchronization before to use it !"));
}
//window.location = o.url;
}
else if (o.status == "NeedRefresh"){
self.$calendar.fullCalendar('refetchEvents');