PlotweaverModel commited on
Commit
9d6445a
Β·
verified Β·
1 Parent(s): 7436365

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +47 -0
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":