You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by di...@apache.org on 2024/02/27 15:32:17 UTC

(superset) branch master updated: fix(import-datasources): Use "admin" user as default for importing datasources (#27154)

This is an automated email from the ASF dual-hosted git repository.

diegopucci pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git


The following commit(s) were added to refs/heads/master by this push:
     new 6447cd0e92 fix(import-datasources): Use "admin" user as default for importing datasources (#27154)
6447cd0e92 is described below

commit 6447cd0e9223a73c0b32dd8e37e1ae5c93120967
Author: James O'Claire <ja...@gmail.com>
AuthorDate: Tue Feb 27 23:32:04 2024 +0800

    fix(import-datasources): Use "admin" user as default for importing datasources (#27154)
---
 superset/cli/importexport.py | 39 ++++++++++++++++++++++++---------------
 1 file changed, 24 insertions(+), 15 deletions(-)

diff --git a/superset/cli/importexport.py b/superset/cli/importexport.py
index 54322aaec2..50c8aa78a7 100755
--- a/superset/cli/importexport.py
+++ b/superset/cli/importexport.py
@@ -28,6 +28,7 @@ from flask.cli import with_appcontext
 
 from superset import security_manager
 from superset.extensions import db
+from superset.utils.core import override_user
 
 logger = logging.getLogger(__name__)
 
@@ -170,26 +171,34 @@ def import_dashboards(path: str, username: Optional[str]) -> None:
     "-p",
     help="Path to a single ZIP file",
 )
-def import_datasources(path: str) -> None:
+@click.option(
+    "--username",
+    "-u",
+    required=False,
+    default="admin",
+    help="Specify the user name to assign datasources to",
+)
+def import_datasources(path: str, username: Optional[str] = "admin") -> None:
     """Import datasources from ZIP file"""
     # pylint: disable=import-outside-toplevel
     from superset.commands.dataset.importers.dispatcher import ImportDatasetsCommand
     from superset.commands.importers.v1.utils import get_contents_from_bundle
 
-    if is_zipfile(path):
-        with ZipFile(path) as bundle:
-            contents = get_contents_from_bundle(bundle)
-    else:
-        with open(path) as file:
-            contents = {path: file.read()}
-    try:
-        ImportDatasetsCommand(contents, overwrite=True).run()
-    except Exception:  # pylint: disable=broad-except
-        logger.exception(
-            "There was an error when importing the dataset(s), please check the "
-            "exception traceback in the log"
-        )
-        sys.exit(1)
+    with override_user(user=security_manager.find_user(username=username)):
+        if is_zipfile(path):
+            with ZipFile(path) as bundle:
+                contents = get_contents_from_bundle(bundle)
+        else:
+            with open(path) as file:
+                contents = {path: file.read()}
+        try:
+            ImportDatasetsCommand(contents, overwrite=True).run()
+        except Exception:  # pylint: disable=broad-except
+            logger.exception(
+                "There was an error when importing the dataset(s), please check the "
+                "exception traceback in the log"
+            )
+            sys.exit(1)
 
 
 @click.command()