aa-opshub
A standalone Alliance Auth app that combines, in one package, the everyday features of Structure Timers II, Op Calendar and a Discord signup bot. It depends only on Alliance Auth itself (no aa-structures, aa-structuretimers, aa-opcalendar, aa-fleetpings, ...), so updates to other community plugins can't break it.
What it does (version 0.1)
Timers (Structure Timers II style)
- Timer board: system, structure type and name, owner, armor/shield/hull/anchoring..., hostile/friendly, FINAL flag, notes, OPSEC flag
- Search and filters (objective, timer type, structure type, include past)
- OPSEC timers are hidden from anyone without the
view_opsecpermission - Notification rules (admin site): post a Discord message when a timer is created, or N minutes before it expires, optionally filtered by objective / timer type, with
@everyone,@hereor a role ping. Each timer is announced once per rule. - Old timers are deleted automatically
Calendar and ops (Op Calendar style)
- Month-grid calendar showing ops and timers together, with category colours and tickers
- Create an op from a timer (prefilled) or from scratch; categories, FC, doctrine, formup, "important" flag, group restriction
- Recurring ops (daily / weekly / every 2 weeks / monthly, up to 52 repeats). Repeats are posted to Discord shortly before each one starts, not all at once.
- Reminder pings: 1 hour / 1 day / 1 week before, plus one custom time. Each is a new pinging message replying to the op's post.
- "Starting now" ping button (
@hereor@everyone) on the op page - Personal calendar feed (.ics) for Google / Outlook / Apple calendar. Token-protected, shows only what that user may see.
Discord
- One message per op with
@everyone/@here/ role ping and Attending / Tentative / Declined buttons - The embed lists who is coming, tentative and declined and updates live; signing up on the Auth page updates it too
- Editing an op refreshes the message (no re-ping); deleting an op deletes the message
Not included yet (planned stages)
- Structures: automatic ESI sync of corp structures, fuel alerts, attack/reinforcement notifications that create timers
- Fleet Pings: formatted pings with fleet types, doctrines, comms and formup locations
- Staging-system distances (jumps / light-years) on timers, in-game calendar import, NPSI event imports
Install
See the guides in docs/:
1-SERVER-ADMIN-INSTALL.md- for whoever runs the Auth server (Docker, no Git)2-DISCORD-SETUP.md- creating the Discord bot, click by click3-FIRST-RUN-TEST.md- a safe test checklist
After install, auth opshub_check self-tests the setup.
Permissions
| Permission | For |
|---|---|
basic_access |
everyone: see timers/ops/calendar, sign up (web and Discord) |
create_timer |
scouts: add timers, edit/delete their own |
create_operation |
FCs: create ops, edit/delete their own, send pings |
view_opsec |
see OPSEC-flagged timers |
manage_all |
leadership: edit/delete anyone's, see all group-restricted ops |
Discord signups need the member to have the Auth Discord service activated and a main character set.
Notes
- Times are EVE time (UTC). Signup names are the member's main character.
- The Discord embed shows signed-up names to everyone who can see the channel; group-restricted ops are only hidden inside Auth.
- Changing an op's ping channel after creation isn't supported: delete and recreate.
- Templates extend
allianceauth/base-bs5.html(Alliance Auth 4/5). - Developed without a live Alliance Auth to run against. Pure logic (scheduling,
calendar grid, iCal, Discord payloads) and migration/model consistency are
unit-tested (
python -m unittest discover -s tests); run the first-run test on your server before relying on it. - Developer note: after changing
models.py, runpython tools/make_migration.py.
Metadata
Release files for aa-opshub 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aa_opshub-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Release files / aa_opshub-0.1.1-py3-none-any.whl
| Download URL | aa_opshub-0.1.1-py3-none-any.whl |
|---|---|
| Size | 40.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6b162a5ce4961f28a5cba10734ae01266c7f38aadfedec7cd9b8ab21922eb4fe
|
|
BLAKE2b-256 checksum How to use checksums |
a947def5bb38c68928f1084a5e43019dabf28088c7569dfcd039081acdee53c1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.2
|
Security for aa-opshub 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.