1010from conditional .models .models import FreshmanCommitteeAttendance
1111from conditional .models .models import FreshmanHouseMeetingAttendance
1212from conditional .models .models import FreshmanSeminarAttendance
13+ from conditional .models .models import FreshmanSeminarHost
1314from conditional .models .models import HouseMeeting
1415from conditional .models .models import MemberCommitteeAttendance
1516from conditional .models .models import MemberHouseMeetingAttendance
1617from conditional .models .models import MemberSeminarAttendance
18+ from conditional .models .models import MemberSeminarHost
1719from conditional .models .models import TechnicalSeminar
1820from conditional .util .auth import get_user
1921from conditional .util .flask import render_template
@@ -218,6 +220,8 @@ def submit_seminar_attendance(user_dict=None):
218220 seminar_name = post_data ['name' ]
219221 m_attendees = post_data ['members' ]
220222 f_attendees = post_data ['freshmen' ]
223+ m_host = post_data ['member_host' ]
224+ f_host = post_data ['freshman_host' ]
221225 timestamp = post_data ['timestamp' ]
222226
223227 timestamp = datetime .strptime (timestamp , "%Y-%m-%d" )
@@ -228,12 +232,24 @@ def submit_seminar_attendance(user_dict=None):
228232 db .session .refresh (seminar )
229233
230234 for m in m_attendees :
235+ if m in m_host :
236+ log .info (f'Skipped giving Attendence to { m } for { seminar_name } ' )
237+ continue
231238 log .info (f'Gave Attendance to { m } for { seminar_name } ' )
232239 db .session .add (MemberSeminarAttendance (m , seminar .id ))
240+ for m in m_host :
241+ log .info (f'Gave Host Credit to { m } for { seminar_name } ' )
242+ db .session .add (MemberSeminarHost (m , seminar .id ))
233243
234244 for f in f_attendees :
245+ if f in f_host :
246+ log .info (f'Skipped giving Attendance to freshman-{ f } for { seminar_name } ' )
247+ continue
235248 log .info (f'Gave Attendance to freshman-{ f } for { seminar_name } ' )
236249 db .session .add (FreshmanSeminarAttendance (f , seminar .id ))
250+ for f in f_host :
251+ log .info (f'Gave Host Credit to freshman-{ f } for { seminar_name } ' )
252+ db .session .add (FreshmanSeminarHost (f , seminar .id ))
237253
238254 db .session .commit ()
239255 return jsonify ({"success" : True }), 200
@@ -379,6 +395,18 @@ def get_seminar_attendees(meeting_id):
379395 FreshmanAccount .id == freshman ).first ().name )
380396 return attendees
381397
398+ def get_seminar_hosts (meeting_id ):
399+ hosts = [ldap_get_member (a .uid ).displayName for a in
400+ MemberSeminarHost .query .filter (
401+ MemberSeminarHost .seminar_id == meeting_id ).all ()]
402+
403+ for freshman in [a .fid for a in
404+ FreshmanSeminarHost .query .filter (
405+ FreshmanSeminarHost .seminar_id == meeting_id ).all ()]:
406+ hosts .append (FreshmanAccount .query .filter (
407+ FreshmanAccount .id == freshman ).first ().name )
408+ return hosts
409+
382410 log = logger .new (request = request , auth_dict = user_dict )
383411
384412 if not user_dict_is_eboard (user_dict ):
@@ -402,6 +430,7 @@ def get_seminar_attendees(meeting_id):
402430 "name" : m .name ,
403431 "dt_obj" : m .timestamp ,
404432 "date" : m .timestamp .strftime ("%a %m/%d/%Y" ),
433+ "hosts" : get_seminar_hosts (m .id ),
405434 "attendees" : get_seminar_attendees (m .id ),
406435 "type" : "ts"
407436 } for m in TechnicalSeminar .query .filter (
@@ -419,6 +448,7 @@ def get_seminar_attendees(meeting_id):
419448 "name" : m .name ,
420449 "dt_obj" : m .timestamp ,
421450 "date" : m .timestamp .strftime ("%a %m/%d/%Y" ),
451+ "hosts" : get_seminar_hosts (m .id ),
422452 "attendees" : get_seminar_attendees (m .id )
423453 } for m in TechnicalSeminar .query .filter (
424454 TechnicalSeminar .timestamp > start_of_year (),
@@ -433,6 +463,7 @@ def get_seminar_attendees(meeting_id):
433463 history = all_meetings ,
434464 pending_cm = pend_cm ,
435465 pending_ts = pend_ts ,
466+ all_ts = all_ts ,
436467 num_pages = total_pages ,
437468 current_page = int (page ))
438469
@@ -483,19 +514,37 @@ def alter_seminar_attendance(sid, user_dict=None):
483514 meeting_id = sid
484515 m_attendees = post_data ['members' ]
485516 f_attendees = post_data ['freshmen' ]
517+ m_host = post_data ['member_host' ]
518+ f_host = post_data ['freshman_host' ]
486519
487520 FreshmanSeminarAttendance .query .filter (
488521 FreshmanSeminarAttendance .seminar_id == meeting_id ).delete ()
489522
523+ FreshmanSeminarHost .query .filter (
524+ FreshmanSeminarHost .seminar_id == meeting_id ).delete ()
525+
490526 MemberSeminarAttendance .query .filter (
491527 MemberSeminarAttendance .seminar_id == meeting_id ).delete ()
492528
529+ MemberSeminarHost .query .filter (
530+ MemberSeminarHost .seminar_id == meeting_id ).delete ()
531+
493532 for m in m_attendees :
533+ if m in m_host :
534+ continue
494535 db .session .add (MemberSeminarAttendance (m , meeting_id ))
495536
537+ for m in m_host :
538+ db .session .add (MemberSeminarHost (m , meeting_id ))
539+
496540 for f in f_attendees :
541+ if f in f_host :
542+ continue
497543 db .session .add (FreshmanSeminarAttendance (f , meeting_id ))
498544
545+ for f in f_host :
546+ db .session .add (FreshmanSeminarHost (f , meeting_id ))
547+
499548 db .session .flush ()
500549 db .session .commit ()
501550 return jsonify ({"success" : True }), 200
@@ -512,12 +561,25 @@ def get_cm_attendees(sid, user_dict=None):
512561 MemberSeminarAttendance .query .filter (
513562 MemberSeminarAttendance .seminar_id == sid ).all ()]
514563
564+ host = [{"value" : a .uid ,
565+ "display" : ldap_get_member (a .uid ).displayName
566+ } for a in
567+ MemberSeminarHost .query .filter (
568+ MemberSeminarHost .seminar_id == sid ).all ()]
569+
515570 for freshman in [{"value" : a .fid ,
516571 "display" : FreshmanAccount .query .filter (FreshmanAccount .id == a .fid ).first ().name
517572 } for a in FreshmanSeminarAttendance .query .filter (
518573 FreshmanSeminarAttendance .seminar_id == sid ).all ()]:
519574 attendees .append (freshman )
520- return jsonify ({"attendees" : attendees }), 200
575+
576+ for freshman in [{"value" : a .fid ,
577+ "display" : FreshmanAccount .query .filter (FreshmanAccount .id == a .fid ).first ().name
578+ } for a in FreshmanSeminarHost .query .filter (
579+ FreshmanSeminarHost .seminar_id == sid ).all ()]:
580+ host .append (freshman )
581+
582+ return jsonify ({"attendees" : attendees , "host" : host }), 200
521583
522584 log = logger .new (request = request , auth_dict = user_dict )
523585 log .info (f'Delete Technical Seminar { sid } ' )
@@ -527,8 +589,12 @@ def get_cm_attendees(sid, user_dict=None):
527589
528590 FreshmanSeminarAttendance .query .filter (
529591 FreshmanSeminarAttendance .seminar_id == sid ).delete ()
592+ FreshmanSeminarHost .query .filter (
593+ FreshmanSeminarHost .seminar_id == sid ).delete ()
530594 MemberSeminarAttendance .query .filter (
531595 MemberSeminarAttendance .seminar_id == sid ).delete ()
596+ MemberSeminarHost .query .filter (
597+ MemberSeminarHost .seminar_id == sid ).delete ()
532598 TechnicalSeminar .query .filter (
533599 TechnicalSeminar .id == sid ).delete ()
534600
0 commit comments