# aa-pootest

A minimal **test plugin** for [Alliance Auth](https://gitlab.com/allianceauth/allianceauth) (AA).

It adds a single permission-gated page ("POO Test") to the AA sidebar that renders
a *Hello, World!* card. Use it to verify your AA dev/prod setup can install and load
a custom plugin, or as a starting point for your own app.

![License](https://img.shields.io/badge/license-MIT-green)

- **Distribution (pip) name:** `aa-pootest`
- **Django app / module name:** `pootest`

## Features

- Fully functional Alliance Auth app with a view and a basic permission
- Sidebar menu entry (visible only to users with the access permission)
- **Pulls the structures owned by a corporation from ESI and shows each one in
  its own panel** (System, Name, Structure Type, Fuel/Days Remaining, Last Update)
- Installable with the standard AA plugin workflow

## Installation

> Run all commands inside your Alliance Auth virtual environment.

### 1. Install the package

From a local checkout (editable, for development):

```bash
pip install -e aa-pootest
```

Or from a built/published package:

```bash
pip install aa-pootest
```

Or directly from git:

```bash
pip install git+https://github.com/PooAmped/aa-pootest
```

### 2. Enable the app

Add the app's **module name** to `INSTALLED_APPS` in `myauth/settings/local.py`:

```python
INSTALLED_APPS += [
    "pootest",
]
```

### 3. Run migrations & collect static files

```bash
python manage.py migrate
python manage.py collectstatic --noinput
```

### 4. Restart Alliance Auth

```bash
supervisorctl restart myauth:
```

### 5. Grant access

In the AA admin site, grant the permission
`pootest | general | Can access this app` to the relevant **state** or **group**.
Users with that permission will then see the **POO Test** entry in the sidebar.

## Usage: list corporation structures

Open **POO Test** in the sidebar and click **View Corporation Structures**.

1. You'll be sent through EVE SSO to authorize a character. The character used
   **must hold the Director or Station Manager role** in the corporation you want
   to read — ESI enforces this server-side.
2. The required ESI scopes are requested automatically:
   - `esi-corporations.read_structures.v1` — read the corporation's structures
   - `esi-universe.read_structures.v1` — resolve structure names
   - `esi-assets.read_corporation_assets.v1` — read current fuel-bay contents
     (used to compute "Fuel Required")

   > If you authorized an earlier version, you'll be asked to re-authorize once
   > to grant the new assets scope.
3. The page then shows every structure owned by that character's corporation,
   each in its own panel with these fields (label on the left, ESI value on the
   right):
   - **System:** solar system the structure is in
   - **Name:** the structure's name
   - **Structure Type:** e.g. Fortizar, Raitaru, Astrahus
   - **Fuel Level:** days until `fuel_expires` (ESI does not expose an absolute
     fuel quantity on this endpoint)
   - **Fuel Required:** fuel blocks needed to run for 3 months, derived from the
     structure's current burn rate (current fuel ÷ hours-to-empty, scaled to 90
     days). Shows "Unknown" if the structure has no fuel/expiry data or the
     assets scope wasn't granted.
   - **Last Update:** when the data was pulled from ESI

If the character is not a Director / Station Manager (or the scopes were not
granted), the page shows a warning instead of a list.

## Settings

| Name                 | Description           | Default |
| -------------------- | --------------------- | ------- |
| `POOTEST_SETTING_ONE`| Example optional value| `None`  |

Override in `myauth/settings/local.py` if desired.

## License

MIT — see [LICENSE](LICENSE).
