Spaces:
Runtime error
Runtime error
| # 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) |