# Functions not dependent on advlabdb from flask import flash from markupsafe import Markup def flashRandomPassword(password): flash(f"Random password: {password}", category="warning") def parse_bool(str): str_lower = str.lower() if str_lower == "false": return False elif str_lower == "true": return True else: raise ValueError(f'Can not parse a bool from "{str}"') def missing_formatter(view, context, model, name): attr = getattr(model, name) if attr is None: return Markup("MISSING") return attr def str_without_semester_formatter(view, context, model, name): attr = getattr(model, name) if attr is not None: return attr.str_without_semester() return attr