2016-01-21 17:29:24 +00:00
|
|
|
import random
|
|
|
|
|
from datetime import (datetime, timedelta)
|
2016-01-11 17:19:06 +00:00
|
|
|
from . import DAOException
|
2016-01-07 17:31:17 +00:00
|
|
|
from sqlalchemy.orm import load_only
|
|
|
|
|
|
|
|
|
|
from app import db
|
2016-01-21 17:29:24 +00:00
|
|
|
from app.models import (User, VerifyCode)
|
|
|
|
|
from app.encryption import hashpw
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def create_secret_code():
|
|
|
|
|
return ''.join(map(str, random.sample(range(9), 5)))
|
2016-01-07 17:31:17 +00:00
|
|
|
|
|
|
|
|
|
2016-01-11 17:19:06 +00:00
|
|
|
def save_model_user(usr, update_dict={}):
|
|
|
|
|
if update_dict:
|
2016-01-19 11:38:29 +00:00
|
|
|
if update_dict.get('id'):
|
|
|
|
|
del update_dict['id']
|
2016-01-11 17:19:06 +00:00
|
|
|
db.session.query(User).filter_by(id=usr.id).update(update_dict)
|
|
|
|
|
else:
|
|
|
|
|
db.session.add(usr)
|
2016-01-07 17:31:17 +00:00
|
|
|
db.session.commit()
|
|
|
|
|
|
|
|
|
|
|
2016-01-21 17:29:24 +00:00
|
|
|
def create_user_code(user, code, code_type):
|
|
|
|
|
verify_code = VerifyCode(code_type=code_type,
|
|
|
|
|
expiry_datetime=datetime.now() + timedelta(hours=1),
|
|
|
|
|
user=user)
|
|
|
|
|
verify_code.code = code
|
|
|
|
|
db.session.add(verify_code)
|
|
|
|
|
db.session.commit()
|
|
|
|
|
return verify_code
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def get_user_code(user, code, code_type):
|
|
|
|
|
# Get the most recent codes to try and reduce the
|
|
|
|
|
# time searching for the correct code.
|
|
|
|
|
codes = VerifyCode.query.filter_by(
|
|
|
|
|
user=user, code_type=code_type).order_by(
|
|
|
|
|
VerifyCode.created_at.desc())
|
|
|
|
|
retval = None
|
|
|
|
|
for x in codes:
|
|
|
|
|
if x.check_code(code):
|
|
|
|
|
retval = x
|
|
|
|
|
break
|
|
|
|
|
return retval
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def use_user_code(id):
|
|
|
|
|
verify_code = VerifyCode.query.get(id)
|
|
|
|
|
verify_code.code_used = True
|
|
|
|
|
db.session.add(verify_code)
|
|
|
|
|
db.session.commit()
|
|
|
|
|
|
|
|
|
|
|
2016-01-12 10:39:49 +00:00
|
|
|
def delete_model_user(user):
|
|
|
|
|
db.session.delete(user)
|
|
|
|
|
db.session.commit()
|
|
|
|
|
|
|
|
|
|
|
2016-01-11 15:07:13 +00:00
|
|
|
def get_model_users(user_id=None):
|
2016-01-07 17:31:17 +00:00
|
|
|
if user_id:
|
2016-01-08 12:18:12 +00:00
|
|
|
return User.query.filter_by(id=user_id).one()
|
2016-01-07 17:31:17 +00:00
|
|
|
return User.query.filter_by().all()
|