def get(nick, authenticated=False): """Return an User from database. If failed, None.""" try: condition = {'users.nick': nick} pfactory = PosGraduationFactory() dao = pfactory.post_graduations_dao() program = list(dao.find(condition)) if program: initials = program[0]['initials'] else: return None for user in program[0]['users']: if nick.lower() == user['nick'].lower(): found_user = User() found_user._nick = user['nick'] found_user._pg_initials = initials.lower() found_user._full_name = user['fullName'] found_user._role = user['role'] found_user._email = user['email'] found_user._token = user['token'] found_user.__is_authenticated = authenticated found_user.__is_active = True found_user.__is_anonymous = False return found_user return None except (TypeError, AttributeError): return None
def get_std_for_template(post_graduation, give_me_empty=False): """ Return default template stuff for jinja to render. Freely put None if theres no post_graduation dict. But if there's one, must be the found by DAOs and requested by user. Must be called like this in every template: return render_template('MYTEMPLATE.html', std=get_std_for_template(None), ...) That said, there will always be a std dict in jinja environments. Jinja will have following template vars, if you called it right: std.post_graduation (dict for current given post graduation) std.post_graduations_registered (dict for the post graduations available at minerva) std.post_graduations_unregistered (dict for post graduations unavailable at minerva) They can be None if nothing has found from database or provided by function args. Jinja will have the following template vars, if you called it with give_me_empty=True: std.post_graduation == None std.post_graduations_registered == [] std.post_graduations_unregistered == [] """ if give_me_empty: return { 'post_graduation': None, 'post_graduations_registered': [], 'post_graduations_unregistered': [], } else: pfactory = PosGraduationFactory() post_graduations_registered = pfactory.post_graduations_dao().find( {'isSignedIn': True}) post_graduations_unregistered = pfactory.post_graduations_dao().find( {'isSignedIn': False}) return { 'post_graduation': post_graduation, 'post_graduations_registered': post_graduations_registered, 'post_graduations_unregistered': post_graduations_unregistered, }
def get_std_for_template(post_graduation, give_me_empty=False): """ Return default template stuff for jinja to render. Freely put None if theres no post_graduation dict. But if there's one, must be the found by DAOs and requested by user. Must be called like this in every template: return render_template('MYTEMPLATE.html', std=get_std_for_template(None), ...) That said, there will always be a std dict in jinja environments. Jinja will have following template vars, if you called it right: std.post_graduation (dict for current given post graduation) std.post_graduations_registered (dict for the post graduations available at minerva) std.post_graduations_unregistered (dict for post graduations unavailable at minerva) They can be None if nothing has found from database or provided by function args. Jinja will have the following template vars, if you called it with give_me_empty=True: std.post_graduation == None std.post_graduations_registered == [] std.post_graduations_unregistered == [] """ if give_me_empty: return { 'post_graduation': None, 'post_graduations_registered': [], 'post_graduations_unregistered': [], } else: pfactory = PosGraduationFactory() post_graduations_registered = pfactory.post_graduations_dao().find({'isSignedIn': True}) post_graduations_unregistered = pfactory.post_graduations_dao().find({'isSignedIn': False}) return { 'post_graduation': post_graduation, 'post_graduations_registered': post_graduations_registered, 'post_graduations_unregistered': post_graduations_unregistered, }