Observed since 20 Oct, 17:05 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Alliance Auth app for managing and synchronizing EVE Online standings.
Alliance Auth app for managing and synchronizing EVE Online standings across characters.
Version 0.0.1 - Initial release. Complete architectural rewrite with persistent standings database, request/approval workflow, and character-level synchronization.
AA Standings Manager is a comprehensive standings management system for Alliance Auth that enables organizations to:
This is a complete refactor that combines and improves upon features from:
┌─────────────────────────────────────────────────────────────┐
│ Persistent Standings DB │
│ (Characters, Corporations, Alliances with Standing Values) │
└─────────────────────┬───────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Request/Approval Workflow │
│ User Requests → Approver Reviews → Standing Added/Removed │
└─────────────────────┬───────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ Character Synchronization │
│ Each User's Characters Sync Standings to ESI Contacts │
└─────────────────────────────────────────────────────────────┘
User Requests Standing
Approver Reviews Request
Automatic Synchronization
Ongoing Management
esi-characters.read_contacts.v1 (read character contacts)esi-characters.write_contacts.v1 (manage character contacts)pip install aa-standingsmanager
Edit your Alliance Auth local.py settings file:
INSTALLED_APPS = [
# ... other apps ...
'standingsmanager',
]
python manage.py migrate standingsmanager
# Restart Gunicorn/UWSGI
systemctl restart allianceauth
# Restart Celery workers
systemctl restart allianceauth-worker
systemctl restart allianceauth-beat
Add to your local.py:
# Standings Manager scheduled tasks
CELERYBEAT_SCHEDULE['standingsmanager_sync_all'] = {
'task': 'standingsmanager.tasks.run_regular_sync',
'schedule': crontab(minute='*/30'), # Every 30 minutes
}
CELERYBEAT_SCHEDULE['standingsmanager_validate_all'] = {
'task': 'standingsmanager.tasks.run_regular_validation',
'schedule': crontab(hour='*/6'), # Every 6 hours
}
python manage.py collectstatic --noinput
# Organization's contact label name (users create this in-game)
STANDINGS_LABEL_NAME = "MY_ORG" # Change to your org name
# Sync interval in minutes (default: 30)
STANDINGS_SYNC_INTERVAL = 30
# Sync timeout in minutes (default: 180)
STANDINGS_SYNC_TIMEOUT = 180
# Default standing value for new standings (default: 5.0)
STANDINGS_DEFAULT_STANDING = 5.0
# Auto-validation interval in minutes (default: 360)
STANDINGS_AUTO_VALIDATE_INTERVAL = 360
# ESI scope requirements per Auth state (default: {})
STANDINGS_SCOPE_REQUIREMENTS = {
"Member": [], # No additional scopes for members
"Blue": ["esi-killmails.read_killmails.v1"], # Example: Blues need killmail access
}
The app validates all settings on startup and will raise errors for invalid configurations:
STANDINGS_LABEL_NAME must be a non-empty stringSTANDINGS_SYNC_INTERVAL must be greater than 0STANDINGS_DEFAULT_STANDING must be between -10 and +10STANDINGS_SCOPE_REQUIREMENTS must be a dictionaryThe app uses three permission levels:
| Permission | Code Name | Description |
|---|---|---|
| Basic User | standingsmanager.add_syncedcharacter | Request standings, manage own synced characters |
| Approver | standingsmanager.approve_standings | Approve/reject standing requests and revocations |
| Administrator | standingsmanager.manage_standings | Full access to standings database via Django admin |
| Auditor | standingsmanager.view_auditlog | View audit log (read-only) |
Via Django Admin:
Recommended Setup:
add_syncedcharacter (basic access)approve_standings (approval queue)manage_standings (database management)view_auditlog (audit access)Navigate to Standings Menu
Select Character or Corporation
Wait for Approval
Add Character to Sync
CRITICAL STEP: Before adding characters to sync, create the contact label in EVE:
Now you can add the character to sync in Alliance Auth.
View Status:
Remove Standing:
Troubleshooting Sync:
Managing Requests:
Managing Revocations:
Best Practices:
Standings Entry Management:
Request/Revocation Management:
Synced Character Management:
Audit Log:
"Contact label not found"
"Missing required ESI scopes"
"Token is invalid or expired"
"Sync is stale"
"Corporation request failed - missing tokens"
Verify Celery is Running:
systemctl status allianceauth-worker
systemctl status allianceauth-beat
Check Task Logs:
# View Celery worker logs
journalctl -u allianceauth-worker -f
# Check for sync errors
grep "ERROR" /var/log/allianceauth/allianceauth.log | grep standingsmanager
Force Manual Sync (Admin):
Check ESI Status:
Q: What happened to alliance contact sync and war targets? A: Version 2.0 uses a persistent standings database instead of cloning alliance contacts. War targets feature has been removed. Each organization manages their own standings list.
Q: Can I migrate from version 1.x? A: Version 2.0 is a complete rewrite with a new database schema. See MIGRATION_GUIDE.md for migration instructions.
Q: Do all my characters need to be in the same alliance? A: No! This system works for any organizational structure. Characters just need appropriate permissions and ESI scopes.
Q: How often do contacts sync?
A: By default every 30 minutes. Configurable via STANDINGS_SYNC_INTERVAL setting.
Q: What happens if I lose alliance membership? A: The system automatically detects permission loss and removes your characters from sync. Your in-game contacts remain until manually deleted.
Q: Can I have personal contacts and org contacts? A: Yes! The system only manages contacts with your organization's label. Other contacts are untouched.
Q: How do I add a corporation standing? A: Request a corporation standing from the UI. You must have valid tokens for ALL characters in that corp you own in Alliance Auth.
Q: What standing value is used for synced contacts? A: The value in the standings database (default: +5.0, configurable per entry).
Q: Can I see who approved a standing?
A: Yes! Check the Audit Log (requires view_auditlog permission) or view standing details in admin.
AA-StandingsSync
AA-StandingsRequests
Contributions welcome! Please:
For security vulnerabilities, please email the maintainer directly rather than opening a public issue.
This project is licensed under the MIT License - see the LICENSE file for details.
See CHANGELOG.md for version history and release notes.
Version: 0.0.1 Last Updated: 2025-11-16 Status: Initial Release
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.0.17 | 26 Mar 2026 | 3 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Public sponsor counts have not been collected. These signals belong to the repository owner.
github · 1 observations shown. Missing days are unknown.
| Date / source period | Value | Observed at |
|---|---|---|
| 2026-10-21 | 0 | 2026-10-21T17:51:35.8165710Z |
Observed since 20 Oct, 17:05 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:16f64239102a23f6ec132fe5adbd1c2e67da2423b63c1f0d8ffc30d4d00f5545