Observed since 20 Oct, 17:07 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
aa-wanderer-leaderboard
Mapping contribution leaderboard for Wanderer
Mapping contribution leaderboard for a Wanderer map, by month or by week, as an Alliance Auth app.
Wanderer already totals mapping contributions — but it totals them per character, and it has no way of knowing that six characters are one person. Alliance Auth does: it is the authoritative record of mains and alts. This app reads Wanderer's audit API and rolls the numbers up per main, so a scanning reward program pays out from one table instead of being reconciled by hand.
Nothing runs in the background and nothing is stored. Opening the page makes at
most one call to Wanderer for the selected map, and both that response and the
finished table are cached for five minutes
(WANDERER_LEADERBOARD_CACHE_TTL). Paging between months or weeks inside that
window costs no further calls, and the cache is shared, so a hundred people
watching the leaderboard cost the same as one. Editing a map's URL or API key
discards what the old ones fetched.
Wanderer only serves a rolling three month window, so older months and weeks cannot be shown; the page says so rather than displaying a misleading zero.
pip install -U aa-wanderer-leaderboard
Add wanderer_leaderboard to INSTALLED_APPS, then:
python manage.py migrate
Optional settings in local.py:
WANDERER_LEADERBOARD_API_TIMEOUT = 30 # seconds
WANDERER_LEADERBOARD_CACHE_TTL = 300 # seconds a response is reused
Everything else is per map and lives in the admin. No database link to Wanderer is required.
wanderer_leaderboard | general | Can access the Wanderer Leaderboard. The menu entry appears for them.GEESE, THUGS). Leave
this list empty to rank everyone who shows up in the audit log.The base URL is called from the Alliance Auth server, not from your browser, so it has to be reachable from there — behind Docker that is usually the Wanderer service name rather than the localhost address you use in the browser.
Pick a map, then Month or Week, on the page. One map is shown at a time.
With at least one active entry under Tracked alliances, the board shows only contributors whose Alliance Auth main character is in one of those alliances. Everyone else is left off, and the page says how many were hidden rather than pretending the map was quiet.
For a contributor Auth knows, the alliance is read from their main, never from
the character that did the scanning, so an alt parked in a holding alliance does
not move its main off the board. For a contributor Auth has no main for, the
alliance Wanderer reports for the scanning character is used instead, and the
row keeps its unlinked badge. Most people who scan for an alliance never
register in Auth, so judging them by a main they do not have would hide most of
the alliance.
One consequence: if Auth's copy of someone's main is stale and carries no alliance, that registered person drops off a filtered board while unregistered characters stay on it. Running Auth's character update fixes it.
Tickers are matched case-insensitively and stored upper case. Nothing validates
that a ticker exists — a typo simply matches nobody — so the admin list shows a
Registered mains count beside each entry, which reads 0 — check the ticker
when nothing matches.
DJANGO_SETTINGS_MODULE=testauth.settings.local python runtests.py wanderer_leaderboard
Needs allianceauth and a reachable Redis; override with
TESTAUTH_REDIS_URL=redis://aa_redis:6379/15.
Counts events produced by Wanderer. Project layout follows allianceauth-workflows and Kalkoken's aa-example-app.
Download counts and popularity will appear here as the collector receives them.
| Package / target | Requirement | Relationship |
|---|---|---|
allianceauthEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | allianceauth<6,>=4.0.0 | runtime |
requestsEnvironment{
"extras": "",
"marker": null,
"requires_python": ">=3.10",
"evaluation": "NOT_EVALUATED"
} | requests>=2.28 | runtime |
bdist_wheel · 37.6 KB · Python py3
sdist · 45.55 KB · Python source
Shared repository data · GitHub
Observed since 20 Oct, 17:07 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package_version:e6b90f7f4ce61865fafb6818e5ca3e929cb2ea94e46160e825709cc8d55a2aa6