From 0e014c4ac4fc3948865e67fc89bb0a2498ef05ac Mon Sep 17 00:00:00 2001
From: Samuel Gaist <samuel.gaist@idiap.ch>
Date: Wed, 14 Aug 2019 17:56:11 +0200
Subject: [PATCH] [database][commands] Add root_folder information to output

This patch also add a small filter that allows to "clean"
the folder part up to after the text given if found in
the root_folder field.
---
 .../commands/print_db_access_map.py           | 37 +++++++++++--------
 1 file changed, 21 insertions(+), 16 deletions(-)

diff --git a/beat/web/databases/management/commands/print_db_access_map.py b/beat/web/databases/management/commands/print_db_access_map.py
index 36eaa3f3b..3445689de 100644
--- a/beat/web/databases/management/commands/print_db_access_map.py
+++ b/beat/web/databases/management/commands/print_db_access_map.py
@@ -25,35 +25,40 @@
 #                                                                             #
 ###############################################################################
 
-import logging
-
 from django.core.management.base import BaseCommand
 
 from ...models import Database
 
-logger = logging.getLogger("beat.web")
-
 
 class Command(BaseCommand):
 
     help = "Prints the list of databases with access level and user information"
 
-    def handle(self, *ignored, **options):
+    def add_arguments(self, parser):
+        parser.add_argument(
+            "--folder-filter",
+            action="store",
+            dest="folder_filter",
+            default=None,
+            help="Path element up to which the the string must be cleaned",
+        )
 
-        # Setup this command's logging level
-        global logger
-        verbosity = int(options["verbosity"])
-        if verbosity >= 1:
-            if verbosity == 1:
-                logger.setLevel(logging.INFO)
-            elif verbosity >= 2:
-                logger.setLevel(logging.DEBUG)
+    def handle(self, *ignored, **options):
 
-        self.stdout.write("name, access, user")
+        self.stdout.write("name, access, folder, user")
 
         for database in Database.objects.all():
-            db_info = "{}, {}".format(
-                database.fullname(), database.get_sharing_display()
+            folder = database.declaration["root_folder"]
+            folder_filter = options["folder_filter"]
+            if folder_filter:
+                try:
+                    start = folder.rindex(folder_filter) + len(folder_filter)
+                except ValueError:
+                    start = 0
+                folder = folder[start:]
+
+            db_info = "{}, {}, {}".format(
+                database.fullname(), database.get_sharing_display(), folder
             )
 
             for user in [
-- 
GitLab