Skip to main content

Legion of xXDEATHXx Bootstrap 5 theme for Alliance Auth 5

Project description

Alliance Auth XIX Theme

PyPI version Python versions License: GPL-3.0-or-later

The Legion of xXDEATHXx theme for Alliance Auth 5 (Django 5.2 LTS, Bootstrap 5). It ships a self-contained Bootstrap 5 build with the XIX brand styling and restyles the public/login pages, delivered as a standard Python package.

Русская версия: README.ru.md.

Features

  • Dashboard theme via the AA5 theme selector. Registers a ThemeHook named xix that appears in the user's theme picker.
  • Self-contained assets. The theme serves its own Bootstrap 5 CSS, JS bundle and the Lato web font from this package's static files; nothing is loaded from a CDN or Google Fonts.
  • Restyled public pages. The login chain — with an animated starfield background — and the django-esi character-pick page are overridden with Bootstrap 5 layouts that match the theme.
  • Operator-configurable strings via an optional AA_THEME_XIX settings dict — no template forking required (see Configuration).
  • English and Russian translation catalogues.

Requirements

  • Alliance Auth >=5,<6
  • Python >=3.11,<3.15

Installation

pip install aa-theme-xix

To install the latest unreleased changes straight from the repository instead:

pip install git+https://gitlab.com/legion-of-xxdeathxx/aa-theme-xix.git

Open your local.py and add the following right below your INSTALLED_APPS:

# XIX Theme - https://gitlab.com/legion-of-xxdeathxx/aa-theme-xix
INSTALLED_APPS.insert(0, "aa_theme_xix")

This single entry both activates the template overrides (login page, ESI token selection, icons) and registers the theme with Alliance Auth's theme selector.

Then collect the static files:

python manage.py collectstatic

Once installed, each user can pick xix from the theme selector in their Alliance Auth profile.

Configuration

The theme works without any configuration. To override the operator-facing strings on the public pages without forking the templates, add an optional AA_THEME_XIX dict to your local.py:

AA_THEME_XIX = {
    "LOGIN_TITLE": "My Alliance",
    "LOGIN_SUBTITLE": "TICKER",
    "DISCORD_INVITE_URL": "https://discord.gg/example",
    "OPENGRAPH_DESCRIPTION": "My Alliance's auth system.",
}
Key Default Description
LOGIN_TITLE Legion of xXDEATHXx Heading (and logo alt text) in the login box.
LOGIN_SUBTITLE X.I.X Ticker line under the heading.
DISCORD_INVITE_URL the XIX Discord invite Target of the Discord link on the login page.
OPENGRAPH_DESCRIPTION the Alliance Auth blurb Site description used in link previews (OpenGraph meta).

Any key left unset keeps the theme's built-in default, so an out-of-the-box install renders exactly as shipped.

Default theme

Each user selects a theme from their profile. Until a user makes a choice, Alliance Auth renders the theme named by its core DEFAULT_THEME setting (shipped as allianceauth.theme.flatly.auth_hooks.FlatlyThemeHook). To make XIX the default for everyone who has not picked one yet, set DEFAULT_THEME in your local.py:

# Make XIX the default for users who have not chosen a theme
DEFAULT_THEME = "aa_theme_xix.auth_hooks.AaXixThemeHook"

DEFAULT_THEME is an Alliance Auth core setting, not a XIX one — it only sets the fallback; users can still switch to any installed theme from their profile. The public login pages are always XIX-styled regardless of this setting.

Upgrade

pip install --upgrade aa-theme-xix
python manage.py collectstatic

Using aa-gdpr

If you are using aa-gdpr, this theme's entry needs to come after the aa-gdpr entry:

# GDPR Compliance
INSTALLED_APPS.insert(0, "aagdpr")
AVOID_CDN = True

# XIX Theme - https://gitlab.com/legion-of-xxdeathxx/aa-theme-xix
INSTALLED_APPS.insert(0, "aa_theme_xix")

Building from source

The shipped CSS and JS are not edited directly — they are compiled from scss/ and js/ with a gulp + dart-sass + PostCSS + esbuild toolchain:

npm ci               # reproducible toolchain pinned by package-lock.json
npm run compile      # compiles scss/ and js/ -> aa_theme_xix/static/

The Python package is built with uv on the hatchling build backend:

uv build             # produces a wheel and sdist in dist/

The package version is single-sourced in pyproject.toml (version); aa_theme_xix/__init__.py derives __version__ from the installed distribution metadata at runtime, and the test suite enforces the match.

Limitations

  • Alliance Auth 5 only. The templates target the AA5 / Bootstrap-5 theme-hook era; Alliance Auth 4 is not supported.
  • Run collectstatic after every install or upgrade — the theme serves its Bootstrap bundle and compiled CSS from this package's static files.
  • This is a presentation layer only: it adds no models, views, or URLs.

License

Distributed under the GPL-3.0-or-later license.

Changelog

See CHANGELOG.md.

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

aa_theme_xix-0.4.0.tar.gz (259.6 kB view details)

Uploaded Source

Built Distribution

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

aa_theme_xix-0.4.0-py3-none-any.whl (266.7 kB view details)

Uploaded Python 3

File details

Details for the file aa_theme_xix-0.4.0.tar.gz.

File metadata

  • Download URL: aa_theme_xix-0.4.0.tar.gz
  • Upload date:
  • Size: 259.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for aa_theme_xix-0.4.0.tar.gz
Algorithm Hash digest
SHA256 dca1247dfc77b18d8de99661dedd34f36fa1964dc4a5ec9aefe8ac18d977acc1
MD5 3fba92544a2c19fcd8495d2cd5d2f188
BLAKE2b-256 8b2fa15c5eb1a6f1884061814b1147e1517d308cbbf211dc9b54640e8c9b853d

See more details on using hashes here.

File details

Details for the file aa_theme_xix-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: aa_theme_xix-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 266.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.9.30 {"installer":{"name":"uv","version":"0.9.30","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for aa_theme_xix-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d8776ca8472a42eaa571e2d42b510c6f473f3444c20cb8654bb9b5b1842d4d84
MD5 0548b4bee1eb00333cc01aa52a3c0fd5
BLAKE2b-256 c5fe71986bd764752be7996cbd260ae983cfbb6489613028c2f5dd16a47237a3

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