# Functions not dependent on advlabdb.models from random import choice from string import ascii_letters, digits from sqlalchemy import func, select from . import app, db def randomPassword(): password_length = app.config["SECURITY_PASSWORD_LENGTH_MIN"] return "".join(choice(ascii_letters + digits) for i in range(password_length)) def reportBadAttempt(message): print("BAD ATTEMPT:", message) # TODO: Log def get_count(table): return db.session.scalar(select(func.count()).select_from(table)) def get_first(table): return db.session.execute(table.limit(1)).scalars().first()