@@ -81,6 +81,53 @@ def enqueue_ta_override():
8181
8282 return {"message" : "No student matching provided identifier" }, 404
8383
84+ @blueprint .route ("/restore-visit" , methods = ["GET" ])
85+ @min_level ("ta" )
86+ def restore_visit ():
87+ """
88+ Returns a visit in the database involving the user that hasn't
89+ ended yet, if such a visit exists.
90+
91+ i.e. if a TA refreshes the queue before ending the visit
92+
93+
94+ Returns:
95+ 200 OK - visit found
96+ {
97+ "id": <int>,
98+ "username": <string>,
99+ "pn": <string>,
100+ "preferred_name: <string>,
101+ "visitID": <string>,
102+ "visit_reason": <string>
103+ }
104+
105+ 404 Not Found - no such visit exists
106+ """
107+ user = get_user (request .cookies )
108+
109+ if user is None :
110+ return {"message" : "You are not authenticated!" }, 403
111+
112+ user_id = user ["user_id" ]
113+
114+ in_progress = db .get_in_progress_visits ()
115+ in_progress = list (filter (lambda v : v ["ta_id" ] == user_id , in_progress ))
116+
117+ if len (in_progress ) == 0 :
118+ return {"message" : "You have no in-progress visits." }, 404
119+
120+ visit = in_progress [0 ]
121+ student = db .lookup_identifier (visit ["student_id" ])
122+
123+ return {
124+ "id" : visit ["student_id" ],
125+ "username" : student ["ubit" ],
126+ "pn" : student ["person_num" ],
127+ "preferred_name" : student ["preferred_name" ],
128+ "visitID" : visit ["visit_id" ],
129+ "visit_reason" : visit ["student_visit_reason" ]
130+ }
84131
85132@blueprint .route ("/help-a-student" , methods = ["POST" ])
86133@min_level ("ta" )
0 commit comments