Skip to main content

ClimWeb Dataset Helper

Wizards for ingesting reference datasets — WMS, raster (COG/tile), vector (tile/PMTiles) and OCHA/HDX admin boundaries — into ClimWeb via GeoManager.

Previously distributed as a ClimWeb plugin (installed with install_plugin.sh into CLIMWEB_PLUGIN_DIR). It is now an ordinary pip-installable Django/Wagtail app, packaged the same way as forecastmanager.

Installation

ClimWeb ships dataset_helper in INSTALLED_APPS (next to geomanager), so on a ClimWeb instance you only need the package present in the same Python environment:

pip install climweb-dataset-helper

Do not also set CLIMWEB_ADDITIONAL_APPS=dataset_helper — that would register the app twice.

For any other Wagtail project, add it yourself:

INSTALLED_APPS = [
    ...
    "geomanager",
    "dataset_helper",
    ...
]

Then run migrations. Note the app label is dataset_helper_plugin, not the module name — see App label below:

python manage.py migrate dataset_helper_plugin

The tool appears in the Wagtail admin under GeoManager → Dataset helper (/admin/geomanager/dataset_helper/).

Requirements

  • Python >= 3.8 (ClimWeb runs 3.11)
  • PostgreSQL/PostGIS — migrations 0006 and 0023 contain raw PostgreSQL
  • geomanager >= 0.6, wagtail >= 6.0, django >= 4.2
  • Optional, for the Admin Boundaries tab: pip install "climweb-dataset-helper[boundaries]" (geopandas + adm-boundary-manager). Both are imported lazily; without them the app still loads and the boundary endpoints return a clear error. ClimWeb already ships both.

App label

The Python module is dataset_helper, but the Django app label is pinned to dataset_helper_plugin in apps.py:

class DatasetHelperConfig(AppConfig):
    name = 'dataset_helper'
    label = 'dataset_helper_plugin'

Django derives table names and the app column of django_migrations from the label, so pinning it keeps the existing dataset_helper_plugin_* tables and migration history intact. Sites upgrading from the plugin need no data migration — uninstall the plugin, pip install this package, and carry on.

The practical consequence: management commands take the label.

python manage.py migrate dataset_helper_plugin
python manage.py sqlmigrate dataset_helper_plugin 0024

Upgrading from the plugin

  1. Back up the database (recommended, though no schema rewrite is involved).
  2. Remove the old plugin: delete it from CLIMWEB_PLUGIN_DIR (or run its uninstall.sh), and drop dataset_helper_plugin from any plugin config.
  3. pip install climweb-dataset-helper. On ClimWeb that is all — the app is already in INSTALLED_APPS. Remove dataset_helper from CLIMWEB_ADDITIONAL_APPS if it is set there.
  4. python manage.py migrate dataset_helper_plugin — this applies only 0024_reconcile_model_state, which closes pre-existing drift between models.py and the recorded migration state (four CharField definitions, plus the implicit id fields on catalogstate/pluginsettings which were still AutoField).

Two client-side names changed:

  • Admin URL: /admin/geomanager/dataset_helper_plugin//admin/geomanager/dataset_helper/
  • URL namespace / template directory: dataset_helper_plugindataset_helper

What changed from the plugin

Plugin Package
install_plugin.sh into CLIMWEB_PLUGIN_DIR pip install climweb-dataset-helper
Discovered via climweb_plugin_info.json Listed in INSTALLED_APPS / CLIMWEB_ADDITIONAL_APPS
apps.py registered with climweb.base.registries.plugin_registry Plain AppConfig — the registration was a no-op
plugins.py (Plugin subclass, returned no urls) Removed; admin URLs come from wagtail_hooks.py, as before
config/settings/plugin_settings.py appended to STATICFILES_DIRS Removed; the UI is self-contained HTML + CDN MapLibre, there are no bundled static files
Required a ClimWeb checkout on sys.path to import Imports standalone; ClimWeb is reached only through geomanager

build.sh, uninstall.sh, Makefile and climweb_plugin_info.json are gone — pip handles all of it.

Sandbox

sandbox/ is a minimal Wagtail project running GeoManager and Dataset Helper on their own, so you can exercise the app without standing up a full ClimWeb instance.

cd sandbox
docker compose up --build

Then open http://localhost:8000/admin/geomanager/dataset_helper/ and log in with admin / admin (created on first start; change it in sandbox/.env).

The compose file builds from the repo root and installs the package with -e .., and bind-mounts dataset_helper/ into the container — edits to the app are picked up by the dev server without a rebuild. Postgres is exposed on 5433 so it won't collide with a local ClimWeb database.

Unlike forecastmanager's sandbox this one cannot use SQLite: GeoManager stores geometry, and migrations 0006/0023 contain raw PostgreSQL. The compose file provides postgis/postgis:15-3.3, and the image is built from the same GDAL base ClimWeb uses.

To run it without Docker, point DATABASE_URL at your own PostGIS database:

cd sandbox
pip install -r requirements.txt
export DATABASE_URL=postgis://postgres:postgres@localhost:5432/dataset_helper
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver

Development

pip install -e ".[boundaries]"

boot_django.py configures a minimal Django for the helper scripts (point it at a PostGIS database with the DB_NAME/DB_USER/DB_PASSWORD/DB_HOST/DB_PORT env vars):

python makemigrations.py
python migrate.py
python -m build          # builds dist/*.whl and dist/*.tar.gz

Translations live in dataset_helper/locale/ (ar, es, fr, pt):

django-admin makemessages -l fr
django-admin compilemessages

Releases are published to PyPI by .github/workflows/publish.yml when a GitHub release is created (trusted publishing — no token needed).

License

MIT — see LICENSE.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

climweb_dataset_helper-0.1.0.tar.gz (376.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

climweb_dataset_helper-0.1.0-py3-none-any.whl (429.0 kB view details)

Uploaded Python 3

File details

Details for the file climweb_dataset_helper-0.1.0.tar.gz.

File metadata

  • Download URL: climweb_dataset_helper-0.1.0.tar.gz
  • Upload date:
  • Size: 376.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for climweb_dataset_helper-0.1.0.tar.gz
Algorithm Hash digest
SHA256 cdfc579fa3cb851c27c316286da1c9f162eb9d4c5d84fbae57e72f18c75835a4
MD5 9f45897a9c4785146204422e4726e3a1
BLAKE2b-256 1cad3aca0c44eaed691c683ad61a11f9720bab124953ac64f0f0ef5fe068d1ef

See more details on using hashes here.

Provenance

The following attestation bundles were made for climweb_dataset_helper-0.1.0.tar.gz:

Publisher: publish.yml on wmo-raf/climweb-dataset-helper

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file climweb_dataset_helper-0.1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for climweb_dataset_helper-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 946feb8b83aa0275dccecc645a9eec26deefa95145661278d146f21cb03656ab
MD5 295896069061f7360745afe5893aea0e
BLAKE2b-256 c1211cfc138af62249b383f9ba37db6cbfb78bc5e86177885e4d2aa359ab961d

See more details on using hashes here.

Provenance

The following attestation bundles were made for climweb_dataset_helper-0.1.0-py3-none-any.whl:

Publisher: publish.yml on wmo-raf/climweb-dataset-helper

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page