예제 #1
0
 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}
예제 #2
0
 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}
예제 #3
0
 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)