Skip to content

Commit

Permalink
archive demo removal refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
hmaciasc committed Nov 30, 2023
1 parent 122b541 commit 3f09c4b
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 26 deletions.
3 changes: 2 additions & 1 deletion cp2/ControlPanel/ControlPanel/view.py
Original file line number Diff line number Diff line change
Expand Up @@ -175,8 +175,9 @@ def ajax_delete_demo(request):

response = {}
if status != 204:
result = result.json()
response["status"] = "KO"
response["message"] = result.get("error")
response["message"] = result.get("detail").get("error")
else:
response["status"] = "OK"
return HttpResponse(json.dumps(response), "application/json")
Expand Down
29 changes: 29 additions & 0 deletions ipol_demo/modules/core/archive/archive.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,35 @@ def __init__(self):
self.logger = init_logging()
self.init_database()

def delete_demo(self, demo_id: int) -> Result:
"""
Delete the demo from the archive.
"""
try:
# Get all experiments for this demo
conn = lite.connect(settings.database_file)
cursor_db = conn.cursor()
cursor_db.execute(
"SELECT DISTINCT id FROM experiments WHERE id_demo = ?", (demo_id,)
)

experiment_id_list = cursor_db.fetchall()
if not experiment_id_list:
return Ok

# Delete experiments and files
for experiment_id in experiment_id_list:
self.delete_exp_w_deps(conn, experiment_id[0])
conn.commit()
conn.close()

except Exception:
message = f"Error deleting demo #{demo_id}"
logging.exception(message)
return Err(message)

return Ok

def delete_exp_w_deps(self, conn, experiment_id: int) -> int:
"""
This function remove, in the database, an experiment from
Expand Down
27 changes: 2 additions & 25 deletions ipol_demo/modules/core/archive/router.py
Original file line number Diff line number Diff line change
Expand Up @@ -312,32 +312,9 @@ def delete_blob_w_deps(blob_id: int) -> None:
"/demo/{demo_id}", dependencies=[Depends(validate_ip)], status_code=204
)
def delete_demo(demo_id: int) -> None:
"""
Delete the demo from the archive.
"""
try:
# Get all experiments for this demo
conn = lite.connect(settings.database_file)
cursor_db = conn.cursor()
cursor_db.execute(
"SELECT DISTINCT id FROM experiments WHERE id_demo = ?", (demo_id,)
)

experiment_id_list = cursor_db.fetchall()

if not experiment_id_list:
return None

# Delete experiments and files
for experiment_id in experiment_id_list:
archive.delete_exp_w_deps(conn, experiment_id[0])
conn.commit()
conn.close()

except Exception:
logging.exception(f"Error deleting demo #{demo_id}")
result = archive.delete_demo(demo_id)
if isinstance(result, Err):
raise HTTPException(status_code=404, detail=f"Error deleting demo {demo_id}")

return None


Expand Down

0 comments on commit 3f09c4b

Please sign in to comment.