Fixes: deleting presentation will now delete related local files, search icons will not save icons in presentation directory thus optimizing disk usage
This commit is contained in:
parent
88c8aef73c
commit
dba7a6ee36
3 changed files with 18 additions and 24 deletions
|
|
@ -1,7 +1,10 @@
|
|||
import os
|
||||
import shutil
|
||||
from api.models import LogMetadata
|
||||
from api.services.logging import LoggingService
|
||||
from api.sql_models import PresentationSqlModel
|
||||
from api.services.database import get_sql_session
|
||||
from api.utils import get_presentation_dir
|
||||
|
||||
|
||||
class DeletePresentationHandler:
|
||||
|
|
@ -9,6 +12,8 @@ class DeletePresentationHandler:
|
|||
def __init__(self, id):
|
||||
self.id = id
|
||||
|
||||
self.presentation_dir = get_presentation_dir(self.id)
|
||||
|
||||
async def delete(self, logging_service: LoggingService, log_metadata: LogMetadata):
|
||||
logging_service.logger.info(
|
||||
logging_service.message({"presentation": self.id}),
|
||||
|
|
@ -19,3 +24,6 @@ class DeletePresentationHandler:
|
|||
presentation = sql_session.get(PresentationSqlModel, self.id)
|
||||
sql_session.delete(presentation)
|
||||
sql_session.commit()
|
||||
|
||||
if os.path.exists(self.presentation_dir):
|
||||
shutil.rmtree(self.presentation_dir)
|
||||
|
|
|
|||
|
|
@ -52,13 +52,14 @@ class PresentationEditHandler:
|
|||
select(SlideSqlModel).where(SlideSqlModel.index == self.slide_index)
|
||||
).first()
|
||||
|
||||
slide_to_edit = SlideModel.from_dict(slide_to_edit_sql.model_dump(mode="json"))
|
||||
slide_to_edit = SlideModel.from_dict(
|
||||
slide_to_edit_sql.model_dump(mode="json")
|
||||
)
|
||||
|
||||
new_slide_type = await get_slide_type_from_prompt(
|
||||
self.prompt, slide_to_edit
|
||||
)
|
||||
|
||||
|
||||
edited_content = await get_edited_slide_content_model(
|
||||
self.prompt,
|
||||
SlideType(new_slide_type.slide_type),
|
||||
|
|
@ -78,8 +79,6 @@ class PresentationEditHandler:
|
|||
content=edited_content,
|
||||
)
|
||||
|
||||
# Images to delete - is list of cloud paths
|
||||
# Images to generate - is list of index of images to generate
|
||||
images_to_delete, images_to_generate, icons_to_delete, icons_to_generate = (
|
||||
self.get_all_assets_to_generate_and_delete(
|
||||
slide_to_edit,
|
||||
|
|
@ -110,11 +109,11 @@ class PresentationEditHandler:
|
|||
if new_icon_paths:
|
||||
new_slide_model.icons = new_icon_paths
|
||||
|
||||
# Generate and Delete Images and Icons
|
||||
objects_to_delete = [*images_to_delete, *icons_to_delete]
|
||||
if objects_to_delete:
|
||||
for each in objects_to_delete:
|
||||
os.remove(each)
|
||||
# ? Images and Icons are related to this presentation will be deleted while deleting presentation.
|
||||
# objects_to_delete = [*images_to_delete, *icons_to_delete]
|
||||
# if objects_to_delete:
|
||||
# for each in objects_to_delete:
|
||||
# os.remove(each)
|
||||
|
||||
new_image_prompts = {}
|
||||
new_icon_queries = {}
|
||||
|
|
@ -144,7 +143,7 @@ class PresentationEditHandler:
|
|||
slide_to_edit.icons = new_slide_model.icons
|
||||
slide_to_edit.content = new_slide_model.content
|
||||
slide_to_edit.type = SlideType(new_slide_type.slide_type)
|
||||
|
||||
|
||||
slide_to_edit_sql.index = slide_to_edit.index
|
||||
slide_to_edit_sql.type = slide_to_edit.type.value
|
||||
slide_to_edit_sql.design_index = slide_to_edit.design_index
|
||||
|
|
|
|||
|
|
@ -40,19 +40,6 @@ async def get_icons(
|
|||
) -> List[str]:
|
||||
|
||||
results = await vector_store.asimilarity_search(query=query, k=limit)
|
||||
|
||||
icon_names = [result.page_content for result in results]
|
||||
|
||||
icon_paths = [get_resource(f"assets/icons/bold/{each}.png") for each in icon_names]
|
||||
|
||||
icon_temp_paths = []
|
||||
|
||||
for each in icon_paths:
|
||||
icon_temp_path = os.path.join(temp_dir, os.path.basename(each))
|
||||
icon_temp_paths.append(icon_temp_path)
|
||||
|
||||
with open(icon_temp_path, "wb") as f_a:
|
||||
with open(each, "rb") as f_b:
|
||||
f_a.write(f_b.read())
|
||||
|
||||
return icon_temp_paths
|
||||
return [get_resource(f"assets/icons/bold/{each}.png") for each in icon_names]
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue