1+ import datetime
2+
13from api .database .db import db
24
35
@@ -13,6 +15,7 @@ def add_to_queue_by_card_swipe(swipe_data):
1315 student = db .lookup_person_number (pn )
1416 if student is not None :
1517 add_to_queue (student )
18+ db .update_swipe_time (student ["user_id" ])
1619 return True
1720 return False
1821
@@ -24,6 +27,7 @@ def add_to_queue_by_ta_override(identifier, front=False):
2427 add_to_front_of_queue (student )
2528 else :
2629 add_to_queue (student )
30+ db .update_swipe_time (student ["user_id" ])
2731 return True
2832 return False
2933
@@ -46,3 +50,66 @@ def remove_from_queue_without_visit(student, reason):
4650 db .end_visit (visit , reason )
4751 return True
4852
53+ def self_add_to_queue (student ):
54+ if is_active (student ):
55+ db .enqueue_student (student )
56+ return True
57+ return False
58+
59+ def is_active (student ):
60+ # YYYY-MM-DD HH:MM:SS
61+ time_format = "%Y-%m-%d %H:%M:%S"
62+
63+ now = datetime .datetime .now ()
64+ enqueue_time = db .get_swipe_time (student )
65+
66+ if enqueue_time is None :
67+ return False
68+
69+ enqueue_time = datetime .datetime .strptime (enqueue_time , time_format )
70+
71+ seconds = (now - enqueue_time ).seconds
72+
73+ if seconds > 7200 :
74+ return False
75+
76+ return True
77+
78+ def get_students_visit (student ):
79+ in_progress = db .get_in_progress_visits ()
80+ in_progress = list (filter (lambda v : v ["student_id" ] == student , in_progress ))
81+
82+ if len (in_progress ) == 0 :
83+ return None
84+
85+
86+ visit = in_progress [0 ]
87+ ta = db .lookup_identifier (visit ["ta_id" ])
88+
89+ return {
90+ "ta_name" : ta ["preferred_name" ]
91+ }
92+
93+
94+ def get_tas_visit (ta ):
95+
96+ in_progress = db .get_in_progress_visits ()
97+ in_progress = list (filter (lambda v : v ["ta_id" ] == ta , in_progress ))
98+
99+ if len (in_progress ) == 0 :
100+ return None
101+
102+ visit = in_progress [0 ]
103+ student = db .lookup_identifier (visit ["student_id" ])
104+
105+ return {
106+ "id" : visit ["student_id" ],
107+ "username" : student ["ubit" ],
108+ "pn" : student ["person_num" ],
109+ "preferred_name" : student ["preferred_name" ],
110+ "visitID" : visit ["visit_id" ],
111+ "visit_reason" : visit ["student_visit_reason" ]
112+ }
113+
114+
115+
0 commit comments