I have a login form on my index page.
def index():
# If user is not logged in
if not auth.is_logged_in():
auth.settings.formstyle='bootstrap'
db.auth_user.email.widget = lambda f,v: SQLFORM.widgets.string.widget(f, v, _placeholder='Enter your email address')
db.auth_user.password.widget = lambda f,v: SQLFORM.widgets.password.widget(f, v, _placeholder='Enter your password')
return dict(formLogin = auth(), loggedIn = False)
"brez sc_menu_data ker ga ne rabmo"
scripts = db((db.auth_user.id == auth.user_id) & (db.scripts.sc_organization == db.auth_user.organization)
).select(db.scripts.id, db.scripts.sc_status, db.scripts.sc_cal_start, db.scripts.sc_cal_end, db.scripts.sc_name, db.scripts.sc_modified,
db.scripts.sc_verification_date, orderby = db.scripts.id).as_list()
for script in scripts:
sa_start = db(db.script_activity.sa_id_script == script['id']).select(db.script_activity.sa_start, orderby = ~db.script_activity.sa_start, limitby = (0, 1)).as_list()
script['sa_start'] = sa_start[0]['sa_start'] if sa_start else None
##pogledamo še kakšen je status userja (free user itd)
user = auth.user_id
#userRegDate = db(db.auth_user.id == user).select(db.auth_user.regdate).first()["regdate"]
userFreeEndDate = db(db.accounting.ac_organization == user).select(db.accounting.ac_end_date).first()["ac_end_date"]
email = db(db.auth_user.id == user).select(db.auth_user.email).first()["email"]
org = db(db.auth_user.id == user).select(db.auth_user.organization).first()["organization"]
userStatus = db(db.accounting.ac_organization == org).select(db.accounting.ac_customer,db.accounting.ac_run_status).first()
userType = userStatus.ac_customer
runStatus = userStatus.ac_run_status
today = datetime.datetime.now()
""""če je trenutni datum manjši od datuma registracije + 30 dni pol je user free user
Drugače se prestavi runStatus na 1 in user ne more več računat, ac_end_date se pa poveča za 7 dni"""
"userFreeEndDate je datum registracije + 30 dni, ki se ga prebere iz baze"
"newUserRegEndDate je datum registracije + 30 dni, ki se zračuna že na začetku + 7 dni, samo se računa iz datuma registracije"
note = db(db.accounting.ac_organization == user).select(db.accounting.ac_note).first()["ac_note"]
"""Če je danes večji od konca free user acounta in v polju ac_note ni nič, kar pomeni da se mu mail še ni poslal, se runstatus spremeni v 1
in pošlje se mail, ter new user date se skreira ki je 7 dni kasnej da lahko še en teden gleda ne more pa računat"""
if ((today.date() > userFreeEndDate) and (not note or note is None)):
"runStatus gre v 1 in in ac_end_Date se poveča za 7 dni, uporabnik ne more več dat računat"
newUserRegEndDate = userFreeEndDate + datetime.timedelta(days=7)
db(db.accounting.ac_organization == user).update(ac_run_status = 1, ac_end_date = newUserRegEndDate)
runStatus = 1
#TO-DO
#Pošlji mail obema, in to se zapiše v ac_note da se ne pošilja vsakič ko kdo klikne F5
message_content = T('Your Free user account expired. If you are satisfied with Woshi and would like to use it more, please contact xxx to extend \
your subscription. Thank you')
mail.send(to=[email],
subject='Woshi Free user account expired',
message=message_content,
)
mail.send(to = 'xx',
subject= 'User account expired',
message = 'User with e-mail address ' + email + ' has expired his subscription. Better call him !'
)
db(db.accounting.ac_organization == user).update(ac_note = 'Free user expiration mail sent.')
"Če je danes po tem ko ma user konc accounta - tega se ročno nastavla"
elif ((today.date() > userFreeEndDate) and (runStatus == 1)):
"User ne more računat zato gre ac_run_status v 0 in user ne more ni več, tud ne vid več svojih skript itd."
db(db.accounting.ac_organization == user).update(ac_run_status = 0)
runStatus = 0
#TO-DO
#Pošlji mail obema
message_content = T('Your user account expired. Please contact to extend your subscription and continue using Woshi.')
mail.send(to=[email],
subject='Woshi User account expired',
message=message_content,
)
mail.send(to = 'xxxx',
subject= 'User account expired',
message = 'User with e-mail address ' + email + ' has expired his subscription. Better call him !')
db(db.accounting.ac_organization == user).update(ac_note = 'User cannot use Woshi anymore. His subscription expired.')
return dict(loggedIn = True, scripts = scripts, message=T("Hello World"),userType = userType, runStatus = runStatus)
...
....
.....