oceansweep's picture
Upload 20 files
cd5e862 verified
raw
history blame
4.97 kB
# Trash.py
# Gradio UI for deleting items from the database
import html
import sqlite3
# Imports
# External Imports
import gradio as gr
#
# Local Imports
from App_Function_Libraries.DB.DB_Manager import delete_prompt, empty_trash, get_trashed_items, user_delete_item
def delete_item(media_id, force):
return user_delete_item(media_id, force)
def list_trash():
items = get_trashed_items()
return "\n".join(
[f"ID: {item['id']}, Title: {item['title']}, Trashed on: {item['trash_date']}" for item in items])
def empty_trash_ui(days):
deleted, remaining = empty_trash(days)
return f"Deleted {deleted} items. {remaining} items remain in trash."
def create_view_trash_tab():
with gr.TabItem("View Trash"):
view_button = gr.Button("View Trash")
trash_list = gr.Textbox(label="Trashed Items")
view_button.click(list_trash, inputs=[], outputs=trash_list)
def search_prompts_for_deletion(query):
try:
with sqlite3.connect('prompts.db') as conn:
cursor = conn.cursor()
cursor.execute('''
SELECT id, name, details
FROM Prompts
WHERE name LIKE ? OR details LIKE ?
LIMIT 10
''', (f'%{query}%', f'%{query}%'))
results = cursor.fetchall()
if not results:
return "No matching prompts found."
output = "<h3>Matching Prompts:</h3>"
for row in results:
output += f"<p><strong>ID:</strong> {row[0]} | <strong>Name:</strong> {html.escape(row[1])} | <strong>Details:</strong> {html.escape(row[2][:100])}...</p>"
return output
except sqlite3.Error as e:
return f"An error occurred while searching prompts: {e}"
def search_media_for_deletion(query):
try:
with sqlite3.connect('media.db') as conn:
cursor = conn.cursor()
cursor.execute('''
SELECT id, title, description
FROM media
WHERE title LIKE ? OR description LIKE ?
LIMIT 10
''', (f'%{query}%', f'%{query}%'))
results = cursor.fetchall()
if not results:
return "No matching media found."
output = "<h3>Matching Media:</h3>"
for row in results:
output += f"<p><strong>ID:</strong> {row[0]} | <strong>Title:</strong> {html.escape(row[1])} | <strong>Description:</strong> {html.escape(row[2][:100])}...</p>"
return output
except sqlite3.Error as e:
return f"An error occurred while searching media: {e}"
def create_delete_trash_tab():
with gr.TabItem("Delete DB Item"):
gr.Markdown("# Search and Delete Items from Databases")
with gr.Row():
with gr.Column():
gr.Markdown("## Search and Delete Prompts")
prompt_search_input = gr.Textbox(label="Search Prompts")
prompt_search_button = gr.Button("Search Prompts")
prompt_search_results = gr.HTML()
prompt_id_input = gr.Number(label="Prompt ID")
prompt_delete_button = gr.Button("Delete Prompt")
prompt_delete_output = gr.Textbox(label="Delete Result")
with gr.Column():
gr.Markdown("## Search and Delete Media")
media_search_input = gr.Textbox(label="Search Media")
media_search_button = gr.Button("Search Media")
media_search_results = gr.HTML()
media_id_input = gr.Number(label="Media ID")
media_force_checkbox = gr.Checkbox(label="Force Delete")
media_delete_button = gr.Button("Delete Media")
media_delete_output = gr.Textbox(label="Delete Result")
prompt_search_button.click(
search_prompts_for_deletion,
inputs=[prompt_search_input],
outputs=prompt_search_results
)
prompt_delete_button.click(
delete_prompt,
inputs=[prompt_id_input],
outputs=prompt_delete_output
)
media_search_button.click(
search_media_for_deletion,
inputs=[media_search_input],
outputs=media_search_results
)
media_delete_button.click(
delete_item,
inputs=[media_id_input, media_force_checkbox],
outputs=media_delete_output
)
def create_empty_trash_tab():
with gr.TabItem("Empty Trash"):
days_input = gr.Slider(minimum=15, maximum=90, step=5, label="Delete items older than (days)")
empty_button = gr.Button("Empty Trash")
empty_output = gr.Textbox(label="Result")
empty_button.click(empty_trash_ui, inputs=[days_input], outputs=empty_output)