A public asset shop plugin for Alliance Auth.
Project description
aa-shop
An Alliance Auth plugin that lets auth members run a public shop stocked automatically from their own EVE assets.
Features
- Create and manage your own shops from the Shop entry in the auth sidebar.
- Every published shop has a public storefront anyone can browse — no login required. Unpublished shops stay private to you as a preview until you're ready to share.
- Sell ships and blueprint copies, kept in stock automatically from your aa-memberaudit assets and priced however you choose — a fixed price, "Ask", or a percentage of Jita.
- Shoppers browse, search, and open a detail page for anything you list; you can feature and hide individual items.
Requirements
- Alliance Auth >= 5
- aa-memberaudit >= 5, installed and syncing
Installation
-
Install into your Alliance Auth virtual environment:
pip install aa-shop
-
Add
"shop"toINSTALLED_APPSin your auth project'slocal.py:INSTALLED_APPS += ["shop"]
-
Let the storefront serve its public pages — required, or anonymous visitors are redirected to login:
APPS_WITH_PUBLIC_VIEWS = ["storefront"]
-
Run migrations and collect static files, then restart your AA services:
python manage.py migrate python manage.py collectstatic
-
EVE universe data: the ship and blueprint pickers read from django-eveuniverse, so make sure its data is populated (load the full EVE universe, or at least the Ship category, with eveuniverse's load tooling). Types that aren't loaded won't be selectable.
-
Grant the
shop.basic_accesspermission (Django admin, or via groups/states) to members who should be able to run shops. -
Selling blueprint copies additionally needs the shop owner's character to have granted the
esi-characters.read_blueprints.v1scope — registering the character with aa-memberaudit already covers this.
Scheduled tasks
Add these to your local.py so stock and prices stay current:
from celery.schedules import crontab
# Recompute stock for every shop, hourly (ships + blueprint copies).
CELERYBEAT_SCHEDULE["shop_refresh_all_stock"] = {
"task": "shop.tasks.refresh_all_stock",
"schedule": crontab(minute=0),
}
# Re-price anything set to a percentage of Jita, every 6 hours.
CELERYBEAT_SCHEDULE["shop_refresh_pct_prices"] = {
"task": "shop.tasks.refresh_pct_prices",
"schedule": crontab(minute=0, hour="*/6"),
}
Stock is read from your aa-memberaudit assets; the hourly task also nudges memberaudit to
pull fresh assets first, so you don't need to tune its update rings. ESI caches assets and
blueprints for about an hour, so hourly is as often as is useful. Optional settings:
SHOP_REFRESH_MEMBERAUDIT_ASSETS = False skips the asset nudge, and SHOP_TASKS_PRIORITY
(1 = urgent … 9 = idle, default 7) sets the priority of these background tasks.
Usage
Members with access get a Shop entry in the auth sidebar. From there you can create a shop, name it and give it a short link, choose what it sells (ships, blueprint copies), and publish it. While a shop is unpublished only you can see it, as a preview; once published, share its link with anyone.
Stock and prices fill in automatically from your assets on the schedule above — you just set your pricing rules and pick which items to feature or hide.
Contributing
Design docs and implementation plans live in docs/superpowers/. The storefront stylesheet
ships compiled (shop/static/shop/storefront.css); to rebuild it after changing storefront
templates, use the standalone Tailwind v4 CLI + daisyUI (no Node required):
bash scripts/build-css.sh # add --watch during development
Releasing (maintainers, needs pip install build twine):
bash scripts/release.sh # build + twine check
bash scripts/release.sh --test # ...then upload to TestPyPI
bash scripts/release.sh --pypi # ...then upload to PyPI
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file aa_shop-0.2.0.tar.gz.
File metadata
- Download URL: aa_shop-0.2.0.tar.gz
- Upload date:
- Size: 93.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7740e7eb10bb756cb3a0d6d370e0ad6226dbb287c1a4a256c1f3c4ccf7fb0f3c
|
|
| MD5 |
6d0010432e59665af55c794373a63f39
|
|
| BLAKE2b-256 |
35d880104bcd3c16e39d5061222455ae1de00df659b2d797b161adece5b97575
|
File details
Details for the file aa_shop-0.2.0-py3-none-any.whl.
File metadata
- Download URL: aa_shop-0.2.0-py3-none-any.whl
- Upload date:
- Size: 143.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d05940bf31e70ecb204bede71c5f331f62620af1aedb0140908580c29cf947f6
|
|
| MD5 |
b60304ea9b6435523c47493c423e07dd
|
|
| BLAKE2b-256 |
cc5ace36cf5774e96231f75892d1d394f71d123f51ce61c7b87cb14d69150f54
|