Spaces:
Running
Running
File size: 4,735 Bytes
43cd37c |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
# Trash.py
# Gradio UI for managing trashed items in the database
#
# Imports
from typing import Tuple, List
import gradio as gr
#
# Local Imports
from App_Function_Libraries.DB.DB_Manager import (
get_trashed_items, user_delete_item, empty_trash,
get_transcripts, fetch_item_details,
search_media_database, mark_as_trash,
)
#
############################################################################################################
#
# Functions:
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 delete_item(media_id, force):
return user_delete_item(media_id, force)
def empty_trash_ui(days):
deleted, remaining = empty_trash(days)
return f"Deleted {deleted} items. {remaining} items remain in trash."
def get_media_transcripts(media_id):
transcripts = get_transcripts(media_id)
return "\n\n".join([f"Transcript ID: {t[0]}\nModel: {t[1]}\nCreated: {t[3]}\n{t[2][:200]}..." for t in transcripts])
def get_media_summaries(media_id):
_, summary, _ = fetch_item_details(media_id)
return summary if summary else "No summary available."
def get_media_prompts(media_id):
prompt, _, _ = fetch_item_details(media_id)
return prompt if prompt else "No prompt available."
def search_and_mark_trash(search_query: str) -> Tuple[List[Tuple[int, str, str]], str]:
try:
results = search_media_database(search_query)
if not results:
return [], "No items found matching the search query."
return results, "Search completed successfully."
except Exception as e:
return [], f"Error during search: {str(e)}"
def mark_item_as_trash(media_id: int) -> str:
try:
mark_as_trash(media_id)
return f"Item with ID {media_id} has been marked as trash."
except Exception as e:
return f"Error marking item as trash: {str(e)}"
def create_search_and_mark_trash_tab():
with gr.TabItem("Search and Mark as Trash", visible=True):
gr.Markdown("# Search for Items and Mark as Trash")
search_input = gr.Textbox(label="Search Query")
search_button = gr.Button("Search")
search_results = gr.Dropdown(label="Search Results", choices=[], interactive=True)
search_status = gr.Textbox(label="Search Status")
mark_trash_button = gr.Button("Mark Selected Item as Trash")
mark_trash_status = gr.Textbox(label="Mark as Trash Status")
def update_search_results(query):
results, status = search_and_mark_trash(query)
choices = [f"{id}: {title} ({url})" for id, title, url in results]
return choices, status
search_button.click(
update_search_results,
inputs=[search_input],
outputs=[search_results, search_status]
)
def mark_selected_as_trash(selected_item):
if selected_item:
media_id = int(selected_item.split(":")[0])
return mark_item_as_trash(media_id)
return "No item selected."
mark_trash_button.click(
mark_selected_as_trash,
inputs=[search_results],
outputs=[mark_trash_status]
)
def create_view_trash_tab():
with gr.TabItem("View Trash", visible=True):
view_button = gr.Button("View Trash")
trash_list = gr.Textbox(label="Trashed Items")
view_button.click(list_trash, inputs=[], outputs=trash_list)
def create_delete_trash_tab():
with gr.TabItem("Delete DB Item", visible=True):
gr.Markdown("# Delete Items from Databases")
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")
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", visible=True):
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)
#
# End of File
############################################################################################################
|