|
@@ -1,5 +1,5 @@
|
1
|
1
|
from flask import ( Flask, render_template, request, abort, redirect,
|
2
|
|
- send_from_directory, url_for, session)
|
|
2
|
+ send_from_directory, url_for, session, flash, get_flashed_messages)
|
3
|
3
|
from flask_session import Session
|
4
|
4
|
import openai
|
5
|
5
|
from dotenv import load_dotenv
|
|
@@ -203,14 +203,22 @@ def choices(topic):
|
203
|
203
|
@application.route("/save", methods=['GET', 'POST'])
|
204
|
204
|
def save():
|
205
|
205
|
if request.method=="POST":
|
206
|
|
- filename=request.form["filename"].rsplit("/",1)[-1]
|
|
206
|
+ filename = request.form["filename"].rsplit("/",1)[-1]
|
207
|
207
|
if filename:
|
|
208
|
+ path = "archive/{}.json"
|
|
209
|
+ is_overwrite = os.path.isfile(path)
|
208
|
210
|
moment = {
|
209
|
211
|
key: session.get(key, [])
|
210
|
212
|
for key in ["messages", "history"]
|
211
|
213
|
}
|
212
|
214
|
print(moment)
|
213
|
|
- json.dump(moment, open("archive/{}.json".format(filename),"w"), indent=4)
|
|
215
|
+ json.dump(moment, open(path,"w"), indent=4)
|
|
216
|
+ if is_overwrite:
|
|
217
|
+ flash("Successfully saved to {}.json".format(filename))
|
|
218
|
+ else:
|
|
219
|
+ flash("Successfully overwritten {}.json".format(filename))
|
|
220
|
+ else:
|
|
221
|
+ flash("Invalid filename. Save aborted.", "error")
|
214
|
222
|
return redirect(url_for("home"))
|
215
|
223
|
else:
|
216
|
224
|
return render_template("save.html",
|
|
@@ -218,6 +226,20 @@ def save():
|
218
|
226
|
"moment-%Y-%m-%d-%H.%M.%S"),
|
219
|
227
|
files = [os.path.basename(path).rsplit(".",1)[0] for path in glob("archive/*.json")])
|
220
|
228
|
|
|
229
|
+@application.route("/load", methods=['GET', 'POST'])
|
|
230
|
+def load():
|
|
231
|
+ if request.method=="POST":
|
|
232
|
+ filename = request.form["filename"]
|
|
233
|
+ try:
|
|
234
|
+ moment = json.load(open("archive/{}.json".format(filename)))
|
|
235
|
+ session["messages"] = moment["messages"]
|
|
236
|
+ session["history"] = moment["history"]
|
|
237
|
+ except Exception as e:
|
|
238
|
+ flash(repr(e))
|
|
239
|
+ return redirect(url_for("home")+"#/oldest")
|
|
240
|
+ else:
|
|
241
|
+ return render_template("load.html",
|
|
242
|
+ files = [os.path.basename(path).rsplit(".",1)[0] for path in glob("archive/*.json")])
|
221
|
243
|
|
222
|
244
|
@application.get("/chat-editor")
|
223
|
245
|
def chat_editor():
|