99user_bp = Blueprint ('user' , __name__ )
1010
1111
12+ def get_teachers ():
13+ return db .session .query (User ).filter (User .is_teacher == True , User .active == True ).all ()
14+
15+
16+ def create_researcher (user_id , researcher_type , max_loads ):
17+ new_researcher = Researcher (user_id = user_id , researcher_type = researcher_type , max_loads = max_loads )
18+ db .session .add (new_researcher )
19+ db .session .commit ()
20+
21+
22+ def get_researchers ():
23+ return db .session .query (User ).join (Researcher ).filter (User .active == True ).all ()
24+
25+
1226@user_bp .route ('/register' )
1327@login_required
1428@check_access_level (Role .ADMIN )
1529def register ():
16- supervisors = db .session .query (User ).filter (User .is_teacher == True , User .active == True ).all ()
17- return render_template ('register.html' , supervisors = supervisors )
30+ return render_template ('register.html' , supervisors = get_teachers ())
1831
1932
2033def is_valid_email (email ):
@@ -56,18 +69,14 @@ def add_user():
5669 if db .session .query (User ).filter (User .email == email ).first ():
5770 flash ("Email already exists" )
5871 else :
59- new_user = User (name = name , first_name = first_name , email = email , is_teacher = is_teacher ,
60- is_researcher = is_researcher , supervisor_id = supervisor_id ,
72+ new_user = User (name = name , first_name = first_name , email = email , supervisor_id = supervisor_id ,
6173 organization_id = organization_code )
6274 db .session .add (new_user )
6375 db .session .commit ()
6476 if is_researcher :
6577 all_loads = DEFAULT_MAX_LOAD
6678 max_load = all_loads .get (researcher_type , 0 )
67- new_researcher = Researcher (user_id = new_user .id , researcher_type = researcher_type ,
68- max_loads = max_load )
69- db .session .add (new_researcher )
70- db .session .commit ()
79+ create_researcher (new_user .id , researcher_type , max_load )
7180 except :
7281 db .session .rollback ()
7382 raise
@@ -83,16 +92,19 @@ def users(user_type):
8392 list_name = ''
8493
8594 if user_type == 'teacher' :
86- base_query = base_query .filter (User .is_teacher == True , User .active == True )
95+ base_query = base_query .filter (User .active == True , User .is_teacher == True )
8796 list_name = 'Teachers'
8897 elif user_type == 'researcher' :
89- base_query = base_query .filter ( User . is_researcher == True , User .active == True )
98+ base_query = base_query .join ( Researcher ). filter ( User .active == True )
9099 list_name = 'Researchers'
91100 elif user_type == 'archived' :
92101 base_query = base_query .filter (User .active == False )
93102 list_name = 'Archived Users'
94103 elif user_type == 'other' :
95- base_query = base_query .filter (User .active == True , User .is_teacher == False , User .is_researcher == False )
104+ base_query = base_query .outerjoin (Researcher ).filter (
105+ User .active == True ,
106+ User .is_teacher == False
107+ )
96108 list_name = 'Other Users'
97109
98110 all_users = base_query .all ()
@@ -110,7 +122,7 @@ def user_profile(user_id, current_year):
110122 flash ("Permission denied. You do not have access to this page." , "error" )
111123 return redirect (url_for ("index" ))
112124
113- all_users = db . session . query ( User ). filter ( User . is_admin == False , User . is_teacher == True , User . active == True ). all ()
125+ all_users = get_teachers ()
114126 requested_user = db .session .query (User ).filter_by (id = user_id ).first ()
115127 researcher = db .session .query (Researcher ).filter (Researcher .user_id == requested_user .id ).first ()
116128 current_user = requested_user .email == session ["email" ]
@@ -130,6 +142,13 @@ def user_profile(user_id, current_year):
130142 current_year = current_year )
131143
132144
145+ def delete_researcher (user_id ):
146+ researcher = db .session .query (Researcher ).filter (Researcher .user_id == user_id ).first ()
147+ if researcher :
148+ db .session .delete (researcher )
149+ db .session .commit ()
150+
151+
133152@user_bp .route ('/update_user_profile/<int:user_id>' , methods = ['POST' ])
134153@login_required
135154def update_user_profile (user_id ):
@@ -163,6 +182,7 @@ def update_user_profile(user_id):
163182
164183 user = db .session .query (User ).filter (User .id == user_id ).first ()
165184 researcher = db .session .query (Researcher ).filter (Researcher .user_id == user .id ).first ()
185+ teacher = db .session .query (Teacher ).filter (Teacher .user_id == user .id ).first ()
166186 if user is None :
167187 return make_response ("User not found" , 404 )
168188
@@ -172,17 +192,18 @@ def update_user_profile(user_id):
172192 if session ["is_admin" ]:
173193 user .email = email
174194 user .organization_id = organization_code
175- user .admin = is_admin
195+ user .is_admin = is_admin
176196 user .is_teacher = is_teacher
177- user .is_researcher = is_researcher
178197 user .supervisor_id = supervisor_id
179198 if is_researcher :
180199 if researcher is None :
181- new_researcher = Researcher (user_id = user .id , researcher_type = researcher_type , max_loads = max_loads )
182- db .session .add (new_researcher )
200+ create_researcher (user .id , researcher_type , max_loads )
183201 else :
184202 researcher .max_loads = max_loads
185203 researcher .researcher_type = researcher_type
204+ else :
205+ delete_researcher (user .id )
206+
186207 db .session .commit ()
187208 except Exception as e :
188209 db .session .rollback ()
0 commit comments