From cfc14c69aebfa5ae8cb0536712c4cf9168e43fe9 Mon Sep 17 00:00:00 2001 From: apa-tiny Date: Thu, 11 Dec 2008 19:00:48 +0530 Subject: [PATCH] add logout method for ajm bzr revid: patelamit2003@gmail.com-20081211133048-x1me7ic1dft9qgs8 --- bin/service/security.py | 10 ++++++++++ bin/service/web_services.py | 24 +++++++++++++++++++++++- 2 files changed, 33 insertions(+), 1 deletion(-) diff --git a/bin/service/security.py b/bin/service/security.py index 81c6ef99744..4b6d5055bc1 100644 --- a/bin/service/security.py +++ b/bin/service/security.py @@ -35,6 +35,16 @@ def login(db, login, password): else: return False +def logout(db, login, password): + cr = pooler.get_db(db).cursor() + cr.execute('select login from res_users where id=%d'%(login)) + res = cr.fetchone() + cr.close() + if res: + return res[0] + else: + return False + def check_super(passwd): if passwd == tools.config['admin_passwd']: return True diff --git a/bin/service/web_services.py b/bin/service/web_services.py index ce395d3cd67..7b79ecb116e 100644 --- a/bin/service/web_services.py +++ b/bin/service/web_services.py @@ -282,6 +282,7 @@ class common(netsvc.Service): self.exportMethod(self.ir_del) self.exportMethod(self.about) self.exportMethod(self.login) + self.exportMethod(self.logout) self.exportMethod(self.timezone_get) def ir_set(self, db, uid, password, keys, args, name, value, replace=True, isobject=False): @@ -316,8 +317,29 @@ class common(netsvc.Service): res = security.login(db, login, password) logger = netsvc.Logger() msg = res and 'successful login' or 'bad login or password' - logger.notifyChannel("web-services", netsvc.LOG_INFO, "%s from '%s' using database '%s'" % (msg, login, db.lower())) + logger.notifyChannel("web-service", netsvc.LOG_INFO, "%s from '%s' using database '%s'" % (msg, login, db.lower())) return res or False + + def logout(self, db, login, password): + res = security.logout(db, login, password) + service = netsvc.LocalService("object_proxy") + fields = service.execute(db, login, 'res.users', 'fields_get', {}) + try: + if 'current_status' in fields.keys(): + service.execute(db, login, 'res.users', 'write', login, {'current_status':False}) + emp_id = service.execute(db, login, 'hr.employee', 'search',[('user_id','=',login)]) + emp = emp_id[0] + service.execute(db, login, 'hr.attendance', 'create',{'action':'sign_out','employee_id':emp}) + cr = pooler.get_db(db).cursor() + cr.execute("delete from time_sheet_remote_temp where user_id = '%s'"%(res)) + cr.commit() + cr.close() + except: + pass + logger = netsvc.Logger() + logger.notifyChannel("web-service", netsvc.LOG_INFO,'Logout=>%s from database %s'%(res,db.lower())) + + def about(self, extended=False): """Return information about the OpenERP Server.