AA Alt Corp
aa-altcorp is an Alliance Auth plugin for tracking alt-corporation relationships and auditing whether member-related characters, corporations, and alliances have the expected contact standings and access-list permissions.
It reads Alliance Auth and aa-contacts data, compares that data with configured policy, and reports differences for human review. It does not modify EVE contacts or access lists.
What it does
- Records corporations and characters associated with Alliance Auth users.
- Audits contact standings and access-list access for valid members.
- Detects blue contacts and ACL entries without a matching Auth relationship.
- Supports policies for Auth states, groups, positive contacts, named entities, and individual access lists.
- Creates separate alert facets for contact and ACL problems.
- Supports temporary exemptions with expiry, revocation, and an audit trail.
- Delivers alerts through
allianceauth-discordbotor a plain webhook. - Keeps the older corporation review flow available for existing installations.
The alert engine is informational. It never writes to EVE contacts or EVE access lists; changes remain manual administrator actions.
Requirements
The plugin supports Python 3.10 through 3.13 and requires:
Alliance Auth >= 5.3, < 6
aa-contacts >= 1.0.1, < 2
django-esi >= 9, < 10
croniter >= 6, < 7
django-celery-beat >= 2.7, < 3
Installation
Activate the virtual environment used by Alliance Auth and install the package:
pip install allianceauth-altcorp
Add the application to INSTALLED_APPS:
INSTALLED_APPS = [
# ...
"aa_altcorp",
]
Run migrations and collect static files:
python manage.py migrate
python manage.py collectstatic --noinput
The app configuration is aa_altcorp.apps.AaAltcorpConfig.
Configuration
Open Django Admin → Alt Corp settings after installation. Configure the standing target, valid Auth states, expected entity scope, alert delivery, notification interval, and Discord details there.
Alerting defaults to disabled so an upgrade does not immediately send notifications. Configure the expected state and policies first, then enable alerts.
An access list produces a missing-access alert only when it has an Access list policy in Django Admin. Present-but-unjustified entries can still produce alerts without a policy.
Scheduling
Create the periodic audit, alert scan, and Discord refresh tasks with:
python manage.py schedule_altcorp_tasks --scan-cron "0 * * * *"
The command is idempotent. --hours changes the audit interval, and --remove removes the tasks it created. On larger installations, schedule aa_altcorp.tasks.sync_all_access_lists separately to fan ACL synchronization out across characters.
Discord alerts
Discord integration is provided by allianceauth-discordbot. Go to that repository for installation, configuration, and bot worker instructions.
Permissions
| Permission | Purpose |
|---|---|
aa_altcorp.basic_access |
View plugin pages |
aa_altcorp.manage_relationships |
Attach corporations and characters |
aa_altcorp.view_alerts |
Reserved for future use |
aa_altcorp.manage_alerts |
Reserved for future use |
Alerts, exemptions, and access-list policies are managed through Django Admin permissions. The reserved alert permissions do not independently grant admin access. Discord authorization follows the configured roles.
Development
python3.12 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e '.[dev]'
pre-commit run --all-files
pytest
tox -e py312
On Windows, run the complete local pipeline with:
.\scripts\run_pipeline.ps1
GitHub Actions runs pre-commit, the Auth-absent pytest suite on Python 3.10–3.13, and the Alliance Auth integration suite on Python 3.12. See RELEASING.md for the first push, development workflow, and releases.
License
This project is licensed under the GNU General Public License v3.0. See LICENSE.
Release files for allianceauth-altcorp 0.0.12
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| allianceauth_altcorp-0.0.12.tar.gz | 127.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| allianceauth_altcorp-0.0.12-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 244.8 kB
Release files / allianceauth_altcorp-0.0.12.tar.gz
| Download URL | allianceauth_altcorp-0.0.12.tar.gz |
|---|---|
| Size | 127.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
e477fdb87b79be644b2187416945ef84378d04dca903d252dc13dc5a7f9dde34
|
|
BLAKE2b-256 checksum How to use checksums |
6fc0d3acf960c144c71ba0bb8b5c9249495b189b5a88df295a9064a90eb3d573
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.0
|
Release files / allianceauth_altcorp-0.0.12-py3-none-any.whl
| Download URL | allianceauth_altcorp-0.0.12-py3-none-any.whl |
|---|---|
| Size | 117.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f4294f62de8721bf9230bed502d9bc3a70577e8bddf66f8dbfa44d107324101a
|
|
BLAKE2b-256 checksum How to use checksums |
3750e2eb1d21e0ef102b63e2eeb3c2c4c8cf4c3d8671ea651b057066cb1597fe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.0
|