Compare commits

..

2 Commits

Author SHA1 Message Date
2eecdbaf8f use yaml for config file 2023-04-17 22:44:07 +08:00
152ce7a170 support old browsers, remove "?." operator 2023-04-17 22:42:40 +08:00
7 changed files with 36 additions and 31 deletions

View File

@ -1,14 +0,0 @@
[app]
NAME=APP_NAME
SECRET_KEY=SOME_RANDOM_STRING
HOMEPAGE_NOTICE=1. 此网站基于openAI的API提供服务\n2. 为了限制滥用,注册后需要管理员激活才能使用\n3. 为了支持多轮对话,历史聊天会保存在服务端\n4. 网站不做关键词过滤,但请不要违反相关法律\n5. GPT生成的任何内容不保证准确性请自行甄别
SQLALCHEMY_DATABASE_URI=sqlite:///sqlite.db
#SQLALCHEMY_DATABASE_URI=mysql://username:password@server/db
[network]
PROXY=http://127.0.0.1:7890
[openai]
API_KEY=
MODEL_NAME=gpt-3.5-turbo
PROMPT=你是一个有用的人工智能助理,你尽力确保回答的准确性,避免给出误导信息。

20
config.yaml Normal file
View File

@ -0,0 +1,20 @@
app:
NAME: APP_NAME
SECRET_KEY: SOME_RANDOM_STRING
HOMEPAGE_NOTICE: |
1. 此网站基于openAI的API提供服务
2. 为了限制滥用,注册后需要管理员激活才能使用
3. 为了支持多轮对话,历史聊天会保存在服务端
4. 网站不做关键词过滤,但请不要违反相关法律
5. GPT生成的任何内容不保证准确性请自行甄别
SQLALCHEMY_DATABASE_URI: sqlite:///sqlite.db
# SQLALCHEMY_DATABASE_URI: mysql://username:password@server/db
network:
PROXY: http://127.0.0.1:7890
openai:
API_KEY:
MODEL_NAME: gpt-3.5-turbo
PROMPT: 你是一个有用的人工智能助理,你尽力确保回答的准确性,避免给出误导信息。

View File

@ -1,15 +1,15 @@
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager
from configparser import ConfigParser
import yaml
# init SQLAlchemy so we can use it later in our models
db = SQLAlchemy()
def create_app():
conf = ConfigParser()
conf.read("./config.ini")
with open("./config.yaml") as config_file:
conf = yaml.safe_load(config_file)
app = Flask(__name__)
app.config['SECRET_KEY'] = conf['app']['SECRET_KEY']

View File

@ -12,8 +12,6 @@ main = Blueprint('main', __name__)
def index():
notice = current_app.config['HOMEPAGE_NOTICE']
if notice:
notice = notice.split("\\n")
return render_template('index.html', user=current_user, homepage_notice=notice)

View File

@ -99,7 +99,7 @@
success: null,
dataType: null
}).always(function (response) {
if (response?.status == "success") {
if (response && response.status == "success") {
var msg_list = document.getElementById("msg-list")
var li = document.createElement('li');
var pre = document.createElement('pre');

View File

@ -29,7 +29,8 @@
{% endwith %}
<div id="homepage-notice" class="row" style="margin-top: 100px;">
{% if homepage_notice %}
{% for notice in homepage_notice %}<p>{{ notice }}</p>{% endfor %}
<h3 class="subtitle">公告栏</h3>
<pre>{{ homepage_notice }}</pre>
{% endif %}
</div>
{% endblock content %}

View File

@ -65,11 +65,11 @@
var account = obj.parentElement.parentElement
var data = {
method: "update",
id: account?.children[0]?.innerHTML,
email: account?.children[1]?.innerHTML,
name: account?.children[2]?.innerHTML,
role: account?.children[3]?.children[0].value,
isActivated: account?.children[4].children[0].checked
id: account.children[0].innerHTML,
email: account.children[1].innerHTML,
name: account.children[2].innerHTML,
role: account.children[3].children[0].value,
isActivated: account.children[4].children[0].checked
}
$.ajax({
type: 'POST',
@ -89,11 +89,11 @@
var account = obj.parentElement.parentElement
var data = {
method: "delete",
id: account?.children[0]?.innerHTML,
email: account?.children[1]?.innerHTML,
name: account?.children[2]?.innerHTML,
role: account?.children[3]?.children[0].value,
isActivated: account?.children[4].children[0].checked
id: account.children[0].innerHTML,
email: account.children[1].innerHTML,
name: account.children[2].innerHTML,
role: account.children[3].children[0].value,
isActivated: account.children[4].children[0].checked
}
var ret = confirm("确认删除用户\"" + data.name + "\"吗?")
if (ret == true) {