diff --git a/CHANGELOG.md b/CHANGELOG.md index 86c5d59..ff0a67d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ Features: - Move to https 0.28.0 droping the proxies parameter [#14](https://github.com/unckan/ckanext-superset/pull/14) + - Add databases list in admin [#21](https://github.com/unckan/ckanext-superset/pull/21) # 0.1.7 diff --git a/ckanext/superset/blueprints/superset.py b/ckanext/superset/blueprints/superset.py index d4a1c44..f6c5f1e 100644 --- a/ckanext/superset/blueprints/superset.py +++ b/ckanext/superset/blueprints/superset.py @@ -104,3 +104,17 @@ def create_dataset(chart_id): # redirect to the new CKAN dataset url = tk.h.url_for('dataset.read', id=pkg['name']) return tk.redirect_to(url) + + +@superset_bp.route('/list_databases', methods=['GET']) +@require_sysadmin_user +def list_databases(): + cfg = get_config() + sc = SupersetCKAN(**cfg) + superset_databases = sc.get_databases() + superset_url = tk.config.get('ckanext.superset.instance.url') + extra_vars = { + 'databases': superset_databases, + 'superset_url': superset_url, + } + return tk.render('superset/databases_list.html', extra_vars) diff --git a/ckanext/superset/data/main.py b/ckanext/superset/data/main.py index 931a344..d4c90c8 100644 --- a/ckanext/superset/data/main.py +++ b/ckanext/superset/data/main.py @@ -50,6 +50,9 @@ def __init__( self.datasets_response = None self.datasets = [] # {ID: data} + self.databases_response = None + self.databases = [] # {ID: data} + def load_datasets(self, force=False): """ Get and load all datasets """ if self.datasets and not force: @@ -91,8 +94,8 @@ def load_charts(self, force=False): return self.charts def load_databases(self, force=False): - if hasattr(self, 'databases') and self.databases and not force: - return + if self.databases and not force: + return self.databases self.databases_response = self.get("database/") self.databases = sorted( @@ -124,6 +127,12 @@ def get_chart(self, chart_id): self.charts.append(chart) return chart + def get_databases(self): + """ Get a list_database """ + # Get from the API + self.load_databases(self) + return self.databases + def prepare_connection(self): """ Define the client and login if required """ log.info(f"Connecting to {self.superset_url}") diff --git a/ckanext/superset/templates/superset/databases_list.html b/ckanext/superset/templates/superset/databases_list.html new file mode 100644 index 0000000..f04f055 --- /dev/null +++ b/ckanext/superset/templates/superset/databases_list.html @@ -0,0 +1,52 @@ +{% extends "page.html" %} + +{% block primary_content %} +
+
+

Databases

+ + + + + + + + + + + {% for database in databases %} + + + + + + + {% endfor %} + + +
{{ _('ID') }}{{ _('Nombre de la base de datos') }}{{ _('Autor') }}{{ _('Actualizado') }}
{{ database.id }}{{ database.database_name }}{{ database.created_by.first_name }}, {{ database.created_by.last_name }}{{ database.changed_on }}
+
+
+{% endblock %} + +{% block secondary_content %} + +
+

+ {{ _('Apache Superset') }} +

+
+ Apache Superset +

+ Apache Superset es una herramienta de visualización de datos de código abierto que permite a los usuarios + crear paneles de control y visualizaciones interactivas. +

+

+ + {{ ('Charts') }} + +

+
+
+ +{% endblock %} diff --git a/ckanext/superset/templates/superset/index.html b/ckanext/superset/templates/superset/index.html index 37a9430..a2fdf8a 100644 --- a/ckanext/superset/templates/superset/index.html +++ b/ckanext/superset/templates/superset/index.html @@ -83,7 +83,12 @@

Apache Superset es una herramienta de visualización de datos de código abierto que permite a los usuarios crear paneles de control y visualizaciones interactivas. -

+

+

+ + {{ _('Databases') }} + +