Skip to main content

Indico plugin for synchronizing external Indico feeds into local events

Project description

Indico Feed Sync Plugin

Synchronizes events from external Indico feeds into this instance.

Features

  • Configurable feeds – each feed can target a different category and control whether updates, deletions, detailed event exports and a startdate_day cutoff are used.
  • Event mirroring – new, updated or deleted events in the remote feed are reflected locally, including timetable blocks and event log entries.
  • Attachment links – remote attachments (files, links, material resources) are linked into the cloned event without copying the binary content.
  • Manual and scheduled synchronization – feeds can be refreshed on demand from the admin UI or periodically by Celery beat.
  • Progress tracking – the admin status table shows queued/running/completed states, per-action counters and Celery task IDs for queued jobs.
  • Background force sync – “Force sync” actions enqueue Celery jobs so the UI responds instantly; errors are logged and mirrored in the status column.
  • Audit logging – every create/update/delete is also recorded in Admin → Logs with the feed id, action type, local event id/title and remote external id for easy auditing.

Usage Example

  1. Add feeds in plugin settings – open Admin → Plugins → Feed Sync, edit the JSON, and define the feed URL, target category ID, flags (e.g. allow_updates, allow_deletions), plus an optional startdate_day (defaults to -30 meaning “only events starting within the last 30 days or later”).
  2. Manual refresh – click “Refresh now” for incremental updates, or “Force sync” to re-import everything; watch the progress status in the table.
  3. Background queue – “Force sync” queues a Celery job; monitor its progress in the admin status column or in the Celery log.
  4. Timetable & attachments – the plugin automatically copies timetable blocks and exposes external attachments as links so attendees see the same agenda and files.

Notes

  • Requires a running Celery worker and Redis broker; without them “Force sync” fails immediately with an error message.
  • Progress data lives in feed_state; if you edit the JSON manually, keep feed IDs consistent.
  • Regular (non-force) sync still runs synchronously for quick incremental updates.
  • The startdate_day filter only affects new synchronizations; older events that already exist locally are left untouched even if they fall outside the window.

Packaging & Distribution

The project is ready for publication on PyPI as indico-plugin-feed-sync. To build and upload a release:

python -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade build twine
python -m build
python -m twine upload dist/*

All plugin assets (Python modules and Jinja templates) are bundled automatically.

Project details


Download files

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

Source Distribution

indico_plugin_feed_sync-0.1.0.tar.gz (26.4 kB view details)

Uploaded Source

Built Distribution

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

indico_plugin_feed_sync-0.1.0-py3-none-any.whl (27.5 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: indico_plugin_feed_sync-0.1.0.tar.gz
  • Upload date:
  • Size: 26.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.11

File hashes

Hashes for indico_plugin_feed_sync-0.1.0.tar.gz
Algorithm Hash digest
SHA256 7136604ea9e541308cde5b24df980fed7247d34cb282a2cee750489ebda0368f
MD5 02891d23f5884d8bbe5ba5132e408742
BLAKE2b-256 3c8d0c9264a158e7e915a82cbe29719ad2155c4aad7a122102c41df54d6e59eb

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for indico_plugin_feed_sync-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 758e0ad0fc74f9f775f0fba00ab70ceba1e5b44a9b7683276453f99bb1ec5b62
MD5 1a3f35ad4027529fcec879215445f4d8
BLAKE2b-256 29a605385f26be9b0b0a8d1b40a4e73e2846d189f4fb78451b58757e1459bdf2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page