You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by li...@apache.org on 2023/07/28 23:08:10 UTC
[superset] branch master updated: fix: Allow chart import to update the dataset an existing chart points to (#24821)
This is an automated email from the ASF dual-hosted git repository.
lilykuang 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 77889b29fb fix: Allow chart import to update the dataset an existing chart points to (#24821)
77889b29fb is described below
commit 77889b29fb0e50473ca7656be4e5bf2f1dff5421
Author: Jack Fragassi <jf...@gmail.com>
AuthorDate: Fri Jul 28 16:08:03 2023 -0700
fix: Allow chart import to update the dataset an existing chart points to (#24821)
---
superset/charts/commands/importers/v1/utils.py | 4 +++-
superset/models/helpers.py | 14 +++++++++-----
2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/superset/charts/commands/importers/v1/utils.py b/superset/charts/commands/importers/v1/utils.py
index 589ae76a31..d3f90f7ff4 100644
--- a/superset/charts/commands/importers/v1/utils.py
+++ b/superset/charts/commands/importers/v1/utils.py
@@ -53,7 +53,9 @@ def import_chart(
# migrate old viz types to new ones
config = migrate_chart(config)
- chart = Slice.import_from_dict(session, config, recursive=False)
+ chart = Slice.import_from_dict(
+ session, config, recursive=False, allow_reparenting=True
+ )
if chart.id is None:
session.flush()
diff --git a/superset/models/helpers.py b/superset/models/helpers.py
index 4aa3f2b4e4..2e48fc3c66 100644
--- a/superset/models/helpers.py
+++ b/superset/models/helpers.py
@@ -182,7 +182,7 @@ class ImportExportMixin:
__mapper__: Mapper
@classmethod
- def _unique_constrains(cls) -> list[set[str]]:
+ def _unique_constraints(cls) -> list[set[str]]:
"""Get all (single column and multi column) unique constraints"""
unique = [
{c.name for c in u.columns}
@@ -244,6 +244,7 @@ class ImportExportMixin:
parent: Optional[Any] = None,
recursive: bool = True,
sync: Optional[list[str]] = None,
+ allow_reparenting: bool = False,
) -> Any:
"""Import obj from a dictionary"""
if sync is None:
@@ -256,7 +257,7 @@ class ImportExportMixin:
| {"uuid"}
)
new_children = {c: dict_rep[c] for c in cls.export_children if c in dict_rep}
- unique_constrains = cls._unique_constrains()
+ unique_constraints = cls._unique_constraints()
filters = [] # Using these filters to check if obj already exists
@@ -275,8 +276,11 @@ class ImportExportMixin:
for k, v in parent_refs.items():
dict_rep[k] = getattr(parent, v)
- # Add filter for parent obj
- filters.extend([getattr(cls, k) == dict_rep.get(k) for k in parent_refs.keys()])
+ if not allow_reparenting:
+ # Add filter for parent obj
+ filters.extend(
+ [getattr(cls, k) == dict_rep.get(k) for k in parent_refs.keys()]
+ )
# Add filter for unique constraints
ucs = [
@@ -287,7 +291,7 @@ class ImportExportMixin:
if dict_rep.get(k) is not None
]
)
- for cs in unique_constrains
+ for cs in unique_constraints
]
filters.append(or_(*ucs))