|
1 |
| -from flask import g, request |
2 |
| -from flask_restful import Resource |
| 1 | +from flask import Blueprint, g, jsonify, request |
3 | 2 |
|
4 | 3 | from .. import dao
|
5 | 4 | from .. import db as dbm
|
6 | 5 | from ..ext import db
|
7 | 6 |
|
| 7 | +flights_bp = Blueprint("flights", __name__) |
8 | 8 |
|
9 |
| -class FlightCollectionResource(Resource): |
10 |
| - def post(self): |
11 |
| - data = request.get_json() |
12 | 9 |
|
13 |
| - req = dao.CreateFlightRequest(**data) |
| 10 | +@flights_bp.route("/flights", methods=["POST"]) |
| 11 | +def create_flight(): |
| 12 | + data = request.get_json() |
| 13 | + req = dao.CreateFlightRequest(**data) |
14 | 14 |
|
15 |
| - flight = dbm.Flight( |
16 |
| - tenant_id=g.tenant.id, |
17 |
| - departure_icao=req.flight.departure_icao, |
18 |
| - arrival_icao=req.flight.arrival_icao, |
19 |
| - aircraft_id=req.flight.aircraft_id, |
20 |
| - ) |
| 15 | + flight = dbm.Flight( |
| 16 | + tenant_id=g.tenant.id, |
| 17 | + departure_icao=req.flight.departure_icao, |
| 18 | + arrival_icao=req.flight.arrival_icao, |
| 19 | + aircraft_id=req.flight.aircraft_id, |
| 20 | + ) |
21 | 21 |
|
22 |
| - db.session.add(flight) |
23 |
| - db.session.commit() |
| 22 | + db.session.add(flight) |
| 23 | + db.session.commit() |
24 | 24 |
|
25 |
| - res = dao.CreateFlightResponse( |
26 |
| - **{ |
27 |
| - "flight": { |
28 |
| - "id": flight.id, |
29 |
| - "departure_icao": flight.departure_icao, |
30 |
| - "arrival_icao": flight.arrival_icao, |
31 |
| - "aircraft_id": flight.aircraft_id, |
32 |
| - } |
| 25 | + res = dao.CreateFlightResponse( |
| 26 | + **{ |
| 27 | + "flight": { |
| 28 | + "id": flight.id, |
| 29 | + "departure_icao": flight.departure_icao, |
| 30 | + "arrival_icao": flight.arrival_icao, |
| 31 | + "aircraft_id": flight.aircraft_id, |
33 | 32 | }
|
34 |
| - ) |
| 33 | + } |
| 34 | + ) |
35 | 35 |
|
36 |
| - return res.model_dump(), 201 |
| 36 | + return jsonify(res.model_dump()), 201 |
37 | 37 |
|
38 | 38 |
|
39 |
| -class FlightResource(Resource): |
40 |
| - def get(self, flight_id): |
41 |
| - flight = db.session.get(dbm.Flight, flight_id) |
| 39 | +@flights_bp.route("/flights/<int:flight_id>", methods=["GET"]) |
| 40 | +def get_flight(flight_id): |
| 41 | + flight = db.session.get(dbm.Flight, flight_id) |
42 | 42 |
|
43 |
| - if not flight: |
44 |
| - return dao.Error(message="Flight not found").model_dump(), 404 |
| 43 | + if not flight: |
| 44 | + return jsonify(dao.Error(message="Flight not found").model_dump()), 404 |
45 | 45 |
|
46 |
| - res = dao.GetFlightResponse( |
47 |
| - **{ |
48 |
| - "flight": { |
49 |
| - "id": flight.id, |
50 |
| - "departure_icao": flight.departure_icao, |
51 |
| - "arrival_icao": flight.arrival_icao, |
52 |
| - "aircraft_id": flight.aircraft_id, |
53 |
| - } |
| 46 | + res = dao.GetFlightResponse( |
| 47 | + **{ |
| 48 | + "flight": { |
| 49 | + "id": flight.id, |
| 50 | + "departure_icao": flight.departure_icao, |
| 51 | + "arrival_icao": flight.arrival_icao, |
| 52 | + "aircraft_id": flight.aircraft_id, |
54 | 53 | }
|
55 |
| - ) |
| 54 | + } |
| 55 | + ) |
56 | 56 |
|
57 |
| - return res.model_dump() |
| 57 | + return jsonify(res.model_dump()) |
58 | 58 |
|
59 |
| - def put(self, flight_id): |
60 |
| - flight = db.session.get(dbm.Flight, flight_id) |
61 | 59 |
|
62 |
| - if not flight: |
63 |
| - return dao.Error(message="Flight not found").model_dump(), 404 |
| 60 | +@flights_bp.route("/flights/<int:flight_id>", methods=["PUT"]) |
| 61 | +def update_flight(flight_id): |
| 62 | + flight = db.session.get(dbm.Flight, flight_id) |
64 | 63 |
|
65 |
| - data = request.get_json() |
| 64 | + if not flight: |
| 65 | + return jsonify(dao.Error(message="Flight not found").model_dump()), 404 |
66 | 66 |
|
67 |
| - req = dao.UpdateFlightRequest(**data) |
| 67 | + data = request.get_json() |
| 68 | + req = dao.UpdateFlightRequest(**data) |
68 | 69 |
|
69 |
| - if req.flight.id is not dao.empty: |
70 |
| - flight.id = req.flight.id |
71 |
| - if req.flight.departure_icao is not dao.empty: |
72 |
| - flight.departure_icao = req.flight.departure_icao |
73 |
| - if req.flight.arrival_icao is not dao.empty: |
74 |
| - flight.arrival_icao = req.flight.arrival_icao |
75 |
| - if req.flight.aircraft_id is not dao.empty: |
76 |
| - flight.aircraft_id = req.flight.aircraft_id |
| 70 | + if req.flight.departure_icao is not dao.empty: |
| 71 | + flight.departure_icao = req.flight.departure_icao |
| 72 | + if req.flight.arrival_icao is not dao.empty: |
| 73 | + flight.arrival_icao = req.flight.arrival_icao |
| 74 | + if req.flight.aircraft_id is not dao.empty: |
| 75 | + flight.aircraft_id = req.flight.aircraft_id |
77 | 76 |
|
78 |
| - db.session.commit() |
| 77 | + db.session.commit() |
79 | 78 |
|
80 |
| - res = dao.UpdateFlightResponse( |
81 |
| - **{ |
82 |
| - "flight": { |
83 |
| - "id": flight.id, |
84 |
| - "departure_icao": flight.departure_icao, |
85 |
| - "arrival_icao": flight.arrival_icao, |
86 |
| - "aircraft_id": flight.aircraft_id, |
87 |
| - } |
| 79 | + res = dao.UpdateFlightResponse( |
| 80 | + **{ |
| 81 | + "flight": { |
| 82 | + "id": flight.id, |
| 83 | + "departure_icao": flight.departure_icao, |
| 84 | + "arrival_icao": flight.arrival_icao, |
| 85 | + "aircraft_id": flight.aircraft_id, |
88 | 86 | }
|
89 |
| - ) |
| 87 | + } |
| 88 | + ) |
90 | 89 |
|
91 |
| - return res.model_dump() |
| 90 | + return jsonify(res.model_dump()) |
92 | 91 |
|
93 |
| - def delete(self, flight_id): |
94 |
| - flight = db.session.get(dbm.Flight, flight_id) |
95 | 92 |
|
96 |
| - if not flight: |
97 |
| - return dao.Error(message="Flight not found").model_dump(), 404 |
| 93 | +@flights_bp.route("/flights/<int:flight_id>", methods=["DELETE"]) |
| 94 | +def delete_flight(flight_id): |
| 95 | + flight = db.session.get(dbm.Flight, flight_id) |
98 | 96 |
|
99 |
| - db.session.delete(flight) |
100 |
| - db.session.commit() |
| 97 | + if not flight: |
| 98 | + return jsonify(dao.Error(message="Flight not found").model_dump()), 404 |
101 | 99 |
|
102 |
| - return "", 204 |
| 100 | + db.session.delete(flight) |
| 101 | + db.session.commit() |
| 102 | + |
| 103 | + return "", 204 |
0 commit comments