Vendors¶
The vendors app manages the dealer/marketplace lifecycle end-to-end: from
application, through jury selection, to table payment and at-show relationship
management.
What it does¶
Vendor types & table sizes —
VendorTypecarries the application form (a JSON schema authored through the form builder) and now a configurabletaskslist. Table sizes/quantities are part of the application.Application workflow — vendors submit a
Vendorrecord holding their formdata. The record moves through a status machine:submitted → approved / rejected / waitlisted → archived.Jury voting (real-time) —
Jury,Juror,JuryRating, andVendorDisplaypower a collaborative evaluation session over Django Channels WebSockets (/ws/jurors/<display_id>/). Jurors rate vendors live; the consumer aggregates and broadcasts the rolling result and can auto-advance.Configurable task flow —
VendorType.tasksis an authored, ordered list of required tasks (built-ins likepay-table,register-event,sign-contract, plus self-report tasks likebook-hotel/custom-link). Completion state is computed by_compute_vendor_task_states()(built-ins derive from real data; self-report tasks readVendor.task_completions). Tasks support prerequisites so authors can order them.Ping conversations — a staff ↔ vendor messaging surface (
VendorMessage) with sound-on-new and mute.At-show — vendor check-in and a show-floor display.
Vendor lifecycle¶
application form → jury voting (WS) → approval
→ table payment (Stripe) → task flow (built-in + self-report)
→ at-show ping / check-in
Key models¶
Event
└─ VendorType (form: JSON schema; tasks: JSON ordered task list)
└─ Vendor (data: JSONField submission; status; task_completions: JSON)
└─ VendorMessage (ping conversation)
└─ Jury → Juror → JuryRating
└─ VendorDisplay (the live display being voted on)
Where to look¶
Models:
vendors/models.pyViews + task-state computation:
vendors/views.pyURLs (under
/app/vendors/):vendors/urls.pyReal-time voting:
vendors/consumers.py,vendors/routing.pyFrontend:
ui/src/app/apps/vendors/Task component authoring registry:
ui/src/app/apps/register/register-form-components/vendor-task-components.ts