def render_template(request, template_name, **kwargs): user_name = request.headers.get('x-webauth-user') # TODO maybe use the webauth request decorator if EvalSettings.query.first() is None: db.session.add(EvalSettings()) db.session.flush() db.session.commit() lockdown = EvalSettings.query.first().site_lockdown is_active = ldap_is_active(user_name) is_alumni = ldap_is_alumni(user_name) is_eboard = ldap_is_eboard(user_name) is_financial = ldap_is_financial_director(user_name) is_eval = ldap_is_eval_director(user_name) is_intromember = ldap_is_intromember(user_name) if is_eval: lockdown = False return flask_render_template(template_name, lockdown=lockdown, is_active=is_active, is_alumni=is_alumni, is_eboard=is_eboard, is_eval_director=is_eval, is_financial_director=is_financial, is_intromember=is_intromember, **kwargs)
def slideshow_spring_review(user_dict=None): log = logger.new(request=request, auth_dict=user_dict) if not ldap_is_eval_director(user_dict['account']): return redirect("/dashboard", code=302) post_data = request.get_json() uid = post_data['uid'] status = post_data['status'] log.info('Spring Eval for {}: {}'.format(uid, status)) SpringEval.query.filter( SpringEval.uid == uid and SpringEval.active). \ update( { 'status': status }) db.session.flush() db.session.commit() # Automate ldap group organizing account = ldap_get_member(uid) if status == "Passed": if ldap_is_intromember(account): ldap_set_not_intro_member(account) elif status == "Failed": if ldap_is_intromember(account): ldap_set_failed(account) ldap_set_inactive(account) else: ldap_set_bad_standing(account) return jsonify({"success": True}), 200
def display_intro_evals_form(user_dict=None): log = logger.new(request=request, auth_dict=user_dict) log.info('Display Intro Evals Form') if not ldap_is_intromember(user_dict['account']): return redirect("/dashboard") eval_data = FreshmanEvalData.query.filter( FreshmanEvalData.uid == user_dict['username']).first() is_open = EvalSettings.query.first().intro_form_active # return names in 'first last (username)' format return render_template('intro_evals_form.html', username=user_dict['username'], social_events=eval_data.social_events, other_notes=eval_data.other_notes, is_open=is_open)
def render_template(request, template_name, **kwargs): user_name = request.headers.get('x-webauth-user') # TODO maybe use the webauth request decorator if EvalSettings.query.first() is None: db.session.add(EvalSettings()) db.session.flush() db.session.commit() account = ldap_get_member(user_name) lockdown = EvalSettings.query.first().site_lockdown accepting_dues = EvalSettings.query.first().accept_dues_until > date.today() is_active = ldap_is_active(account) is_alumni = ldap_is_alumni(account) is_eboard = ldap_is_eboard(account) is_financial = ldap_is_financial_director(account) is_eval = ldap_is_eval_director(account) is_intromember = ldap_is_intromember(account) is_rtp = ldap_is_rtp(account) cm_review = len(CommitteeMeeting.query.filter( CommitteeMeeting.approved == False).all()) # pylint: disable=singleton-comparison ts_review = len(TechnicalSeminar.query.filter( TechnicalSeminar.approved == False).all()) # pylint: disable=singleton-comparison admin_warning = lockdown if is_eboard or is_rtp: lockdown = False return flask_render_template( template_name, lockdown=lockdown, admin_warning=admin_warning, accepting_dues=accepting_dues, is_active=is_active, is_alumni=is_alumni, is_eboard=is_eboard, is_eval_director=is_eval, is_financial_director=is_financial, is_intromember=is_intromember, is_rtp=is_rtp, pending_review=(cm_review + ts_review), **kwargs)
def render_template(template_name, user_dict=None, **kwargs): if EvalSettings.query.first() is None: db.session.add(EvalSettings()) db.session.flush() db.session.commit() lockdown = EvalSettings.query.first().site_lockdown accepting_dues = EvalSettings.query.first().accept_dues_until > date.today( ) is_active = ldap_is_active(user_dict['account']) is_alumni = ldap_is_alumni(user_dict['account']) is_eboard = ldap_is_eboard(user_dict['account']) is_financial = ldap_is_financial_director(user_dict['account']) is_eval = ldap_is_eval_director(user_dict['account']) is_intromember = ldap_is_intromember(user_dict['account']) is_rtp = ldap_is_rtp(user_dict['account']) cm_review = len( CommitteeMeeting.query.filter( CommitteeMeeting.approved == False).all()) # pylint: disable=singleton-comparison ts_review = len( TechnicalSeminar.query.filter( TechnicalSeminar.approved == False).all()) # pylint: disable=singleton-comparison admin_warning = lockdown if is_eboard or is_rtp: lockdown = False return flask_render_template(template_name, lockdown=lockdown, admin_warning=admin_warning, accepting_dues=accepting_dues, is_active=is_active, is_alumni=is_alumni, is_eboard=is_eboard, is_eval_director=is_eval, is_financial_director=is_financial, is_intromember=is_intromember, is_rtp=is_rtp, pending_review=(cm_review + ts_review), **kwargs)
def display_intro_evals_form(): log = logger.new(request=request) log.info('Display Intro Evals Form') # get user data user_name = request.headers.get('x-webauth-user') account = ldap_get_member(user_name) if not ldap_is_intromember(account): return redirect("/dashboard") eval_data = FreshmanEvalData.query.filter( FreshmanEvalData.uid == user_name).first() is_open = EvalSettings.query.first().intro_form_active # return names in 'first last (username)' format return render_template(request, 'intro_evals_form.html', username=user_name, social_events=eval_data.social_events, other_notes=eval_data.other_notes, is_open=is_open)
def display_intro_evals_form(): log = logger.new(user_name=request.headers.get("x-webauth-user"), request_id=str(uuid.uuid4())) log.info('frontend', action='display intro evals form') # get user data user_name = request.headers.get('x-webauth-user') if not ldap_is_intromember(user_name): return redirect("/dashboard") eval_data = FreshmanEvalData.query.filter( FreshmanEvalData.uid == user_name).first() is_open = EvalSettings.query.first().intro_form_active # return names in 'first last (username)' format return render_template(request, 'intro_evals_form.html', username=user_name, social_events=eval_data.social_events, other_notes=eval_data.other_notes, is_open=is_open)
def display_dashboard(): log = logger.new(user_name=request.headers.get("x-webauth-user"), request_id=str(uuid.uuid4())) log.info('frontend', action='display dashboard') # get user data user_name = request.headers.get('x-webauth-user') can_vote = get_voting_members() data = dict() data['username'] = user_name data['name'] = ldap_get_name(user_name) # Member Status data['active'] = ldap_is_active(user_name) # On-Floor Status data['onfloor'] = ldap_is_onfloor(user_name) # Voting Status data['voting'] = bool(user_name in can_vote) # freshman shit if ldap_is_intromember(user_name): data['freshman'] = get_freshman_data(user_name) else: data['freshman'] = False spring = {} c_meetings = [ m.meeting_id for m in MemberCommitteeAttendance.query.filter( MemberCommitteeAttendance.uid == user_name) ] spring['committee_meetings'] = len(c_meetings) h_meetings = [(m.meeting_id, m.attendance_status) for m in MemberHouseMeetingAttendance.query.filter( MemberHouseMeetingAttendance.uid == user_name)] spring['hm_missed'] = len([h for h in h_meetings if h[1] == "Absent"]) data['spring'] = spring # only show housing if member has onfloor status if ldap_is_onfloor(user_name): housing = dict() housing['points'] = ldap_get_housing_points(user_name) housing['room'] = ldap_get_room_number(user_name) if housing['room'] == "N/A": housing['queue_pos'] = "%s / %s" % (get_queue_position(user_name), get_queue_length()) else: housing['queue_pos'] = "N/A" else: housing = None data['housing'] = housing data['major_projects'] = [{ 'id': p.id, 'name': p.name, 'status': p.status, 'description': p.description } for p in MajorProject.query.filter(MajorProject.uid == user_name)] data['major_projects_count'] = len(data['major_projects']) spring['mp_status'] = "Failed" for mp in data['major_projects']: if mp['status'] == "Pending": spring['mp_status'] = 'Pending' continue if mp['status'] == "Passed": spring['mp_status'] = 'Passed' break conditionals = [{ 'date_created': c.date_created, 'date_due': c.date_due, 'description': c.description, 'status': c.status } for c in Conditional.query.filter(Conditional.uid == user_name)] data['conditionals'] = conditionals data['conditionals_len'] = len(conditionals) cm_attendance = [{ 'type': m.committee, 'datetime': m.timestamp.date() } for m in CommitteeMeeting.query.filter( CommitteeMeeting.id.in_(c_meetings))] hm_attendance = [{ 'reason': m.excuse, 'datetime': HouseMeeting.query.filter(HouseMeeting.id == m.meeting_id).first().date } for m in MemberHouseMeetingAttendance.query.filter( MemberHouseMeetingAttendance.uid == user_name).filter( MemberHouseMeetingAttendance.attendance_status == "Absent")] data['cm_attendance'] = cm_attendance data['cm_attendance_len'] = len(cm_attendance) data['hm_attendance'] = hm_attendance data['hm_attendance_len'] = len(hm_attendance) return render_template(request, 'dashboard.html', **data)
def display_dashboard(user_dict=None): log = logger.new(request=request, auth_dict=user_dict) log.info('display dashboard') # Get the list of voting members. can_vote = get_voting_members() data = dict() data['username'] = user_dict['account'].uid data['active'] = ldap_is_active(user_dict['account']) data['bad_standing'] = ldap_is_bad_standing(user_dict['account']) data['onfloor'] = ldap_is_onfloor(user_dict['account']) data['voting'] = bool(user_dict['account'].uid in can_vote) data['voting_count'] = { "Voting Members": len(can_vote), "Active Members": len(ldap_get_active_members()) } # freshman shit if ldap_is_intromember(user_dict['account']): data['freshman'] = get_freshman_data(user_dict['account'].uid) else: data['freshman'] = False spring = {} c_meetings = get_cm(user_dict['account']) spring['committee_meetings'] = len(c_meetings) spring['req_meetings'] = req_cm(user_dict['account']) h_meetings = [(m.meeting_id, m.attendance_status) for m in get_hm(user_dict['account'])] spring['hm_missed'] = len([h for h in h_meetings if h[1] == "Absent"]) eval_entry = SpringEval.query.filter( SpringEval.uid == user_dict['account'].uid, SpringEval.date_created > start_of_year(), SpringEval.active == True).first() # pylint: disable=singleton-comparison if eval_entry is not None: spring['status'] = eval_entry.status else: spring['status'] = None data['spring'] = spring # only show housing if member has onfloor status if ldap_is_onfloor(user_dict['account']): housing = dict() housing['points'] = user_dict['account'].housingPoints housing['room'] = user_dict['account'].roomNumber housing['queue_pos'] = get_queue_position(user_dict['account'].uid) else: housing = None data['housing'] = housing data['major_projects'] = [{ 'id': p.id, 'name': p.name, 'status': p.status, 'description': p.description } for p in MajorProject.query.filter( MajorProject.uid == user_dict['account'].uid, MajorProject.date > start_of_year())] data['major_projects_count'] = len(data['major_projects']) spring['mp_status'] = "Failed" for mp in data['major_projects']: if mp['status'] == "Pending": spring['mp_status'] = 'Pending' continue if mp['status'] == "Passed": spring['mp_status'] = 'Passed' break conditionals = [{ 'date_created': c.date_created, 'date_due': c.date_due, 'description': c.description, 'status': c.status } for c in Conditional.query.filter( Conditional.uid == user_dict['account'].uid, Conditional.date_due > start_of_year())] data['conditionals'] = conditionals data['conditionals_len'] = len(conditionals) hm_attendance = [{ 'reason': m.excuse, 'datetime': m.date } for m in MemberHouseMeetingAttendance.query.outerjoin( HouseMeeting, MemberHouseMeetingAttendance.meeting_id == HouseMeeting.id).with_entities( MemberHouseMeetingAttendance.excuse, HouseMeeting.date).filter( MemberHouseMeetingAttendance.uid == user_dict['account'].uid, MemberHouseMeetingAttendance.attendance_status == "Absent", HouseMeeting.date > start_of_year())] data['cm_attendance'] = c_meetings data['cm_attendance_len'] = len(c_meetings) data['hm_attendance'] = hm_attendance data['hm_attendance_len'] = len(hm_attendance) return render_template('dashboard.html', **data)