Liusuthu's picture
Update user_center.py
1b0ee5f verified
# import datetime
import os
import gradio as gr
import numpy as np
import pandas as pd
os.environ["no_proxy"] = "localhost,127.0.0.1,::1"
#######################################################################################
def read_ui(username,password):
if (username=='' or password==''):
return '请填写完整信息'
user_login_df=pd.read_csv('./user_login/login.csv',encoding='gbk',converters = {'password':str})
user_login=user_login_df.set_index('username')['password'].T.to_dict()
user_data1_df=pd.read_csv('./user_data/data_1.csv',encoding='gbk')
user_data2_df=pd.read_csv('./user_data/data_2.csv',encoding='gbk',converters ={'senti_flt':float,'hobby_flt':float,'all_flt':float})
results=''
is_usn=(username in user_login)
if(is_usn):
pswd_crct=(password==user_login[username])
if(is_usn and pswd_crct):
report1=user_data1_df[user_data1_df['username'] == username]
report1=np.array(report1).tolist()
report2=user_data2_df[user_data2_df['username'] == username]
report2=np.array(report2).tolist()
results='用户名:'+username+'\n'
for i in range(len(report1)):
line1=report1[i]
results=results+'第'+str(i+1)+'次量表测试 '+'日期:'+str(line1[1])+' 时间:'+str(line1[2])+'\n'
results=results+'量表分数:'+str(line1[3])+'\n结果解释:'+str(line1[4])+'\n建议:'+str(line1[5])+'\n'
results+='\n'
for i in range (len(report2)):
line2=report2[i]
results=results+'第'+str(i+1)+'次咨询 '+'日期:'+str(line2[1])+' 时间:'+str(line2[2])+'\n'
results=results+'睡眠情况:'+str(line2[3])+'\n食欲情况:'+str(line2[4])+'\n情绪情况:'+str(line2[5])+'\n情绪分数:'+str(line2[6])+'\n情绪回答:'+str(line2[7])+'\n轻生倾向:'+str(line2[8])+'\n'
results=results+'兴趣爱好分数:'+str(line2[9])+'\n兴趣爱好回答:'+str(line2[10])+'\n近期总体分数:'+str(line2[11])+'\n近期总体回答:'+str(line2[12])+'\n'+'最终建议:'+line2[13]+'\n\n'
elif(is_usn):
results='密码错误,无法读取报告数据。'
else:
results='账户不存在,无法读取报告数据。'
return results
def delete_ui(username,password):
if (username=='' or password==''):
return '请填写完整信息'
user_login_df=pd.read_csv('./user_login/login.csv',encoding='gbk',converters = {'password':str})
user_login=user_login_df.set_index('username')['password'].T.to_dict()
user_data1_df=pd.read_csv('./user_data/data_1.csv',encoding='gbk')
user_data2_df=pd.read_csv('./user_data/data_2.csv',encoding='gbk',converters ={'senti_flt':float,'hobby_flt':float,'all_flt':float})
results=''
is_usn=(username in user_login)
if(is_usn):
pswd_crct=(password==user_login[username])
if(is_usn and pswd_crct):
user_data1_df.drop(user_data1_df[user_data1_df['username'] == username].index,inplace=True)
user_data2_df.drop(user_data2_df[user_data2_df['username'] == username].index,inplace=True)
user_login_df.drop(user_login_df[user_login_df['username'] == username].index,inplace=True)
user_login_df.to_csv('./user_login/login.csv',encoding='gbk',index=False)
user_data1_df.to_csv('./user_data/data_1.csv',encoding='gbk',index=False)
user_data2_df.to_csv('./user_data/data_2.csv',encoding='gbk',index=False)
results='已删除对应账户所有数据'
elif(is_usn):
results='密码错误,无法删除报告数据。'
else:
results='账户不存在,无法删除报告数据。'
return results
###########################################################################################
def clear_info():
return (
gr.Textbox(""),
gr.Textbox(""),
gr.Textbox(""),
)
with gr.Blocks() as user_center:
with gr.Tab("查询历史"):
with gr.Row():
gr.HTML("<h3 style='text-align:center;'>输入账号密码查看个人历史记录</h3>")
with gr.Row():
with gr.Column(scale=1):
input_name1 = gr.Textbox(label="用户名",interactive=True)
input_pwd1 = gr.Textbox(label="密码",interactive=True)
with gr.Row():
clear_button1 = gr.Button("清除")
login_button1 = gr.Button("登录")
with gr.Column(scale=1):
output_info1 = gr.Textbox(label="输出", lines=5,interactive=False)
with gr.Tab("清空数据"):
with gr.Row():
gr.HTML("<h3 style='text-align:center;'>输入账号密码清空个人历史记录与账号</h3>")
with gr.Row():
with gr.Column(scale=1):
input_name2 = gr.Textbox(label="用户名",interactive=True)
input_pwd2 = gr.Textbox(label="密码",interactive=True)
with gr.Row():
clear_button2 = gr.Button("清除")
delete_button2 = gr.Button("登录")
with gr.Column(scale=1):
output_info2 = gr.Textbox(label="输出", lines=5,interactive=False)
clear_button1.click(
fn=clear_info,
inputs=[],
outputs=[input_name1, input_pwd1, output_info1],
)
login_button1.click(
fn=read_ui,
inputs=[input_name1, input_pwd1],
outputs=output_info1,
)
clear_button2.click(
fn=clear_info,
inputs=[],
outputs=[input_name2, input_pwd2, output_info2],
)
delete_button2.click(
fn=delete_ui,
inputs=[input_name2,input_pwd2],
outputs=[output_info2],
)