Skip to main content

Alliance Auth - Leave of Absence (aa-loa)

PyPI version Python versions Tests

A complete Leave of Absence (LOA) management module for Alliance Auth. This module allows members to declare periods of absence so that leadership is aware of their inactivity, while seamlessly integrating with other Alliance Auth features (like Discord and Activity Trackers) to prevent accidental purges.

Features

  • Player Dashboard: Easy-to-use form for players to submit a start date, end date, and an optional reason. Players can also view their past LOAs, and cancel/revoke an active LOA if they return early.
  • HR Dashboard: A dedicated view for Directors/HR to see a live table of all active and upcoming LOAs in the alliance.
  • Proxy Submission: Directors can submit an LOA on behalf of a member who might be unable to access a PC (e.g. emergencies).
  • Discord Role Sync: Assigns members to a specific Django Group (e.g., [On Leave]) when their LOA becomes active. Alliance Auth will automatically sync this to Discord, TS, or Mumble.
  • Purge Protection: Because the member is in the [On Leave] group, audit modules (like aa-inactives or opcalendar) can simply whitelist this group to exempt the member from activity purges.
  • Webhooks: Automatically posts a Discord Embed to a webhook URL whenever an LOA is submitted.
  • Welcome Back Notification: A Celery task automatically removes the member from the LOA group when the end date passes, and sends a "Welcome Back" Alliance Auth notification.

🤖 Optional: Discord Bot Integration (aa-discordbot)

While aa-loa works perfectly fine on its own, it integrates natively with aa-discordbot. If your alliance has aa-discordbot installed, the internal Alliance Auth notifications generated by this module will automatically be forwarded as Direct Messages (DMs) on Discord to the user. This applies to:

  • 📩 The "Welcome Back" notification when an LOA automatically expires.
  • 🛑 The "Cancellation" notification when HR manually cancels a player's LOA.

Installation

1. Install the Python Package

Activate your Alliance Auth virtual environment and install the package:

pip install -e /path/to/aa-loa/

2. Update Alliance Auth Settings

Open your myauth/settings/local.py file and add 'aa_loa' to your INSTALLED_APPS:

INSTALLED_APPS += [
    # ... other apps
    'aa_loa',
]

3. Run Database Migrations

Run the migrations to create the database tables:

python manage.py makemigrations aa_loa
python manage.py migrate

4. Restart Services

Restart your Alliance Auth web service and Celery workers so they pick up the new code and background tasks:

sudo systemctl restart supervisor

(Or restart the specific services depending on your hosting environment).


Configuration

1. Setup the LOA Group

  1. Go to the Django Admin Panel (/admin/).
  2. Navigate to Authentication and Authorization -> Groups and create a new group (e.g., On Leave).
    • Optional: Configure this group in your Discord/TS services to map to a specific [On Leave] Discord Role.
  3. Navigate to Leave of Absence Configuration -> LOA Config.
  4. Add a new configuration row.
  5. Select the On Leave group you just created.
  6. (Optional) Paste a Discord Webhook URL if you want real-time notifications in an HR channel when LOAs are submitted.

2. Permissions

Assign the following permissions to the appropriate states or groups in Alliance Auth:

Permission Description
aa_loa.basic_access Grants access to the LOA module for normal members. Allows them to submit and manage their own LOAs.
aa_loa.manage_loa Grants access to the HR Dashboard. Allows users to view all LOAs and submit proxy LOAs for other members.

3. Setup the Celery Periodic Task

To ensure LOA groups are automatically assigned and removed every night, you need to configure the daily Celery task in your local.py settings file.

Open your myauth/settings/local.py and add the following to your CELERYBEAT_SCHEDULE dictionary:

from celery.schedules import crontab

CELERYBEAT_SCHEDULE['aa_loa_sync_groups'] = {
    'task': 'aa_loa.tasks.sync_loa_groups',
    'schedule': crontab(minute='0', hour='0'),
}

Restart your celery worker (sudo systemctl restart supervisor) and the system will automatically activate/deactivate LOAs every day at midnight!

Download files

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

Source Distribution

aa_loa-0.0.2.tar.gz (10.9 kB view details)

Uploaded Source

Built Distribution

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

aa_loa-0.0.2-py3-none-any.whl (16.6 kB view details)

Uploaded Python 3

File details

Details for the file aa_loa-0.0.2.tar.gz.

File metadata

  • Download URL: aa_loa-0.0.2.tar.gz
  • Upload date:
  • Size: 10.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for aa_loa-0.0.2.tar.gz
Algorithm Hash digest
SHA256 a6c4e74e64368f27aa6f8566f657589d33a3428d0ab49c40bd798924d3eeab68
MD5 df332ecb0dbdd8543ec493c867d6b0c3
BLAKE2b-256 646467e8bc41790ba727b29a08f354c11e1ca846766bdcc9650681d584b89ec4

See more details on using hashes here.

Provenance

The following attestation bundles were made for aa_loa-0.0.2.tar.gz:

Publisher: release.yml on mbroekman/aa-loa

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

File details

Details for the file aa_loa-0.0.2-py3-none-any.whl.

File metadata

  • Download URL: aa_loa-0.0.2-py3-none-any.whl
  • Upload date:
  • Size: 16.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.14

File hashes

Hashes for aa_loa-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 6294423cd4b4d604914bff798e644e9b03588d4b8e460262f8dabe9af5e46e8e
MD5 553ea3cb62c6b799b85a94d39f4bb9a2
BLAKE2b-256 78fa2af248cff36dbe85903e7356bd8a1812a8fe82cdf70eb00f3a0cc7aee61c

See more details on using hashes here.

Provenance

The following attestation bundles were made for aa_loa-0.0.2-py3-none-any.whl:

Publisher: release.yml on mbroekman/aa-loa

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

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