33import gradio as gr
44import pandas as pd
55from ktem .app import BasePage
6+ from ktem .db .base_models import Role
67from ktem .db .models import User , engine
78from sqlmodel import Session , select
89from theflow .settings import settings as flowsettings
@@ -109,7 +110,7 @@ def create_user(usn, pwd, user_id=None, is_admin=True) -> bool:
109110 username = usn ,
110111 username_lower = usn .lower (),
111112 password = hashed_password ,
112- admin = is_admin ,
113+ role = Role . ADMIN if is_admin else Role . CHAT_USER ,
113114 )
114115 session .add (user )
115116 session .commit ()
@@ -136,7 +137,7 @@ def on_building_ui(self):
136137 with gr .Tab (label = "User list" ):
137138 self .state_user_list = gr .State (value = None )
138139 self .user_list = gr .DataFrame (
139- headers = ["id" , "name" , "admin " ],
140+ headers = ["id" , "name" , "role " ],
140141 column_widths = [0 , 50 , 50 ],
141142 interactive = False ,
142143 )
@@ -150,7 +151,11 @@ def on_building_ui(self):
150151 label = "Confirm change password" ,
151152 type = "password" ,
152153 )
153- self .admin_edit = gr .Checkbox (label = "Admin" )
154+ self .role_edit = gr .Dropdown (
155+ label = "Role" ,
156+ choices = [role .value for role in Role ],
157+ value = Role .CHAT_USER .value ,
158+ )
154159
155160 with gr .Row (visible = False ) as self ._selected_panel_btn :
156161 with gr .Column ():
@@ -208,7 +213,7 @@ def on_register_events(self):
208213 self .usn_edit ,
209214 self .pwd_edit ,
210215 self .pwd_cnf_edit ,
211- self .admin_edit ,
216+ self .role_edit ,
212217 ],
213218 show_progress = "hidden" ,
214219 )
@@ -245,7 +250,7 @@ def on_register_events(self):
245250 self .usn_edit ,
246251 self .pwd_edit ,
247252 self .pwd_cnf_edit ,
248- self .admin_edit ,
253+ self .role_edit ,
249254 ],
250255 outputs = [self .pwd_edit , self .pwd_cnf_edit ],
251256 show_progress = "hidden" ,
@@ -315,27 +320,27 @@ def create_user(self, usn, pwd, pwd_cnf):
315320 def list_users (self , user_id ):
316321 if user_id is None :
317322 return [], pd .DataFrame .from_records (
318- [{"id" : "-" , "username" : "-" , "admin " : "-" }]
323+ [{"id" : "-" , "username" : "-" , "role " : "-" }]
319324 )
320325
321326 with Session (engine ) as session :
322327 statement = select (User ).where (User .id == user_id )
323328 user = session .exec (statement ).one ()
324- if not user .admin :
329+ if not user .role == Role . ADMIN :
325330 return [], pd .DataFrame .from_records (
326- [{"id" : "-" , "username" : "-" , "admin " : "-" }]
331+ [{"id" : "-" , "username" : "-" , "role " : "-" }]
327332 )
328333
329334 statement = select (User )
330335 results = [
331- {"id" : user .id , "username" : user .username , "admin " : user .admin }
336+ {"id" : user .id , "username" : user .username , "role " : user .role . value }
332337 for user in session .exec (statement ).all ()
333338 ]
334339 if results :
335340 user_list = pd .DataFrame .from_records (results )
336341 else :
337342 user_list = pd .DataFrame .from_records (
338- [{"id" : "-" , "username" : "-" , "admin " : "-" }]
343+ [{"id" : "-" , "username" : "-" , "role " : "-" }]
339344 )
340345
341346 return results , user_list
@@ -360,7 +365,7 @@ def on_selected_user_change(self, selected_user_id):
360365 usn_edit = gr .update (value = "" )
361366 pwd_edit = gr .update (value = "" )
362367 pwd_cnf_edit = gr .update (value = "" )
363- admin_edit = gr .update (value = False )
368+ role_edit = gr .update (value = Role . CHAT_USER . value )
364369 else :
365370 _selected_panel = gr .update (visible = True )
366371 _selected_panel_btn = gr .update (visible = True )
@@ -375,7 +380,7 @@ def on_selected_user_change(self, selected_user_id):
375380 usn_edit = gr .update (value = user .username )
376381 pwd_edit = gr .update (value = "" )
377382 pwd_cnf_edit = gr .update (value = "" )
378- admin_edit = gr .update (value = user .admin )
383+ role_edit = gr .update (value = user .role . value )
379384
380385 return (
381386 _selected_panel ,
@@ -386,7 +391,7 @@ def on_selected_user_change(self, selected_user_id):
386391 usn_edit ,
387392 pwd_edit ,
388393 pwd_cnf_edit ,
389- admin_edit ,
394+ role_edit ,
390395 )
391396
392397 def on_btn_delete_click (self , selected_user_id ):
@@ -403,7 +408,7 @@ def on_btn_delete_click(self, selected_user_id):
403408
404409 return btn_delete , btn_delete_yes , btn_delete_no
405410
406- def save_user (self , selected_user_id , usn , pwd , pwd_cnf , admin ):
411+ def save_user (self , selected_user_id , usn , pwd , pwd_cnf , role ):
407412 errors = validate_username (usn )
408413 if errors :
409414 gr .Warning (errors )
@@ -420,7 +425,7 @@ def save_user(self, selected_user_id, usn, pwd, pwd_cnf, admin):
420425 user = session .exec (statement ).one ()
421426 user .username = usn
422427 user .username_lower = usn .lower ()
423- user .admin = admin
428+ user .role = Role ( role )
424429 if pwd :
425430 user .password = hashlib .sha256 (pwd .encode ()).hexdigest ()
426431 session .commit ()
0 commit comments