1- from flask import render_template , request , json , redirect , url_for , send_file , g , flash
2- from peewee import fn
1+ from flask import render_template , request , json , redirect , url_for , send_file , g , flash , jsonify
2+ from peewee import JOIN
3+ from functools import reduce
4+ import operator
35from app .models .department import Department
46from app .models .supervisor import Supervisor
57from app .models .supervisorDepartment import SupervisorDepartment
68from app .models .student import Student
79from app .models .laborStatusForm import LaborStatusForm
810from app .models .formHistory import FormHistory
11+ from app .models .term import Term
912from app .controllers .admin_routes .allPendingForms import checkAdjustment
1013from app .controllers .main_routes import main_bp
1114from app .logic .download import CSVMaker , saveFormSearchResult , retrieveFormSearchResult
12- from app .logic .search import getDepartmentsForSupervisor
15+ from app .logic .search import getDepartmentsForSupervisor , searchPerson , searchSupervisorPortal
1316from app .login_manager import require_login , logout
1417from app .logic .getTableData import getDatatableData
1518from app .logic .banner import Banner
@@ -31,47 +34,16 @@ def supervisorPortal():
3134
3235 return render_template ('errors/403.html' ), 403
3336
34- terms = LaborStatusForm .select (LaborStatusForm .termCode ).distinct ().order_by (LaborStatusForm .termCode .desc ())
35- allSupervisors = Supervisor .select ()
36- supervisorFirstName = fn .COALESCE (Supervisor .preferred_name , Supervisor .legal_name )
37- studentFirstName = fn .COALESCE (Student .preferred_name , Student .legal_name )
38- department = None
37+ if request .method == 'POST' :
38+ return getDatatableData (request )
39+
3940 if currentUser .isLaborAdmin or currentUser .isFinancialAidAdmin or currentUser .isSaasAdmin :
4041 departments = list (Department .select ().order_by (Department .isActive .desc (), Department .DEPT_NAME .asc ()))
41- supervisors = (Supervisor .select (Supervisor , supervisorFirstName )
42- .order_by (Supervisor .isActive .desc (), supervisorFirstName .contains ("Unknown" ), supervisorFirstName , Supervisor .LAST_NAME ))
43- students = (Student .select (Student , studentFirstName )
44- .order_by (studentFirstName .contains ("Unknown" ), studentFirstName , Student .LAST_NAME ))
45-
4642 else :
4743 departments = list (getDepartmentsForSupervisor (currentUser ).order_by (Department .isActive .desc (), Department .DEPT_NAME .asc ()))
48- deptNames = [department .DEPT_NAME for department in departments ]
49-
50- supervisorPrimaryDepartment = Department .select ().join (SupervisorDepartment ) # count up all forms for a supervisor in department and get the max
51-
52- supervisors = (Supervisor .select (Supervisor , supervisorFirstName )
53- .join_from (Supervisor , LaborStatusForm )
54- .join_from (LaborStatusForm , Department )
55- .where (Department .DEPT_NAME .in_ (deptNames ))
56- .distinct ()
57- .order_by (Supervisor .isActive .desc (), supervisorFirstName .contains ("Unknown" ), supervisorFirstName , Supervisor .LAST_NAME ))
58-
59- students = (Student .select (Student , studentFirstName )
60- .join_from (Student , LaborStatusForm )
61- .join_from (LaborStatusForm , Department )
62- .where (Department .DEPT_NAME .in_ (deptNames ))
63- .order_by (studentFirstName .contains ("Unknown" ), studentFirstName , Student .LAST_NAME )
64- .distinct ())
65- if request .method == 'POST' :
66- return getDatatableData (request )
6744
6845 return render_template ('main/supervisorPortal.html' ,
69- terms = terms ,
70- supervisors = supervisors ,
71- allSupervisors = allSupervisors ,
72- students = students ,
7346 departments = departments ,
74- department = department ,
7547 currentUser = currentUser
7648 )
7749
@@ -112,7 +84,21 @@ def downloadSupervisorPortalResults():
11284 )
11385 return send_file (excel .relativePath , as_attachment = True , attachment_filename = excel .relativePath .split ('/' ).pop ())
11486
115- @main_bp .route ('/lsf/<formHistoryId>/submitToBanner' , methods = ['GET' ])
87+ @main_bp .route ('/supervisorPortal/liveSearch' , methods = ['GET' ])
88+ def SupervisorPortalSearch ():
89+ """
90+ Returns a list of users that match a given string
91+ """
92+ searchType = request .args .get ("searchType" )
93+ userInput = request .args .get ("userInput" )
94+
95+ if not searchType or not userInput :
96+ return jsonify ({}), 400
97+ currentUser = require_login ()
98+ userList = searchSupervisorPortal (currentUser , searchType , userInput )
99+ return jsonify (userList )
100+
101+ @main_bp .route ('/lsf/<formHistoryId>/submitToBanner' , methods = ['GET' ])
116102def submitToBanner (formHistoryId ):
117103 if not (g .currentUser .isLaborAdmin or g .currentUser .isLaborDepartmentStudent ):
118104 return render_template ('errors/403.html' ), 403
0 commit comments