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.1.tar.gz (10.1 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.1-py3-none-any.whl (15.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: aa_loa-0.0.1.tar.gz
  • Upload date:
  • Size: 10.1 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.1.tar.gz
Algorithm Hash digest
SHA256 f635531a25eb4a795620b9f8695d3b694693cfcaf3a4468a7a045574dd152325
MD5 8e20e984fdb255031615d171cd6634fe
BLAKE2b-256 fb1cd74ee2db40015036753f09538e0f0d3f6c59bf42cf8b39a80055d506ec67

See more details on using hashes here.

Provenance

The following attestation bundles were made for aa_loa-0.0.1.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.1-py3-none-any.whl.

File metadata

  • Download URL: aa_loa-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 15.0 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 b38c269dffcd8b33af1499dffb873784680c61f42550d471b9c6573c30224f66
MD5 f7818c4e8a681d58c4c6305ab429109b
BLAKE2b-256 b099ff807174e6c9f93d6f0eb5a0a5ffe9acd1dcbc5b26b18a99240dd2f13bc6

See more details on using hashes here.

Provenance

The following attestation bundles were made for aa_loa-0.0.1-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