24 lines
923 B
Python
24 lines
923 B
Python
from django.db.models.query import QuerySet, Q
|
|
|
|
from ..models.instructors import Instructor
|
|
from ..models.students import Student
|
|
from ..models.missions import MissionProfile
|
|
from ..models.aircrafts import Aircraft, AircraftTypes
|
|
|
|
from typing import List, Dict, Tuple
|
|
|
|
def assign_aircraft(queryset: QuerySet[Student] | QuerySet[MissionProfile] | QuerySet[Instructor], data: Dict[str, List[AircraftTypes]]) -> Tuple[int, List[str]]:
|
|
i: int = 0
|
|
ac_types: List[AircraftTypes] = data["aircrafts"]
|
|
ac_query: Q = Q() # Build an or query to select all aircrafts of the specified types
|
|
for a in ac_types:
|
|
ac_query |= Q(type=a)
|
|
aircrafts: QuerySet[Aircraft] = Aircraft.objects.filter(ac_query).all() # Execute query
|
|
for obj in queryset:
|
|
obj.aircrafts.clear()
|
|
for ac in aircrafts:
|
|
obj.aircrafts.add(ac)
|
|
obj.save()
|
|
i += 1
|
|
return i, [a for a in ac_types]
|