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)