I am going to develop the time sheet app so for that i captured the login
and logout event through this :-
auth.settings.login_onaccept = lambda form: lgin(form)
auth.settings.logout_onlogout = lambda usr: lgout(usr)
and one more question in my mind when the browser will be closed by some
reasons and the system will be shut-down due to power loss that time how we
capture the event and will show it logout and update our database following
is my database and the controller :-
database:-
db.define_table('employee_login_detail',
Field('employee_id'),
Field('employee_name'),
Field('employee_login_date'),
Field('employee_login_time'),
Field('employee_logout_date',default='Logged in'),
Field('employee_logout_time',default='Logged in'),
Field('total_minutes',default='Logged in'))
Controller:-
def lgin(form):
import datetime
import time
currentdate=datetime.date.today()
now = time.localtime(time.time())
starttime = datetime.datetime.now()
session.starttime = starttime
currenttime = time.strftime("%H:%M:%S", now)
session.time = currenttime
for row in db(db.auth_user.email ==
auth.user.email).select(db.auth_user.first_name):
firstname=row.first_name
db.employee_login_detail.insert(employee_id = auth.user.email,
employee_name=firstname, employee_login_date=currentdate,
employee_login_time=currenttime)
return ''
def lgout(usr):
import datetime
import time
currentdate=datetime.date.today()
now = time.localtime(time.time())
endtime=datetime.datetime.now()
starttime = session.starttime
delta = (endtime - starttime)
totalminutes = str(delta.seconds / 60)
currenttime = time.strftime("%H:%M:%S", now)
db((db.employee_login_detail.employee_id == auth.user.email) &
(db.employee_login_detail.employee_login_date == currentdate) &
(db.employee_login_detail.employee_login_time ==
session.time)).update(employee_logout_date=currentdate,
employee_logout_time=currenttime, total_minutes=totalminutes)
return ''