@@ -36,11 +36,11 @@ def get_all_members(user_dict=None):
3636 log .info ('Retrieve Technical Seminar Attendance List' )
3737
3838 members = ldap .get_group_member_attributes (groups = ['current_student' ],
39- excluded_groups = [], attributes = ['uid' , 'displayName' ])
39+ attributes = ['uid' , 'displayName' ])
4040
4141 named_members = [
4242 {
43- 'display ' : f .name ,
43+ 'label ' : f .name ,
4444 'value' : f .id ,
4545 'freshman' : True
4646 } for f in FreshmanAccount .query .filter (
@@ -49,7 +49,7 @@ def get_all_members(user_dict=None):
4949 for account in members :
5050 named_members .append (
5151 {
52- 'display ' : account ['displayName' ],
52+ 'label ' : account ['displayName' ],
5353 'value' : account ['uid' ],
5454 'freshman' : False
5555 })
@@ -66,7 +66,7 @@ def get_non_alumni_non_coop(internal=False, user_dict=None):
6666
6767 # Get all active members as a base house meeting attendance.
6868 active_members = ldap .get_group_member_attributes (groups = ['active' ],
69- excluded_groups = [], attributes = ['uid' , 'displayName' ])
69+ attributes = ['uid' , 'displayName' ])
7070
7171 if datetime .today () < datetime (start_of_year ().year , 12 , 31 ):
7272 semester = 'Fall'
@@ -79,7 +79,7 @@ def get_non_alumni_non_coop(internal=False, user_dict=None):
7979
8080 eligible_members = [
8181 {
82- 'display ' : f .name ,
82+ 'label ' : f .name ,
8383 'value' : f .id ,
8484 'freshman' : True
8585 } for f in FreshmanAccount .query .filter (
@@ -92,7 +92,7 @@ def get_non_alumni_non_coop(internal=False, user_dict=None):
9292
9393 eligible_members .append (
9494 {
95- 'display ' : account ['displayName' ],
95+ 'label ' : account ['displayName' ],
9696 'value' : account ['uid' ],
9797 'freshman' : False
9898 })
@@ -112,12 +112,11 @@ def get_non_alumni(user_dict=None):
112112
113113 current_students = ldap .get_group_member_attributes (
114114 groups = ['current_student' ],
115- excluded_groups = [],
116115 attributes = ['uid' , 'displayName' , 'nsAccountLock' ])
117116
118117 eligible_members = [
119118 {
120- 'display ' : f .name ,
119+ 'label ' : f .name ,
121120 'value' : f .id ,
122121 'freshman' : True
123122 } for f in FreshmanAccount .query .filter (
@@ -129,7 +128,7 @@ def get_non_alumni(user_dict=None):
129128
130129 eligible_members .append (
131130 {
132- 'display ' : account ['displayName' ],
131+ 'label ' : account ['displayName' ],
133132 'value' : account ['uid' ],
134133 'freshman' : False
135134 })
@@ -171,10 +170,14 @@ def display_attendance_hm(user_dict=None):
171170 if not user_dict_is_eval_director (user_dict ):
172171 return redirect ("/dashboard" )
173172
173+ members = get_non_alumni_non_coop (internal = True )
174+
175+ print (members )
176+
174177 return render_template ('attendance_hm.html' ,
175178 username = user_dict ['username' ],
176179 date = datetime .now ().strftime ("%Y-%m-%d" ),
177- members = get_non_alumni_non_coop ( internal = True ) )
180+ members = members )
178181
179182
180183@attendance_bp .route ('/attendance/adhoc_history' , methods = ['GET' ])
@@ -394,53 +397,73 @@ def alter_house_excuse(uid, hid, user_dict=None):
394397@auth .oidc_auth ("default" )
395398@get_user
396399def attendance_history (user_dict = None ):
400+ member_names = { member ['uid' ]: member ['displayName' ]
401+ for member in ldap .get_group_member_attributes (groups = ['current_student' ],
402+ attributes = ['uid' , 'displayName' ]) }
403+
404+ def get_member_name (uid ):
405+ if uid in member_names :
406+ return member_names [uid ]
407+
408+ name = ldap_get_member (uid ).displayName
409+ member_names [uid ] = name
410+ return name
397411
398412 def get_meeting_attendees (meeting_id ):
399- attendees = [ldap_get_member (a .uid ). displayName for a in
413+ attendees = [get_member_name (a .uid ) for a in
400414 MemberCommitteeAttendance .query .filter (
401415 MemberCommitteeAttendance .meeting_id == meeting_id ).all ()]
402416
403- for freshman in [a .fid for a in
417+ freshmen_attendees = [a .fid for a in
404418 FreshmanCommitteeAttendance .query .filter (
405- FreshmanCommitteeAttendance .meeting_id == meeting_id ).all ()]:
419+ FreshmanCommitteeAttendance .meeting_id == meeting_id ).all ()]
420+
421+ for freshman in freshmen_attendees :
406422 attendees .append (FreshmanAccount .query .filter (
407423 FreshmanAccount .id == freshman ).first ().name )
424+
408425 return attendees
409426
410427 def get_seminar_attendees (meeting_id ):
411- attendees = [ldap_get_member (a .uid ). displayName for a in
428+ attendees = [get_member_name (a .uid ) for a in
412429 MemberSeminarAttendance .query .filter (
413430 MemberSeminarAttendance .seminar_id == meeting_id ).all ()]
414-
415- for freshman in [a .fid for a in
431+ freshmen_attendees = [a .fid for a in
416432 FreshmanSeminarAttendance .query .filter (
417- FreshmanSeminarAttendance .seminar_id == meeting_id ).all ()]:
433+ FreshmanSeminarAttendance .seminar_id == meeting_id ).all ()]
434+
435+ for freshman in freshmen_attendees :
418436 attendees .append (FreshmanAccount .query .filter (
419437 FreshmanAccount .id == freshman ).first ().name )
438+
420439 return attendees
421440
422441 def get_seminar_hosts (meeting_id ):
423- hosts = [ldap_get_member (a .uid ). displayName for a in
442+ hosts = [get_member_name (a .uid ) for a in
424443 MemberSeminarHost .query .filter (
425444 MemberSeminarHost .seminar_id == meeting_id ).all ()]
426445
427- for freshman in [a .fid for a in
446+ freshmen_hosts = [a .fid for a in
428447 FreshmanSeminarHost .query .filter (
429- FreshmanSeminarHost .seminar_id == meeting_id ).all ()]:
448+ FreshmanSeminarHost .seminar_id == meeting_id ).all ()]
449+
450+ for freshman in freshmen_hosts :
430451 hosts .append (FreshmanAccount .query .filter (
431452 FreshmanAccount .id == freshman ).first ().name )
453+
432454 return hosts
433455
434456 log = logger .new (request = request , auth_dict = user_dict )
435457
436458 if not user_dict_is_eboard (user_dict ):
437459 return jsonify ({"success" : False , "error" : "Not EBoard" }), 403
438460
439-
440461 page = request .args .get ('page' , 1 )
462+ page_size = int (request .args .get ('size' , 10 ))
463+
441464 log .info ('View Past Attendance Submitions' )
442- offset = 0 if int (page ) == 1 else ((int (page )- 1 ) * 10 )
443- limit = int (page )* 10
465+ offset = 0 if int (page ) == 1 else ((int (page ) - 1 ) * 10 )
466+ limit = int (page ) * page_size
444467 all_cm = [{"id" : m .id ,
445468 "name" : m .committee ,
446469 "adhoc" : m .adhoc ,
@@ -451,6 +474,7 @@ def get_seminar_hosts(meeting_id):
451474 } for m in CommitteeMeeting .query .filter (
452475 CommitteeMeeting .timestamp > start_of_year (),
453476 CommitteeMeeting .approved ).all ()]
477+
454478 all_ts = [{"id" : m .id ,
455479 "name" : m .name ,
456480 "dt_obj" : m .timestamp ,
@@ -461,6 +485,7 @@ def get_seminar_hosts(meeting_id):
461485 } for m in TechnicalSeminar .query .filter (
462486 TechnicalSeminar .timestamp > start_of_year (),
463487 TechnicalSeminar .approved ).all ()]
488+
464489 pend_cm = [{"id" : m .id ,
465490 "name" : m .committee ,
466491 "adhoc" : m .adhoc ,
@@ -470,6 +495,7 @@ def get_seminar_hosts(meeting_id):
470495 } for m in CommitteeMeeting .query .filter (
471496 CommitteeMeeting .timestamp > start_of_year (),
472497 CommitteeMeeting .approved == False ).all ()] # pylint: disable=singleton-comparison
498+
473499 pend_ts = [{"id" : m .id ,
474500 "name" : m .name ,
475501 "dt_obj" : m .timestamp ,
@@ -479,20 +505,47 @@ def get_seminar_hosts(meeting_id):
479505 } for m in TechnicalSeminar .query .filter (
480506 TechnicalSeminar .timestamp > start_of_year (),
481507 TechnicalSeminar .approved == False ).all ()] # pylint: disable=singleton-comparison
508+
482509 all_meetings = sorted ((all_cm + all_ts ), key = lambda k : k ['dt_obj' ], reverse = True )[offset :limit ]
483- if len (all_cm ) % 10 != 0 :
484- total_pages = int (len (all_cm ) / 10 ) + 1
510+ if len (all_cm ) % page_size != 0 :
511+ total_pages = int (len (all_cm ) / page_size ) + 1
485512 else :
486- total_pages = int (len (all_cm ) / 10 )
513+ total_pages = int (len (all_cm ) / page_size )
514+
515+ page_size_options = [
516+ {
517+ 'value' : 10 ,
518+ 'label' : '10'
519+ },
520+ {
521+ 'value' : 25 ,
522+ 'label' : '25'
523+ },
524+ {
525+ 'value' : 50 ,
526+ 'label' : '50'
527+ },
528+ {
529+ 'value' : 100 ,
530+ 'label' : '100'
531+ },
532+ {
533+ 'value' : - 1 ,
534+ 'label' : 'all'
535+ }
536+ ]
537+
538+ selected_page_size = list (filter (lambda opt : opt ['value' ] == page_size , page_size_options ))[0 ]
539+
487540 return render_template ('attendance_history.html' ,
488541 username = user_dict ['username' ],
489542 history = all_meetings ,
490543 pending_cm = pend_cm ,
491544 pending_ts = pend_ts ,
492- all_ts = all_ts ,
493545 num_pages = total_pages ,
494- current_page = int (page ))
495-
546+ page_size = selected_page_size ,
547+ current_page = int (page ),
548+ page_sizes = page_size_options )
496549
497550@attendance_bp .route ('/attendance/alter/cm/<cid>' , methods = ['POST' ])
498551@auth .oidc_auth ("default" )
0 commit comments