99from smartschedule .allocation .capabilityscheduling .allocatable_capability_id import (
1010 AllocatableCapabilityId ,
1111)
12+ from smartschedule .allocation .capabilityscheduling .allocatable_capability_summary import (
13+ AllocatableCapabilitySummary ,
14+ )
1215from smartschedule .allocation .capabilityscheduling .capability_finder import (
1316 CapabilityFinder ,
1417)
2831from smartschedule .availability .owner import Owner
2932from smartschedule .availability .resource_id import ResourceId
3033from smartschedule .shared .capability .capability import Capability
34+ from smartschedule .shared .capability_selector import CapabilitySelector
3135from smartschedule .shared .events_publisher import EventsPublisher
3236from smartschedule .shared .timeslot .time_slot import TimeSlot
3337
@@ -74,25 +78,26 @@ def allocate_to_project(
7478 self ,
7579 project_id : ProjectAllocationsId ,
7680 allocatable_capability_id : AllocatableCapabilityId ,
77- capability : Capability ,
81+ # capability: Capability, # NIE MA TEGO JUSH
7882 time_slot : TimeSlot ,
7983 ) -> UUID | None :
80- owner = Owner (project_id .id )
8184 # yes, one transaction crossing 2 modules.
82- if not self ._capability_finder .is_present (allocatable_capability_id ):
85+ capabilities = self ._capability_finder .find_by_id (allocatable_capability_id )
86+ capability = next (iter (capabilities .all ), None )
87+ if capability is None :
8388 return None
84- if (
89+
90+ if not (
8591 self ._availability_facade .block (
8692 allocatable_capability_id .to_availability_resource_id (),
8793 time_slot ,
88- owner ,
94+ Owner ( project_id . id ) ,
8995 )
90- is False
9196 ):
9297 return None
9398
9499 event = self ._allocate (
95- project_id , allocatable_capability_id , capability , time_slot
100+ project_id , allocatable_capability_id , capability . capabilities , time_slot
96101 )
97102 return event .allocated_capability_id if event is not None else None
98103
@@ -124,14 +129,16 @@ def allocate_capability_to_project_for_period(
124129 if not to_allocate :
125130 return False
126131
127- allocated_event = self ._allocate (project_id , to_allocate , capability , time_slot )
132+ allocated_event = self ._allocate (
133+ project_id , to_allocate .id , to_allocate .capabilities , time_slot
134+ )
128135 return allocated_event is not None
129136
130137 def _allocate (
131138 self ,
132139 project_id : ProjectAllocationsId ,
133140 allocatable_capability_id : AllocatableCapabilityId ,
134- capability : Capability ,
141+ capability : CapabilitySelector ,
135142 time_slot : TimeSlot ,
136143 ) -> CapabilitiesAllocated | None :
137144 allocations = self ._project_allocations_repository .get (project_id )
@@ -144,9 +151,9 @@ def _allocate(
144151
145152 def _find_chosen_allocatable_capability (
146153 self , proposed_capabilities : AllocatableCapabilitiesSummary , chosen : ResourceId
147- ) -> AllocatableCapabilityId | None :
154+ ) -> AllocatableCapabilitySummary | None :
148155 matching = [
149- ac . id
156+ ac
150157 for ac in proposed_capabilities .all
151158 if ac .id .to_availability_resource_id () == chosen
152159 ]
0 commit comments