Extension Tables


Extension Basics

Title
Tables
Name
ckanext-tables
Type
Public extension
Description
Ein CKAN-Plugin zur Darstellung tabellarischer Daten mit Tabulator. Bietet eine flexible Python-API zur Definition von Tabellen mit Spalten, Filtern, Formatierungen und Aktionen.
CKAN versions

~2.9, ~2.10, ~2.11

Show details
Download-Url (zip)
Download-Url commit date
2025-09-30
Url to repo
Category
Visualization & Analytics


Background Infos

Description (long)
Show details

ckanext-tables

Eine CKAN-Erweiterung zur Anzeige tabellarischer Daten mit Tabulator. Bietet eine umfassende API zur Definition von Tabellen mit folgenden Features:

  • Verschiedene Datenquellen (DatabaseDataSource, ListDataSource, Custom)
  • Flexibles Spaltensystem mit anpassbaren Formatierern
  • Eingebaute Formatter (Date, UserLink, Boolean, List, Actions, JSON, Modal Dialog)
  • Server-seitige und Client-seitige Filter
  • Sortierung und Paginierung
  • Row-Level Actions und Global Actions
  • Toast-Benachrichtigungen und Confirm-Dialoge
  • Fullscreen-Modus
  • Loading-Indikatoren
  • AJAX-basierte Datenladung
  • Zugriffskontrolle pro Tabelle
  • Custom Templates möglich

Typische Anwendungsfälle: Admin-Panels, User-Management-Tables, Data-Explorer, Dashboard-Tabellen.

Die Extension verwendet dataclasses für Tabellen- und Spaltendefinitionen, ISignal für Registrierung, und bietet generische Views für schnelle Integration.

Lizenz: AGPL-3.0

Version
0.4.0
Version release date
2025-09-30
Contact name
DataShades
Contakt email
(not set)
Contact Url
(not set)


Installation Guide

Configuration hints

Installation

pip install ckanext-tables

Configuration

ckan.plugins = … tables …

Keine DB-Migration erforderlich

Verwendung in Plugin:

from ckanext.tables.shared import TableDefinition, ColumnDefinition, DatabaseDataSource, formatters from ckan.plugins import toolkit as tk

class MyTable(TableDefinition): def init(self): super().init( name=”my_table”, data_source=DatabaseDataSource( stmt=select(model.User.id, model.User.name), model=model.User ), columns=[ ColumnDefinition(field=”id”, title=”ID”), ColumnDefinition( field=”name”, title=”Name”, formatters=[(formatters.UserLinkFormatter, {})] ) ] )

Registrierung via ISignal:

def get_signal_subscriptions(self): return { tk.signals.ckanext.signal(“ckanext.tables.register_tables”): [ self.collect_tables ] }

def collect_tables(self, sender): return {“my_table”: MyTable}

View erstellen:

from ckanext.tables.shared import GenericTableView from flask import Blueprint

bp = Blueprint(“my_tables”, name, url_prefix=”/admin”) bp.add_url_rule( “/users”, view_func=GenericTableView.as_view( “users_table”, table=”my_table” ) )

Plugins to configure (ckan.ini)
tables
CKAN Settings (ckan.ini)
(not set)
DB migration to be executed
tables
<< back to Extensions