Extension Collection


Extension Basics

Title
Collection
Name
ckanext-collection
Type
Public extension
Description
Declarative data collection interfaces
CKAN versions

~2.9, ~2.10, ~2.11

Show details
Download-Url (zip)
Download-Url commit date
2025-03-11
Url to repo
Category
Data Management & Quality


Background Infos

Description (long)
Show details

Framework for building interfaces for data collections using declarative style. Simplifies describing series of items such as datasets from search pages, registered users, CSV file rows, database tables, etc. Provides generic interface for pagination, search, filtering, sorting, and displaying data in multiple formats (HTML, CSV, JSON, custom). Supports multiple data sources: ModelData (SQLAlchemy models), ApiSearchData/ApiListData (CKAN API), CsvFileData (CSV files), StatementData/UnionData (raw SQL). Features include configurable columns with visibility/filterability/sortability controls, multiple serializers (JSON, CSV, DictList, HTMX Table, ChartJS), naive filters and search for model data, streaming encoding for large datasets, collection registration via signals, export endpoints with custom filenames, value serializers for custom formatting, and integration with ckanext-admin-panel for configuration.

Version
0.3.0
Version release date
2025-03-11
Contact name
DataShades / Sergey Motornyuk
Contakt email
Contact Url
(not set)


Installation Guide

Configuration hints

Installation: pip install ckanext-collection, add ‘collection’ to ckan.plugins. Define collections by subclassing Collection with DataFactory (data source) and ColumnsFactory (column configuration). Data sources: ModelData.with_attributes(model=model.Resource) for DB models, ApiSearchData.with_attributes(action=’package_search’) for CKAN API, CsvFileData.with_attributes(source=’/path/to/file.csv’) for CSV files. Columns: Columns.with_attributes(names=[‘name’, ‘size’]) defines exportable fields. Usage: col = MyCollection(), items = list(col) for paginated results, items = list(col.data) for all items, items = list(col.data[8:12]) for slices. Serialization: JsonSerializer(col), CsvSerializer(col), DictListSerializer(col), HtmxTableSerializer(col). Advanced: Register via ‘collection:register_collections’ signal, implement custom serializers with row_dictizer, use Collection.replace_service for service customization, export via collection_export endpoint. Dependencies: typing-extensions. Documentation: https://datashades.github.io/ckanext-collection/. Use cases: Custom dataset listings, user management interfaces, report generation, data export tools, admin panels.

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