Skip to content

Extras

Extra Status Notes
markdown implemented markdown package
sanitize implemented bleach
search stub Index published() only; host picks backend
tags stub Soft dep on host tag library
social stub Share matrix; secrets in host env
images stub Future media / image-primary format
events implemented Domain-neutral ArticleEvent timeline, opt-in app

Stubs live under blog_core.extras.* for discoverability.

events

blog_core.extras.events ships a domain-neutral ArticleEvent model: a timestamped occurrence attached to an Article (article, occurred_at, label, source, source_id, body, metadata). It carries no domain vocabulary of its own, so a host can use it for any per-article timeline (access log, webhook deliveries, audit trail, ...). (source, source_id) is unique, so re-importing the same upstream record is idempotent.

The model and its migrations only load when the app is opted in:

pip install "django-blog-core[events]"
INSTALLED_APPS = [
    ...,
    "blog_core",
    "blog_core.extras.events",
]
python manage.py migrate
from blog_core.extras.events.models import ArticleEvent

ArticleEvent.objects.create(
    article=article,
    source="my-importer",
    source_id="42",
    label="example-tag",
    occurred_at=timestamp,
)
article.events.all()  # chronological timeline, oldest first