2023-04-03 01:00:24 +08:00
|
|
|
|
from flask import Blueprint, render_template, current_app, request, flash, redirect, url_for
|
2023-03-31 22:11:34 +08:00
|
|
|
|
from flask_login import login_required, current_user, login_manager
|
2023-04-03 01:00:24 +08:00
|
|
|
|
from .models import User, Conversation
|
|
|
|
|
from . import db
|
|
|
|
|
import openai
|
2023-03-31 22:11:34 +08:00
|
|
|
|
|
|
|
|
|
main = Blueprint('main', __name__)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@main.route('/')
|
|
|
|
|
def index():
|
2023-04-01 19:38:43 +08:00
|
|
|
|
return render_template('index.html', user=current_user)
|
2023-03-31 22:11:34 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@main.route('/profile')
|
|
|
|
|
@login_required
|
|
|
|
|
def profile():
|
2023-04-01 19:38:43 +08:00
|
|
|
|
if current_user.role == "admin":
|
|
|
|
|
return render_template('profile.html', user=current_user, accounts=User.query.all())
|
|
|
|
|
return render_template('profile.html', user=current_user)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@main.route('/manage')
|
|
|
|
|
@login_required
|
|
|
|
|
def manage():
|
|
|
|
|
if current_user.role == "admin":
|
|
|
|
|
accountid = request.args.get('id')
|
|
|
|
|
if accountid:
|
|
|
|
|
accounts = User.query.filter_by(id=accountid)
|
|
|
|
|
else:
|
|
|
|
|
accounts = User.query
|
|
|
|
|
if accounts:
|
|
|
|
|
return render_template('manage.html', user=current_user, accounts=accounts)
|
|
|
|
|
else:
|
|
|
|
|
flash("无此用户id!")
|
|
|
|
|
return redirect(request.referrer if request.referrer else url_for('main.index'))
|
|
|
|
|
|
|
|
|
|
flash("您无权管理其他账户")
|
|
|
|
|
return redirect(url_for('main.index'))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@main.route('/chat')
|
|
|
|
|
@login_required
|
|
|
|
|
def chat():
|
2023-04-03 01:00:24 +08:00
|
|
|
|
if current_user.isActivated:
|
|
|
|
|
return render_template('chat.html', user=current_user)
|
|
|
|
|
else:
|
|
|
|
|
flash("您的账户暂未被激活")
|
|
|
|
|
return redirect(url_for('main.index'))
|
|
|
|
|
return redirect(url_for('main.index'))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@main.route('/chat', methods=['POST'])
|
|
|
|
|
@login_required
|
|
|
|
|
def chat_post():
|
|
|
|
|
openai.api_key = current_app.config['OPENAI_API_KEY']
|
|
|
|
|
openai.proxy = current_app.config['NETWORK_PROXY']
|
|
|
|
|
|
|
|
|
|
msg = request.form.get("msg")
|
|
|
|
|
|
|
|
|
|
new_conversation = Conversation(userid=current_user.id,
|
|
|
|
|
useremail=current_user.email,
|
|
|
|
|
username=current_user.name,
|
|
|
|
|
request=msg,
|
|
|
|
|
response="")
|
|
|
|
|
db.session.add(new_conversation)
|
|
|
|
|
db.session.commit()
|
|
|
|
|
|
|
|
|
|
if current_user.is_authenticated and current_user.isActivated:
|
|
|
|
|
openai_resp = openai.ChatCompletion.create(
|
|
|
|
|
model=current_app.config['OPENAI_MODEL_NAME'],
|
|
|
|
|
messages=[
|
|
|
|
|
{"role": "system",
|
|
|
|
|
"content": current_app.config['OPENAI_PROMPT']},
|
|
|
|
|
{"role": "user", "content": msg}
|
|
|
|
|
]
|
|
|
|
|
)
|
|
|
|
|
msg_resp = openai_resp['choices'][0]['message']['content']
|
|
|
|
|
if msg_resp:
|
|
|
|
|
response = {"message": msg_resp, "status": "success"}
|
|
|
|
|
else:
|
|
|
|
|
response = {"message": "请求错误", "status": "success"}
|
|
|
|
|
else:
|
|
|
|
|
response = {"message": "请先登录/激活", "status": "fail"}
|
|
|
|
|
|
|
|
|
|
new_conversation = Conversation(userid=current_user.id,
|
|
|
|
|
useremail=current_user.email,
|
|
|
|
|
username=current_user.name,
|
|
|
|
|
request=msg,
|
|
|
|
|
response=msg_resp)
|
|
|
|
|
db.session.add(new_conversation)
|
|
|
|
|
db.session.commit()
|
|
|
|
|
|
|
|
|
|
return response
|