From 6868f6a84ffcc9e7b5be11afbcfc7f98b0892453 Mon Sep 17 00:00:00 2001 From: kompotkot Date: Fri, 13 Aug 2021 14:42:37 +0000 Subject: [PATCH 1/3] Workflow to delete images when entry deleted --- spire/journal/actions.py | 18 ++++++++++++++++++ spire/journal/api.py | 7 +++++++ 2 files changed, 25 insertions(+) diff --git a/spire/journal/actions.py b/spire/journal/actions.py index d3dc68d..c206b3e 100644 --- a/spire/journal/actions.py +++ b/spire/journal/actions.py @@ -11,6 +11,7 @@ from uuid import UUID, uuid4 import boto3 +import requests from sqlalchemy.orm import Session, Query from sqlalchemy import or_, func, text, and_ @@ -585,6 +586,23 @@ async def get_journal_entries( return query.all() +async def delete_entry_images( + access_token: str, journal_spec: JournalSpec, entry_id: UUID +) -> None: + images_url = f"https://files.bugout.dev/files/{str(journal_spec.id)}/entries/{str(entry_id)}/images" + headers = {"Authorization": f"Bearer {access_token}"} + images_response = requests.get(images_url, headers=headers) + images_response.raise_for_status() + images = images_response.json() + + for image in images.images: + try: + r = requests.delete(f"{images_url}/{image['id']}", headers=headers) + r.raise_for_status() + except Exception as e: + logger.error(f"Unable to delete image with id: {image['id']} for entry with id: {str(entry_id)}") + + async def delete_journal_entry( db_session: Session, journal_spec: JournalSpec, diff --git a/spire/journal/api.py b/spire/journal/api.py index aacdba1..8761458 100644 --- a/spire/journal/api.py +++ b/spire/journal/api.py @@ -1405,6 +1405,8 @@ async def delete_entry( {JournalEntryScopes.DELETE}, ) + access_token = request.state.token + journal_spec = JournalSpec(id=journal_id, bugout_user_id=request.state.user_id) try: journal = await actions.find_journal( @@ -1422,6 +1424,11 @@ async def delete_entry( raise HTTPException(status_code=500) es_index = journal.search_index + try: + await actions.delete_entry_images(access_token, journal_spec, entry_id) + except Exception as e: + logger.error(f"Error due deleting entry images: {str(e)}") + try: journal_entry = await actions.delete_journal_entry( db_session, From 47556695a2d333701423cd30e7f12a00f77ee6b5 Mon Sep 17 00:00:00 2001 From: kompotkot Date: Fri, 13 Aug 2021 16:51:43 +0000 Subject: [PATCH 2/3] Black check fix --- spire/journal/actions.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/spire/journal/actions.py b/spire/journal/actions.py index c206b3e..fd809ff 100644 --- a/spire/journal/actions.py +++ b/spire/journal/actions.py @@ -600,7 +600,9 @@ async def delete_entry_images( r = requests.delete(f"{images_url}/{image['id']}", headers=headers) r.raise_for_status() except Exception as e: - logger.error(f"Unable to delete image with id: {image['id']} for entry with id: {str(entry_id)}") + logger.error( + f"Unable to delete image with id: {image['id']} for entry with id: {str(entry_id)}" + ) async def delete_journal_entry( From 089f880b7e682ff8524d5e04dcf1b881699020fb Mon Sep 17 00:00:00 2001 From: kompotkot Date: Fri, 13 Aug 2021 16:59:45 +0000 Subject: [PATCH 3/3] Added timeouts for requests to lambda --- spire/journal/actions.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/spire/journal/actions.py b/spire/journal/actions.py index fd809ff..d86bd45 100644 --- a/spire/journal/actions.py +++ b/spire/journal/actions.py @@ -591,13 +591,15 @@ async def delete_entry_images( ) -> None: images_url = f"https://files.bugout.dev/files/{str(journal_spec.id)}/entries/{str(entry_id)}/images" headers = {"Authorization": f"Bearer {access_token}"} - images_response = requests.get(images_url, headers=headers) + images_response = requests.get(images_url, headers=headers, timeout=4) images_response.raise_for_status() images = images_response.json() for image in images.images: try: - r = requests.delete(f"{images_url}/{image['id']}", headers=headers) + r = requests.delete( + f"{images_url}/{image['id']}", headers=headers, timeout=4 + ) r.raise_for_status() except Exception as e: logger.error(