Command / Push Calls
Push Calls¶
Coordinate requested resources and replace each destination’s recorded pushed total.
At a glance¶
Route: /workspaces/{workspace_id}/push-calls.
Who can open this page: collection. The workspace must have enabled entitlement and an active, verified membership; ownership does not bypass verification. Sign in with Discord. Sidebar visibility is separate from endpoint permission. This documentation never submits workspace requests.
What you see¶
The table shows Player Name, Village, Push (pushed / needed and a per-call bar), Coords, a Marketplace link and Update; managers additionally see Delete and Call. Player Name opens Account Villages; Village opens Villages with exact-coordinate filtering. Call opens Coordinates or Link and Resources Needed. Update opens Resources Pushed prefilled with the current absolute total. There is no deadline or later goal/configuration editor.
Who fills in each field¶
| Field or data | What it means | Who fills it in | Can it be changed here? | When it updates |
|---|---|---|---|---|
| Account, village and coordinates | Destination resolves from this workspace server roster; manager selects coordinates. | workspace-manager, roster-ingest |
Destination selected at creation with manage_push_calls and collection; read-only afterwards | Page load from latest recorded values |
| Needed | Positive resource request entered when creating a call; current form has no deadline field. | workspace-manager |
manage_push_calls at creation | Call creation |
| Pushed | Member replaces nonnegative recorded pushed total; only positive delta produces linked-account activity attribution. | signed-in-member, backend-derived |
collection with current linked account | Contribution submission |
| Fulfillment | Per-call pushed/needed progress bar on this page; the related Overview calculation uses workspace sums. Raw resource totals remain unchanged. | backend-derived |
Read-only | Local render after row load or saved change |
Calculations¶
Push fulfillment¶
dashboard.push-fulfillment — Percentage of total requested resources recorded as pushed.
Rule: If sum(needed)<=0 return 0; otherwise min(100, round(100*sum(pushed)/sum(needed),1)). This is the ratio of sums, not average row percentages.
| Input | Who fills it in | Unit | Optional | Fallback |
|---|---|---|---|---|
| needed | workspace-manager |
resources | No | Required; no fallback |
| pushed | signed-in-member |
resources | No | Required; no fallback |
Output unit: percent. Precision: One decimal place. Rounding: Python round(value,1), ties to even; row totals are integers. Clamp: Upper bound 100 only; nonpositive total needed returns zero. Timezone: not-applicable.
Empty calls return zero. Overfulfillment displays 100 while stored resource totals remain unchanged. Pushed endpoint replaces absolute total; positive delta alone creates attributed activity. Inline Push Calls mirror is per-call progress, using Math.round(ratio*1000)/10, unlike backend ratio-of-workspace-sums and Python ties-to-even. Needed is positive at creation.
Canonical implementation and dependencies: reviewed source symbols. Non-canonical mirror: reviewed mirror.
Used on: Overview, Push Calls
Freshness and updates¶
Rows load on entry; successful create, update or delete changes the local table. Another member’s changes appear on reloading. Destination names are copied from the server roster at creation, not continuously rehydrated. Totals are manually recorded resources, not extension-collected shipments. A positive increase alone creates contribution activity for the linked account; a decrease replaces the total without negative attribution.
Actions and permissions¶
Who can perform each action / Who can take action: each actor below needs the exact grant and conditions, independently of page visibility. All writes retain workspace scoping; same-origin checks apply as listed.
| Action | Actor | Permission |
|---|---|---|
| Create push call | workspace-manager | Enabled entitlement, verified active membership, manage_push_calls and collection, current linked account, same origin and roster destination |
| Replace pushed total | signed-in-member | Enabled entitlement, verified active membership, collection, current linked account, same origin and nonnegative absolute total |
| Delete push call | workspace-manager | Enabled entitlement, verified active membership, manage_push_calls, same origin and call in authorized workspace; no current-account dependency |
In Trapitan, choose Call, enter a roster destination such as synthetic 12|34 and a positive integer goal, then Create. For Update, enter the new total, not an increment: replacing 500 with 700 records 700 total and attributes a 200 increase. Marketplace opens the game; it does not send resources automatically. Delete removes the call immediately; the current script has no confirmation dialog.
States and edge cases¶
No push calls yet is the empty state. Loading failure says Push calls could not be loaded. Invalid location, unknown roster coordinate and a nonpositive goal produce form errors; create/update failures retain their dialog with feedback. Missing or cross-workspace calls return 404. Delete failure has no dedicated visible error feedback. Overfulfillment preserves the resource total while capping the bar; integer row labels abbreviate thousands as k and millions as M, with at most one decimal. No automatic expiry is implemented.
Related pages¶
Overview, Members, Reservations, Legacy Push Calls page.
Source references¶
Source reviewed: 2026-10-07
Source references
Stable page ID: command.push-calls.
src/trapitan/api/routes/web.pysrc/trapitan/web/templates/push_calls.htmlsrc/trapitan/authorization/dependencies.pysrc/trapitan/authorization/policy.pysrc/trapitan/api/routes/guards.pysrc/trapitan/authorization/current_account.py
Calculation dashboard.push-fulfillment:
- Canonical implementation:
src/trapitan/api/routes/web.py—_push_fulfillment. - Dependency:
src/trapitan/api/routes/web.py—update_push_call_pushed. - Non-canonical mirror:
src/trapitan/web/templates/push_calls.html— per-call JavaScript progress, not workspace ratio-of-sums.