Django app that serves a parody build artifact as a public book site, with section-level auth gating (public = online-only subset; owner = full book).
Project description
parody-web
A reusable Django app that serves a parody build artifact as a public book site, with section-level auth gating. It's the web surface of the parody ecosystem:
parody— core: builds the artifact (and the print/LaTeX side, for now)parody-web— this: renders an artifact as a website- (future)
parody-print— if/when the LaTeX side is split out of core
You pip install parody-web into a thin per-book Django project; the package is
generic, so one codebase serves every book site. Each book differs only by
config + content. First site: the partial Real-Time Computing book at
rtcbook.org.
Access model
The site imports the full artifact and gates by section: the public sees
only online_only sections (the openly-licensed subset); the private parts
require login, and only the owner has an account. One deployment serves both the
public partial book and — to the owner — the whole thing. (If you'd rather the
full text never touch the database, import the partial parody build --online-only artifact instead — then there are no private sections.)
Why a Django app (not a static site)
Parody artifact html is Django-template-flavored — it embeds {% media %},
{% static %}, {% cite %} etc. This app renders it natively through the
Django template engine (parody_web.templatetags.parody_web.render_book), so
there's no second, lossy tag-resolution renderer to maintain.
Use it in a project
# settings.py
INSTALLED_APPS = [..., "parody_web"]
BOOK_SLUG = "real-time-computing" # which imported book is the site root
# urls.py
urlpatterns = [path("", include("parody_web.urls")), ...]
pip install parody-web
python manage.py migrate
python manage.py createsuperuser # the owner (only account)
python manage.py import_artifact rtc.json --slug real-time-computing
Provides: Book/Chapter/Section models, the import_artifact command
(upsert-by-slug, idempotent), index + section views, templates (override them in
your project), and the rendering template tags. Reads settings.BOOK_SLUG,
MEDIA_URL, LOGIN_URL.
A ready-to-copy thin project — settings, urls, Procfile, and AWS/SSM deploy glue
— lives in example_site/; generate a new book site from it.
Develop
pip install -e .
python runtests.py # standalone test suite (tests/settings.py)
Deploy
AWS via SSM + GitHub Actions, designed for reuse across book projects: each
book site is a small repo (copied from example_site/) that pins this package
and calls the shared reusable workflow (deploy-reusable.yml) — improve the
renderer or the deploy once, every site picks it up. Runbook:
example_site/deploy/AWS.md.
Status
0.x — interfaces may change. Renders the rtc artifact end to end with
section-level auth gating; 9 tests. {% cite %} currently renders [key]
(wire citeproc/a .bib for full citations). Not yet published to PyPI or
deployed to rtcbook.org (owner steps).
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file parody_web-0.1.14.tar.gz.
File metadata
- Download URL: parody_web-0.1.14.tar.gz
- Upload date:
- Size: 27.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
770fd4b960ac3185ea0d942d5af36906c462c9603e62ce3f61079894428551a6
|
|
| MD5 |
2e9e6aa5c3337f7eed02195b2059f385
|
|
| BLAKE2b-256 |
eaf9480d780ca5e57227396e6f66eaf3e9eda3426dc4e80b5d7d3b3ecfa19e76
|
File details
Details for the file parody_web-0.1.14-py3-none-any.whl.
File metadata
- Download URL: parody_web-0.1.14-py3-none-any.whl
- Upload date:
- Size: 33.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
60414ddb7c3b1d1fa65cb61675b64714425db7e3b3d909bbee1cdf5f0f1a9ca9
|
|
| MD5 |
4041fc3f9290c661d4c53451c362926b
|
|
| BLAKE2b-256 |
f8aa69157a47f32288099bda78949d247248330df1db7ff07bbd8b2c4d4584bf
|