from django.db.models.query import QuerySet, Q 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], 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]