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 %}
+ {{ _('ID') }}
+ {{ _('Nombre de la base de datos') }}
+ {{ _('Autor') }}
+ {{ _('Actualizado') }}
+
+
+ {% endfor %}
+
+
+ {{ database.id }}
+ {{ database.database_name }}
+ {{ database.created_by.first_name }}, {{ database.created_by.last_name }}
+ {{ database.changed_on }}
+
+ 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. +
+ +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. -
+ +