summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorapa-tiny <patelamit2003@gmail.com>2008-12-11 19:00:48 +0530
committerapa-tiny <patelamit2003@gmail.com>2008-12-11 19:00:48 +0530
commitcfc14c69aebfa5ae8cb0536712c4cf9168e43fe9 (patch)
tree1e66ad376c5f20861a90bebde02190e34e0732b0
parentd1ab49e090f8d7c6f09dac8199607e759660e050 (diff)
add logout method for ajm
bzr revid: patelamit2003@gmail.com-20081211133048-x1me7ic1dft9qgs8
-rw-r--r--bin/service/security.py10
-rw-r--r--bin/service/web_services.py24
2 files changed, 33 insertions, 1 deletions
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.