Add DRF API app and real-time draft management UI

- Created new `api` Django app with serializers, viewsets, and routers
  to expose draft sessions, participants, and movie data.
- Registered `api` app in settings and updated root URL configuration.
- Extended WebSocket consumers with `inform.draft_status` /
  `request.draft_status` to allow fetching current draft state.
- Updated `DraftSession` and related models to support reverse lookups
  for draft picks.
- Enhanced draft state manager to include `draft_order` in summaries.
- Added React WebSocket context provider, connection status component,
  and new admin/participant panels with phase and participant tracking.
- Updated SCSS for participant lists, phase indicators, and status badges.
- Modified Django templates to mount new React roots for admin and
  participant views.
- Updated Webpack dev server config to proxy WebSocket connections.
This commit is contained in:
2025-08-08 12:50:33 -05:00
parent c9ce7a36d0
commit 9b6b3391e6
28 changed files with 804 additions and 171 deletions

View File

@@ -31,12 +31,10 @@
"name": "Start Webpack Dev Server",
"type": "node",
"request": "launch",
"program": "npm",
"runtimeExecutable": "npm",
"args": [
"run",
"dev",
"--config",
"${workspaceFolder}/frontend/webpack.config.js"
"dev"
],
"cwd": "${workspaceFolder}/frontend",
"console": "integratedTerminal",
@@ -63,8 +61,8 @@
],
"compounds": [
{
"name": "Django + Chrome",
"configurations": ["Run Django Server", "Launch Chrome"],
"name": "Django + Chrome + Webpack",
"configurations": ["Run Django Server", "Launch Chrome", "Start Webpack Dev Server"],
"type": "compound"
}
]
@@ -154,23 +152,24 @@
"editor.defaultFormatter": "ms-python.black-formatter"
},
"[django-html]": {
"editor.defaultFormatter": "esbenp.prettier-vscode",
"editor.quickSuggestions": {
"other": true,
"comments": true,
"strings": true
}
"editor.defaultFormatter": "monosans.djlint",
},
"files.exclude": {
"**/__pycache__":true,
".venv":true
"emmet.includeLanguages": {
"django-html": "html"
},
"files.associations": {
"*.dj.html": "django-html"
},
"html.autoClosingTags": true,
"emmet.includeLanguages": {
"django-html": "html"
}
"files.exclude": {
"**/__pycache__":true,
".venv":false
},
"auto-close-tag.activationOnLanguage": [
"django-html"
],
"terminal.integrated.env.osx": {
"VSCODE_HISTFILE":"${workspaceFolder}/.venv/.term_history"
},
// "html.autoClosingTags": true,
}
}