Integrate draft session support with phase handling and real-time updates
- Added user authentication UI in the base template for navbar. - Expanded `league.dj.html` to include a new "Draft Sessions" tab showing active drafts. - Refactored Django views and models to support `DraftSession` with participants and movies. - Replaced deprecated models like `DraftParticipant` and `DraftMoviePool` with a new schema using `DraftSessionParticipant`. - Introduced WebSocket consumers (`DraftAdminConsumer`, `DraftParticipantConsumer`) with structured phase logic and caching. - Added `DraftStateManager` for managing draft state in Django cache. - Created frontend UI components in React for draft admin and participants, including phase control and WebSocket message logging. - Updated SCSS styles for improved UI structure and messaging area.
This commit is contained in:
@@ -3,11 +3,11 @@ from enum import IntEnum
|
||||
class DraftMessage:
|
||||
# Server
|
||||
INFORM_PHASE_CHANGE = "inform.phase.change"
|
||||
CONFIRM_PHASE_ADVANCE = "confirm.phase.advance"
|
||||
INFORM_STATUS = "inform.status"
|
||||
CONFIRM_PHASE_CHANGE = "confirm.phase.change"
|
||||
INFORM_PHASE = "inform.phase"
|
||||
|
||||
# Client
|
||||
REQUEST_PHASE_ADVANCE = "request.phase.advance"
|
||||
REQUEST_PHASE_CHANGE = "request.phase.change"
|
||||
REQUEST_INFORM_STATUS = "request.inform.status"
|
||||
|
||||
# Waiting Phase
|
||||
@@ -15,10 +15,12 @@ class DraftMessage:
|
||||
INFORM_JOIN_USER = "inform.join.user"
|
||||
REQUEST_JOIN_PARTICIPANT = "request.join.participant"
|
||||
REQUEST_JOIN_ADMIN = "request.join.admin"
|
||||
INFORM_LEAVE_PARTICIPANT = "inform.leave.participant"
|
||||
|
||||
## Client
|
||||
NOTIFY_JOIN_USER = "notify.join.user"
|
||||
CONFIRM_JOIN_PARTICIPANT = "confirm.join.participant"
|
||||
REJECT_JOIN_PARTICIPANT = "reject.join.participant"
|
||||
CONFIRM_JOIN_ADMIN = "confirm.join.admin"
|
||||
|
||||
# Determine Order
|
||||
@@ -54,42 +56,4 @@ class DraftGroupChannelNames:
|
||||
@property
|
||||
def participant(self):
|
||||
return f"{self.prefix}.participant"
|
||||
|
||||
class DraftCacheKeys:
|
||||
def __init__(self, id):
|
||||
self.prefix = f"draft:{id}"
|
||||
|
||||
@property
|
||||
def admins(self):
|
||||
return f"{self.prefix}:admins"
|
||||
|
||||
@property
|
||||
def participants(self):
|
||||
return f"{self.prefix}:participants"
|
||||
|
||||
|
||||
# @property
|
||||
# def state(self):
|
||||
# return f"{self.prefix}:state"
|
||||
|
||||
# @property
|
||||
# def current_movie(self):
|
||||
# return f"{self.prefix}:current_movie"
|
||||
|
||||
# @property
|
||||
# def bids(self):
|
||||
# return f"{self.prefix}:bids"
|
||||
|
||||
# @property
|
||||
# def participants(self):
|
||||
# return f"{self.prefix}:participants"
|
||||
|
||||
# @property
|
||||
# def bid_timer_end(self):
|
||||
# return f"{self.prefix}:bid_timer_end"
|
||||
|
||||
# def user_status(self, user_id):
|
||||
# return f"{self.prefix}:user:{user_id}:status"
|
||||
|
||||
# def user_channel(self, user_id):
|
||||
# return f"{self.prefix}:user:{user_id}:channel"
|
||||
|
||||
Reference in New Issue
Block a user