From 0207198e3d72e5770d2d512ef1381a428d69ded9 Mon Sep 17 00:00:00 2001
From: Bjarke Madsen <bjarke.madsen@geant.org>
Date: Tue, 23 Mar 2021 16:21:07 +0100
Subject: [PATCH] Implement delete folder API endpoint

---
 brian_dashboard_manager/grafana/folder.py | 21 +++++++++++++++++----
 1 file changed, 17 insertions(+), 4 deletions(-)

diff --git a/brian_dashboard_manager/grafana/folder.py b/brian_dashboard_manager/grafana/folder.py
index fe3700f..64e6ad4 100644
--- a/brian_dashboard_manager/grafana/folder.py
+++ b/brian_dashboard_manager/grafana/folder.py
@@ -6,17 +6,30 @@ from brian_dashboard_manager.grafana.utils.request import TokenRequest
 logger = logging.getLogger(__name__)
 
 
-def find_folder(token_request, title):
-    folders = get_folders(token_request)
+def delete_folder(request: TokenRequest, title, uid=None):
+    if uid:
+        r = request.delete(f'api/folders/{uid}')
+        return r is not None
+    else:
+        folder = find_folder(request, title, False)
+        if folder is None:
+            return True
+        r = request.delete(f'api/folders/{folder.get("uid")}')
+        logger.info(f'Deleted folder: {title}')
+        return r is not None
+
+
+def find_folder(request: TokenRequest, title, create=True):
+    folders = get_folders(request)
     try:
         folder = next(
             f for f in folders if f['title'].lower() == title.lower())
     except StopIteration:
         folder = None
 
-    if not folder:
+    if not folder and create:
         logger.info(f'Created folder: {title}')
-        folder = create_folder(token_request, title)
+        folder = create_folder(request, title)
     return folder
 
 
-- 
GitLab