Skip to content
Skip to documentation content

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.

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.py
  • src/trapitan/web/templates/push_calls.html
  • src/trapitan/authorization/dependencies.py
  • src/trapitan/authorization/policy.py
  • src/trapitan/api/routes/guards.py
  • src/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.