1
1
"""Import a list of assets from a yaml file and create them in the superset assets folder."""
2
2
import os
3
3
import uuid
4
- import yaml
5
4
from zipfile import ZipFile
5
+
6
+ import yaml
6
7
from superset .app import create_app
7
8
8
9
app = create_app ()
9
10
app .app_context ().push ()
10
11
12
+ from copy import deepcopy
13
+
11
14
from superset import security_manager
12
15
from superset .commands .importers .v1 .assets import ImportAssetsCommand
13
16
from superset .commands .importers .v1 .utils import get_contents_from_bundle
14
17
from superset .extensions import db
15
18
from superset .models .dashboard import Dashboard
16
19
from superset .utils .database import get_or_create_db
17
20
18
- from copy import deepcopy
19
-
20
21
BASE_DIR = "/app/assets/superset"
21
22
22
23
ASSET_FOLDER_MAPPING = {
37
38
ASSETS_FILE_PATH = "/app/pythonpath/assets.yaml"
38
39
ASSETS_ZIP_PATH = "/app/assets/assets.zip"
39
40
40
- ASSETS_TRANSLATIONS = yaml .load (open (TRANSLATIONS_FILE_PATH , "r" ), Loader = yaml .FullLoader )
41
+ ASSETS_TRANSLATIONS = yaml .load (
42
+ open (TRANSLATIONS_FILE_PATH , "r" ), Loader = yaml .FullLoader
43
+ )
41
44
42
45
43
46
def main ():
@@ -99,9 +102,7 @@ def write_asset_to_file(asset, asset_name, folder, file_name, roles):
99
102
# access the original dashboards.
100
103
dashboard_roles = asset .pop ("_roles" , None )
101
104
if dashboard_roles :
102
- roles [asset ["uuid" ]] = [
103
- security_manager .find_role ("Admin" )
104
- ]
105
+ roles [asset ["uuid" ]] = [security_manager .find_role ("Admin" )]
105
106
106
107
path = f"{ BASE_DIR } /{ folder } /{ file_name } .yaml"
107
108
with open (path , "w" ) as file :
@@ -136,6 +137,8 @@ def generate_translated_dashboard_elements(copy, language):
136
137
"""Generate translated elements for a dashboard"""
137
138
position = copy .get ("position" , {})
138
139
140
+ SUPPORTED_TYPES = ["TAB" , "HEADER" ]
141
+
139
142
for element in position .values ():
140
143
if not isinstance (element , dict ):
141
144
continue
@@ -155,12 +158,12 @@ def generate_translated_dashboard_elements(copy, language):
155
158
meta ["sliceName" ] = translation
156
159
meta ["uuid" ] = element_id
157
160
158
- elif element .get ("type" ) == "TAB" :
161
+ elif element .get ("type" ) in SUPPORTED_TYPES :
159
162
chart_body_id = element .get ("id" )
160
163
if not meta or not meta .get ("text" ):
161
164
continue
162
165
163
- element_type = "Tab"
166
+ element_type = element . get ( "type" )
164
167
element_id = chart_body_id
165
168
translation = get_translation (meta ["text" ], language )
166
169
@@ -220,7 +223,6 @@ def update_dashboard_roles(roles):
220
223
db .session .commit ()
221
224
222
225
223
-
224
226
def get_translation (text , language ):
225
227
"""Get a translation for a text in a language"""
226
228
LANGUAGE = ASSETS_TRANSLATIONS .get (language , {})
0 commit comments