11import nebula
2- from nebula .helpers .create_new_event import create_new_event
2+ from nebula .helpers .create_new_event import EventData , create_new_event
33from nebula .helpers .scheduling import parse_rundown_date
44
5- from .models import SchedulerRequestModel , SchedulerResponseModel
5+ from .models import SchedulerResponseModel
66from .utils import delete_events , get_event_at_time , get_events_in_range
77
8-
98async def scheduler (
10- request : SchedulerRequestModel ,
9+ id_channel : int ,
10+ date : str | None = None ,
11+ days : int = 7 ,
12+ delete : list [int ] | None = None ,
13+ events : list [EventData ] | None = None ,
1114 editable : bool = True ,
1215 user : nebula .User | None = None ,
1316) -> SchedulerResponseModel :
1417 """Modify and display channel schedule"""
15- start_time : float | None = None
16- end_time : float | None = None
1718
1819 username = user .name if user else None
20+ start_time : float | None = None
21+ end_time : float | None = None
22+ delete = delete or []
23+ events = events or []
1924
20- if not (channel := nebula .settings .get_playout_channel (request . id_channel )):
21- raise nebula .BadRequestException (f"No such channel { request . id_channel } " )
25+ if not (channel := nebula .settings .get_playout_channel (id_channel )):
26+ raise nebula .BadRequestException (f"No such channel { id_channel } " )
2227
23- if request . date :
24- start_time = parse_rundown_date (request . date , channel )
25- end_time = start_time + (request . days * 86400 )
28+ if date :
29+ start_time = parse_rundown_date (date , channel )
30+ end_time = start_time + (days * 86400 )
2631
2732 affected_events : list [int ] = []
2833 affected_bins : list [int ] = []
@@ -31,14 +36,14 @@ async def scheduler(
3136 # Delete events
3237 #
3338
34- if request . delete and editable :
35- deleted_event_ids = await delete_events (request . delete , user = user )
39+ if delete and editable :
40+ deleted_event_ids = await delete_events (delete , user = user )
3641 affected_events .extend (deleted_event_ids )
3742 #
3843 # Create / update events
3944 #
4045
41- for event_data in request . events :
46+ for event_data in events :
4247 if not editable :
4348 # weird syntax, but keeps indentation level low
4449 break
@@ -127,11 +132,16 @@ async def scheduler(
127132 # Return existing events
128133
129134 if (start_time is not None ) and (end_time is not None ):
130- events = await get_events_in_range (channel .id , start_time , end_time , user = user )
135+ c_events = await get_events_in_range (
136+ channel .id ,
137+ start_time ,
138+ end_time ,
139+ user = user ,
140+ )
131141 else :
132- events = []
142+ c_events = []
133143 return SchedulerResponseModel (
134- events = [e .meta for e in events ],
144+ events = [e .meta for e in c_events ],
135145 affected_events = affected_events ,
136146 affected_bins = affected_bins ,
137147 )
0 commit comments