def edit(flight_data: FlightData) -> (int, dict): flight = Flight.objects.filter(pk=flight_data.id).first() if flight_data.title: flight.title = flight_data.title if flight_data.description: flight.description = flight_data.description if flight_data.coordinates: coordinates = flight_data.coordinates['features'][0]['geometry'][ 'coordinates'] if coordinates[0][0] != coordinates[-1][0] or coordinates[0][ 1] != coordinates[-1][1]: coordinates += [coordinates[0]] area = [] for coordinate in coordinates: area += [[coordinate[0], set_lat_range(coordinate[1])]] area = Polygon(area) flight.area = area if flight_data.starts_at: flight.starts_at = flight_data.starts_at if flight_data.ends_at: flight.ends_at = flight_data.ends_at if flight_data.type: flight.type = flight_data.type flight.save() return 200, {'message': flight.id}
def edit(flight_data: FlightData, user, domain) -> (int, dict): flight = Flight.objects.filter(pk=flight_data.id).first() if flight_data.title: flight.title = flight_data.title if flight_data.description: flight.description = flight_data.description if flight_data.coordinates: coordinates = flight_data.coordinates['features'][0]['geometry']['coordinates'] if coordinates[0][0] != coordinates[-1][0] or coordinates[0][1] != coordinates[-1][1]: coordinates += [coordinates[0]] area = [] for coordinate in coordinates: area += [[coordinate[0], set_lat_range(coordinate[1])]] area = Polygon(area) flight.area = area if flight_data.starts_at: flight.starts_at = flight_data.starts_at if flight_data.ends_at: flight.ends_at = flight_data.ends_at if flight_data.type: flight.type = flight_data.type flight.save() departments = Department.objects.filter(area__intersects=flight.area).all() for department in departments: for airboss in department.airbosses.all(): notify.send(user, recipient=airboss, verb='edited a flight', action_object=flight) if not DEBUG: new_flight_registered_email.delay(airboss.username, airboss.email, airboss.id, domain) for watch_commanders in department.watchCommanders.all(): notify.send(user, recipient=watch_commanders, verb='edited a flight', action_object=flight) if not DEBUG: new_flight_registered_email.delay(watch_commanders.username, watch_commanders.email, watch_commanders.id, domain) return 200, {'message': flight.id}
def data_to_db(mission_data: FlightData, user: User, clearance: Clearance): area = [] for coordinate in mission_data.coordinates: area += [[coordinate[0], set_lat_range(coordinate[1])]] area = Polygon(area) return Flight(id=mission_data.id, title=mission_data.title, type=mission_data.type, description=mission_data.description, starts_at=mission_data.starts_at, ends_at=mission_data.ends_at, area=area, created_by=user, clearance=clearance)