import os import secrets from PIL import Image from flask import url_for, current_app from flask_mail import Message from iot.app import mail from iot.blueprints.user.models import Users, User_Roles from sqlalchemy import case def dbGetMailFirst(mail): return Users.query.filter_by(email_account=mail).first() def save_picture(form_picture): random_hex = secrets.token_hex(8) _, f_ext = os.path.splitext(form_picture.filename) picture_fn = random_hex + f_ext picture_path = os.path.join(current_app.root_path, 'static/pics', picture_fn) output_size = (125, 125) i = Image.open(form_picture) i.thumbnail(output_size) i.save(picture_path) return picture_fn def send_reset_email(user): token = user.get_reset_token() msg = Message('Password Reset Request', sender='noreply@demo.com', recipients=[user.email_account]) msg.body = f'''To reset your password, visit the following link: {url_for('user.reset_token', token=token, _external=True)} If you didn't make this request, then simply ingnore this email and no chancges will be made. ''' mail.send(msg) def queryRoleById(id): return User_Roles.query.get_or_404(id) def queryUserChoices(curretnId): choices = Users.query.order_by(case((Users.id == curretnId, 0),else_=1),Users.username.asc()) return choices