Upload app.py
Browse files
app.py
CHANGED
|
@@ -244,6 +244,13 @@ def create_user(username, email, password, role="reviewer", language_ids=None):
|
|
| 244 |
return uid
|
| 245 |
|
| 246 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 247 |
def authenticate(username, password):
|
| 248 |
with get_conn() as conn:
|
| 249 |
row = conn.execute("SELECT * FROM users WHERE username = ?", ((username or "").strip(),)).fetchone()
|
|
@@ -377,6 +384,13 @@ def set_sample_reference(sample_id, is_ref):
|
|
| 377 |
backup_db()
|
| 378 |
|
| 379 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 380 |
# --------------------------------------------------------------------------- #
|
| 381 |
# Ratings
|
| 382 |
# --------------------------------------------------------------------------- #
|
|
@@ -669,6 +683,8 @@ with gr.Blocks(title="Plotweaver AI β TTS MOS Evaluation",
|
|
| 669 |
tr_text = gr.Textbox(label="Reference text", lines=2, scale=3)
|
| 670 |
tr_btn = gr.Button("Save", scale=0, size="sm")
|
| 671 |
tr_msg = gr.Markdown()
|
|
|
|
|
|
|
| 672 |
|
| 673 |
gr.Markdown("### Users")
|
| 674 |
refresh_users_btn = gr.Button("Refresh users", size="sm")
|
|
@@ -681,6 +697,12 @@ with gr.Blocks(title="Plotweaver AI β TTS MOS Evaluation",
|
|
| 681 |
active_choice = gr.Dropdown(label="Set active", choices=["yes", "no"], value="yes")
|
| 682 |
update_user_btn = gr.Button("Apply", scale=0, size="sm")
|
| 683 |
user_admin_msg = gr.Markdown()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 684 |
|
| 685 |
gr.Markdown("### Results")
|
| 686 |
with gr.Row():
|
|
@@ -918,6 +940,14 @@ with gr.Blocks(title="Plotweaver AI β TTS MOS Evaluation",
|
|
| 918 |
return (f"β
Saved sample #{int(sid)} β now a {flag}.", _samples_table())
|
| 919 |
tr_btn.click(save_sample_meta, [session, tr_sample, tr_text, tr_isref], [tr_msg, samples_tbl])
|
| 920 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 921 |
# ---- Admin: users ----
|
| 922 |
def _users_table():
|
| 923 |
rows = []
|
|
@@ -947,6 +977,23 @@ with gr.Blocks(title="Plotweaver AI β TTS MOS Evaluation",
|
|
| 947 |
update_user_btn.click(admin_update_user, [session, promote_id, role_choice, active_choice],
|
| 948 |
[user_admin_msg, users_tbl])
|
| 949 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 950 |
# ---- Admin: results ----
|
| 951 |
def admin_results(sess, language_id):
|
| 952 |
if not sess or sess["role"] != "admin":
|
|
|
|
| 244 |
return uid
|
| 245 |
|
| 246 |
|
| 247 |
+
def delete_user(user_id):
|
| 248 |
+
"""Delete a user; cascades to their user_languages and ratings."""
|
| 249 |
+
with get_conn() as conn:
|
| 250 |
+
conn.execute("DELETE FROM users WHERE id = ?", (user_id,))
|
| 251 |
+
backup_db()
|
| 252 |
+
|
| 253 |
+
|
| 254 |
def authenticate(username, password):
|
| 255 |
with get_conn() as conn:
|
| 256 |
row = conn.execute("SELECT * FROM users WHERE username = ?", ((username or "").strip(),)).fetchone()
|
|
|
|
| 384 |
backup_db()
|
| 385 |
|
| 386 |
|
| 387 |
+
def unmark_all_references():
|
| 388 |
+
with get_conn() as conn:
|
| 389 |
+
n = conn.execute("UPDATE samples SET is_reference = 0 WHERE is_reference = 1").rowcount
|
| 390 |
+
backup_db()
|
| 391 |
+
return n
|
| 392 |
+
|
| 393 |
+
|
| 394 |
# --------------------------------------------------------------------------- #
|
| 395 |
# Ratings
|
| 396 |
# --------------------------------------------------------------------------- #
|
|
|
|
| 683 |
tr_text = gr.Textbox(label="Reference text", lines=2, scale=3)
|
| 684 |
tr_btn = gr.Button("Save", scale=0, size="sm")
|
| 685 |
tr_msg = gr.Markdown()
|
| 686 |
+
unmark_all_btn = gr.Button("β² Mark ALL samples as system (un-mark every anchor)", size="sm")
|
| 687 |
+
unmark_msg = gr.Markdown()
|
| 688 |
|
| 689 |
gr.Markdown("### Users")
|
| 690 |
refresh_users_btn = gr.Button("Refresh users", size="sm")
|
|
|
|
| 697 |
active_choice = gr.Dropdown(label="Set active", choices=["yes", "no"], value="yes")
|
| 698 |
update_user_btn = gr.Button("Apply", scale=0, size="sm")
|
| 699 |
user_admin_msg = gr.Markdown()
|
| 700 |
+
with gr.Row():
|
| 701 |
+
del_user_id = gr.Number(label="Delete user by id", precision=0)
|
| 702 |
+
del_user_btn = gr.Button("Delete user", variant="stop", scale=0, size="sm")
|
| 703 |
+
gr.Markdown("Deleting a user also removes all of their ratings. To keep their ratings, "
|
| 704 |
+
"set **active = no** instead.")
|
| 705 |
+
del_user_msg = gr.Markdown()
|
| 706 |
|
| 707 |
gr.Markdown("### Results")
|
| 708 |
with gr.Row():
|
|
|
|
| 940 |
return (f"β
Saved sample #{int(sid)} β now a {flag}.", _samples_table())
|
| 941 |
tr_btn.click(save_sample_meta, [session, tr_sample, tr_text, tr_isref], [tr_msg, samples_tbl])
|
| 942 |
|
| 943 |
+
def do_unmark_all(sess):
|
| 944 |
+
if not sess or sess["role"] != "admin":
|
| 945 |
+
return "β Admin only.", _samples_table(), gr.update()
|
| 946 |
+
n = unmark_all_references()
|
| 947 |
+
return (f"β
Un-marked {n} sample(s) β they now count toward the MOS. "
|
| 948 |
+
f"Go to Results and click **Compute MOS**.", _samples_table(), gr.update(value=False))
|
| 949 |
+
unmark_all_btn.click(do_unmark_all, [session], [unmark_msg, samples_tbl, tr_isref])
|
| 950 |
+
|
| 951 |
# ---- Admin: users ----
|
| 952 |
def _users_table():
|
| 953 |
rows = []
|
|
|
|
| 977 |
update_user_btn.click(admin_update_user, [session, promote_id, role_choice, active_choice],
|
| 978 |
[user_admin_msg, users_tbl])
|
| 979 |
|
| 980 |
+
def admin_delete_user(sess, uid):
|
| 981 |
+
if not sess or sess["role"] != "admin":
|
| 982 |
+
return "β Admin only.", _users_table()
|
| 983 |
+
if not uid:
|
| 984 |
+
return "β Enter a user id.", _users_table()
|
| 985 |
+
uid = int(uid)
|
| 986 |
+
if uid == sess["id"]:
|
| 987 |
+
return "β You can't delete your own account while signed in.", _users_table()
|
| 988 |
+
with get_conn() as conn:
|
| 989 |
+
row = conn.execute("SELECT username FROM users WHERE id=?", (uid,)).fetchone()
|
| 990 |
+
if not row:
|
| 991 |
+
return f"β No user with id {uid}.", _users_table()
|
| 992 |
+
delete_user(uid)
|
| 993 |
+
return (f"β
Deleted user #{uid} ({row['username']}) and all of their ratings.",
|
| 994 |
+
_users_table())
|
| 995 |
+
del_user_btn.click(admin_delete_user, [session, del_user_id], [del_user_msg, users_tbl])
|
| 996 |
+
|
| 997 |
# ---- Admin: results ----
|
| 998 |
def admin_results(sess, language_id):
|
| 999 |
if not sess or sess["role"] != "admin":
|