From 91a969ef324e673d620a02d1703c7a22eb762c86 Mon Sep 17 00:00:00 2001 From: Yulei-cn <116038178+Yulei-cn@users.noreply.github.com> Date: Wed, 19 Jun 2024 15:11:40 +0200 Subject: [PATCH] update --- Django_api/README.MD | 335 +++++++++---------- Django_api/README.md | 335 +++++++++---------- Django_api/airline/api_common/serializers.py | 28 ++ Django_api/airline/api_common/urls.py | 33 +- Django_api/airline/api_common/views.py | 126 +++++++ 5 files changed, 494 insertions(+), 363 deletions(-) diff --git a/Django_api/README.MD b/Django_api/README.MD index b33e78a..8f6c02d 100644 --- a/Django_api/README.MD +++ b/Django_api/README.MD @@ -1,180 +1,155 @@ -# Airline Reservation System API - -This project is a microservices-based airline reservation system. The system allows clients to view flights, make reservations, and manage their bookings. Staff members can manage flights, airports, planes, and view all bookings. The project is structured into three main services: `api_client`, `api_staff`, and `api_common`. - -## API Overview - -### API Client - -The `api_client` service handles all client-side operations, including user registration, login, viewing flights, and managing user-specific bookings. - -#### Endpoints - -- **Register**: `/api/client/register/` - - Method: POST - - Description: Registers a new user. - -- **Login**: `/api/client/login/` - - Method: POST - - Description: Authenticates a user and returns JWT tokens. - -- **User List**: `/api/client/users/` - - Method: GET - - Description: Retrieves a list of all users. (Admin only) - -- **Update User**: `/api/client/update-user//` - - Method: PUT - - Description: Updates user details. - -- **Delete User**: `/api/client/delete-user//` - - Method: DELETE - - Description: Deletes a user. - -- **Flight List**: `/api/client/flights/` - - Method: GET - - Description: Retrieves a list of all available flights. - -- **User Booking List**: `/api/client/bookings/` - - Method: GET - - Description: Retrieves a list of all bookings made by the authenticated user. - -- **User Booking Detail**: `/api/client/bookings//` - - Method: GET, PUT, DELETE - - Description: Retrieves, updates, or deletes a specific booking made by the authenticated user. - -### API Staff - -The `api_staff` service handles all staff-side operations, including managing flights, airports, planes, and viewing all bookings. - -#### Endpoints - -- **Add Flight**: `/api/staff/add-flight/` - - Method: POST - - Description: Adds a new flight. - -- **Delete Flight**: `/api/staff/delete-flight//` - - Method: DELETE - - Description: Deletes a flight. - -- **Update Flight**: `/api/staff/update-flight//` - - Method: PUT - - Description: Updates a flight's details. - -- **Flight List**: `/api/staff/flights/` - - Method: GET - - Description: Retrieves a list of all flights. - -- **Staff Login**: `/api/staff/login/` - - Method: POST - - Description: Authenticates a staff member and returns JWT tokens. - -- **Airport List**: `/api/staff/airports/` - - Method: GET - - Description: Retrieves a list of all airports. - -- **Airport Detail**: `/api/staff/airports//` - - Method: GET, PUT, DELETE - - Description: Retrieves, updates, or deletes a specific airport's details. - -- **Plane List**: `/api/staff/planes/` - - Method: GET - - Description: Retrieves a list of all planes. - -- **Plane Detail**: `/api/staff/planes//` - - Method: GET, PUT, DELETE - - Description: Retrieves, updates, or deletes a specific plane's details. - -- **Booking List**: `/api/staff/bookings/` - - Method: GET - - Description: Retrieves a list of all bookings. - - -# 航班预订系统 API - -本项目是一个基于微服务的航班预订系统。系统允许客户查看航班、进行预订和管理他们的预订。工作人员可以管理航班、机场、飞机,并查看所有的预订记录。项目主要分为三个服务:`api_client`、`api_staff`和`api_common`。 - -## API 概述 - -### API 客户端 - -`api_client`服务处理所有客户端操作,包括用户注册、登录、查看航班和管理用户特定的预订。 - -#### 端点 - -- **注册**: `/api/client/register/` - - 方法: POST - - 描述: 注册新用户。 - -- **登录**: `/api/client/login/` - - 方法: POST - - 描述: 认证用户并返回JWT令牌。 - -- **用户列表**: `/api/client/users/` - - 方法: GET - - 描述: 获取所有用户的列表。(仅管理员) - -- **更新用户**: `/api/client/update-user//` - - 方法: PUT - - 描述: 更新用户详细信息。 - -- **删除用户**: `/api/client/delete-user//` - - 方法: DELETE - - 描述: 删除用户。 - -- **航班列表**: `/api/client/flights/` - - 方法: GET - - 描述: 获取所有可用航班的列表。 - -- **用户预订列表**: `/api/client/bookings/` - - 方法: GET - - 描述: 获取当前认证用户的所有预订列表。 - -- **用户预订详情**: `/api/client/bookings//` - - 方法: GET, PUT, DELETE - - 描述: 获取、更新或删除当前认证用户的特定预订。 - -### API 工作人员 - -`api_staff`服务处理所有工作人员操作,包括管理航班、机场、飞机和查看所有预订记录。 - -#### 端点 - -- **添加航班**: `/api/staff/add-flight/` - - 方法: POST - - 描述: 添加新航班。 - -- **删除航班**: `/api/staff/delete-flight//` - - 方法: DELETE - - 描述: 删除航班。 - -- **更新航班**: `/api/staff/update-flight//` - - 方法: PUT - - 描述: 更新航班详细信息。 - -- **航班列表**: `/api/staff/flights/` - - 方法: GET - - 描述: 获取所有航班的列表。 - -- **登录**: `/api/staff/login/` - - 方法: POST - - 描述: 认证工作人员并返回JWT令牌。 - -- **机场列表**: `/api/staff/airports/` - - 方法: GET - - 描述: 获取所有机场的列表。 - -- **机场详情**: `/api/staff/airports//` - - 方法: GET, PUT, DELETE - - 描述: 获取、更新或删除特定机场的详细信息。 - -- **飞机列表**: `/api/staff/planes/` - - 方法: GET - - 描述: 获取所有飞机的列表。 - -- **飞机详情**: `/api/staff/planes//` - - 方法: GET, PUT, DELETE - - 描述: 获取、更新或删除特定飞机的详细信息。 - -- **预订列表**: `/api/staff/bookings/` - - 方法: GET - - 描述: 获取所有预订的列表。 +API 端点设计 +用户管理 +注册 +端点: /api/register/ +方法: POST +描述: 注册新用户。 +请求参数: +username: string +password: string +email: string +登录 +端点: /api/login/ +方法: POST +描述: 认证用户并返回JWT令牌。 +请求参数: +username: string +password: string +获取用户列表(仅管理员) +端点: /api/users/ +方法: GET +描述: 获取所有用户的列表。 +更新用户 +端点: /api/users// +方法: PUT +描述: 更新用户详细信息。 +请求参数: +email: string +is_staff: boolean +is_superuser: boolean +删除用户 +端点: /api/users// +方法: DELETE +描述: 删除用户。 +航班管理 +获取所有航班 +端点: /api/flights/ +方法: GET +描述: 获取所有可用航班的列表。 +添加新航班(仅工作人员) +端点: /api/flights/ +方法: POST +描述: 添加新航班。 +请求参数: +flight_number: string +departure: datetime +arrival: datetime +plane: int (plane ID) +track_origin: int (track ID) +track_destination: int (track ID) +更新航班信息(仅工作人员) +端点: /api/flights// +方法: PUT +描述: 更新航班详细信息。 +请求参数: +flight_number: string +departure: datetime +arrival: datetime +plane: int (plane ID) +track_origin: int (track ID) +track_destination: int (track ID) +删除航班(仅工作人员) +端点: /api/flights// +方法: DELETE +描述: 删除航班。 +预订管理 +获取用户预订列表 +端点: /api/bookings/ +方法: GET +描述: 获取当前认证用户的所有预订列表。 +获取预订详情 +端点: /api/bookings// +方法: GET +描述: 获取特定预订的详细信息。 +创建预订 +端点: /api/bookings/ +方法: POST +描述: 创建新预订。 +请求参数: +price: float +booking_type: int (booking type ID) +client: int (client ID) +flight: int (flight ID) +更新预订 +端点: /api/bookings// +方法: PUT +描述: 更新预订详细信息。 +请求参数: +price: float +booking_type: int (booking type ID) +flight: int (flight ID) +删除预订 +端点: /api/bookings// +方法: DELETE +描述: 删除预订。 +机场管理(仅工作人员) +获取所有机场 +端点: /api/airports/ +方法: GET +描述: 获取所有机场的列表。 +获取机场详情 +端点: /api/airports// +方法: GET +描述: 获取特定机场的详细信息。 +添加机场 +端点: /api/airports/ +方法: POST +描述: 添加新机场。 +请求参数: +name: string +location: string +更新机场信息 +端点: /api/airports// +方法: PUT +描述: 更新机场详细信息。 +请求参数: +name: string +location: string +删除机场 +端点: /api/airports// +方法: DELETE +描述: 删除机场。 +飞机管理(仅工作人员) +获取所有飞机 +端点: /api/planes/ +方法: GET +描述: 获取所有飞机的列表。 +获取飞机详情 +端点: /api/planes// +方法: GET +描述: 获取特定飞机的详细信息。 +添加飞机 +端点: /api/planes/ +方法: POST +描述: 添加新飞机。 +请求参数: +model: string +second_class_capacity: int +first_class_capacity: int +更新飞机信息 +端点: /api/planes// +方法: PUT +描述: 更新飞机详细信息。 +请求参数: +model: string +second_class_capacity: int +first_class_capacity: int +删除飞机 +端点: /api/planes// +方法: DELETE +描述: 删除飞机。 +所有预订记录(仅工作人员) +获取所有预订记录 +端点: /api/all-bookings/ +方法: GET +描述: 获取所有预订记录的列表。 \ No newline at end of file diff --git a/Django_api/README.md b/Django_api/README.md index b33e78a..8f6c02d 100644 --- a/Django_api/README.md +++ b/Django_api/README.md @@ -1,180 +1,155 @@ -# Airline Reservation System API - -This project is a microservices-based airline reservation system. The system allows clients to view flights, make reservations, and manage their bookings. Staff members can manage flights, airports, planes, and view all bookings. The project is structured into three main services: `api_client`, `api_staff`, and `api_common`. - -## API Overview - -### API Client - -The `api_client` service handles all client-side operations, including user registration, login, viewing flights, and managing user-specific bookings. - -#### Endpoints - -- **Register**: `/api/client/register/` - - Method: POST - - Description: Registers a new user. - -- **Login**: `/api/client/login/` - - Method: POST - - Description: Authenticates a user and returns JWT tokens. - -- **User List**: `/api/client/users/` - - Method: GET - - Description: Retrieves a list of all users. (Admin only) - -- **Update User**: `/api/client/update-user//` - - Method: PUT - - Description: Updates user details. - -- **Delete User**: `/api/client/delete-user//` - - Method: DELETE - - Description: Deletes a user. - -- **Flight List**: `/api/client/flights/` - - Method: GET - - Description: Retrieves a list of all available flights. - -- **User Booking List**: `/api/client/bookings/` - - Method: GET - - Description: Retrieves a list of all bookings made by the authenticated user. - -- **User Booking Detail**: `/api/client/bookings//` - - Method: GET, PUT, DELETE - - Description: Retrieves, updates, or deletes a specific booking made by the authenticated user. - -### API Staff - -The `api_staff` service handles all staff-side operations, including managing flights, airports, planes, and viewing all bookings. - -#### Endpoints - -- **Add Flight**: `/api/staff/add-flight/` - - Method: POST - - Description: Adds a new flight. - -- **Delete Flight**: `/api/staff/delete-flight//` - - Method: DELETE - - Description: Deletes a flight. - -- **Update Flight**: `/api/staff/update-flight//` - - Method: PUT - - Description: Updates a flight's details. - -- **Flight List**: `/api/staff/flights/` - - Method: GET - - Description: Retrieves a list of all flights. - -- **Staff Login**: `/api/staff/login/` - - Method: POST - - Description: Authenticates a staff member and returns JWT tokens. - -- **Airport List**: `/api/staff/airports/` - - Method: GET - - Description: Retrieves a list of all airports. - -- **Airport Detail**: `/api/staff/airports//` - - Method: GET, PUT, DELETE - - Description: Retrieves, updates, or deletes a specific airport's details. - -- **Plane List**: `/api/staff/planes/` - - Method: GET - - Description: Retrieves a list of all planes. - -- **Plane Detail**: `/api/staff/planes//` - - Method: GET, PUT, DELETE - - Description: Retrieves, updates, or deletes a specific plane's details. - -- **Booking List**: `/api/staff/bookings/` - - Method: GET - - Description: Retrieves a list of all bookings. - - -# 航班预订系统 API - -本项目是一个基于微服务的航班预订系统。系统允许客户查看航班、进行预订和管理他们的预订。工作人员可以管理航班、机场、飞机,并查看所有的预订记录。项目主要分为三个服务:`api_client`、`api_staff`和`api_common`。 - -## API 概述 - -### API 客户端 - -`api_client`服务处理所有客户端操作,包括用户注册、登录、查看航班和管理用户特定的预订。 - -#### 端点 - -- **注册**: `/api/client/register/` - - 方法: POST - - 描述: 注册新用户。 - -- **登录**: `/api/client/login/` - - 方法: POST - - 描述: 认证用户并返回JWT令牌。 - -- **用户列表**: `/api/client/users/` - - 方法: GET - - 描述: 获取所有用户的列表。(仅管理员) - -- **更新用户**: `/api/client/update-user//` - - 方法: PUT - - 描述: 更新用户详细信息。 - -- **删除用户**: `/api/client/delete-user//` - - 方法: DELETE - - 描述: 删除用户。 - -- **航班列表**: `/api/client/flights/` - - 方法: GET - - 描述: 获取所有可用航班的列表。 - -- **用户预订列表**: `/api/client/bookings/` - - 方法: GET - - 描述: 获取当前认证用户的所有预订列表。 - -- **用户预订详情**: `/api/client/bookings//` - - 方法: GET, PUT, DELETE - - 描述: 获取、更新或删除当前认证用户的特定预订。 - -### API 工作人员 - -`api_staff`服务处理所有工作人员操作,包括管理航班、机场、飞机和查看所有预订记录。 - -#### 端点 - -- **添加航班**: `/api/staff/add-flight/` - - 方法: POST - - 描述: 添加新航班。 - -- **删除航班**: `/api/staff/delete-flight//` - - 方法: DELETE - - 描述: 删除航班。 - -- **更新航班**: `/api/staff/update-flight//` - - 方法: PUT - - 描述: 更新航班详细信息。 - -- **航班列表**: `/api/staff/flights/` - - 方法: GET - - 描述: 获取所有航班的列表。 - -- **登录**: `/api/staff/login/` - - 方法: POST - - 描述: 认证工作人员并返回JWT令牌。 - -- **机场列表**: `/api/staff/airports/` - - 方法: GET - - 描述: 获取所有机场的列表。 - -- **机场详情**: `/api/staff/airports//` - - 方法: GET, PUT, DELETE - - 描述: 获取、更新或删除特定机场的详细信息。 - -- **飞机列表**: `/api/staff/planes/` - - 方法: GET - - 描述: 获取所有飞机的列表。 - -- **飞机详情**: `/api/staff/planes//` - - 方法: GET, PUT, DELETE - - 描述: 获取、更新或删除特定飞机的详细信息。 - -- **预订列表**: `/api/staff/bookings/` - - 方法: GET - - 描述: 获取所有预订的列表。 +API 端点设计 +用户管理 +注册 +端点: /api/register/ +方法: POST +描述: 注册新用户。 +请求参数: +username: string +password: string +email: string +登录 +端点: /api/login/ +方法: POST +描述: 认证用户并返回JWT令牌。 +请求参数: +username: string +password: string +获取用户列表(仅管理员) +端点: /api/users/ +方法: GET +描述: 获取所有用户的列表。 +更新用户 +端点: /api/users// +方法: PUT +描述: 更新用户详细信息。 +请求参数: +email: string +is_staff: boolean +is_superuser: boolean +删除用户 +端点: /api/users// +方法: DELETE +描述: 删除用户。 +航班管理 +获取所有航班 +端点: /api/flights/ +方法: GET +描述: 获取所有可用航班的列表。 +添加新航班(仅工作人员) +端点: /api/flights/ +方法: POST +描述: 添加新航班。 +请求参数: +flight_number: string +departure: datetime +arrival: datetime +plane: int (plane ID) +track_origin: int (track ID) +track_destination: int (track ID) +更新航班信息(仅工作人员) +端点: /api/flights// +方法: PUT +描述: 更新航班详细信息。 +请求参数: +flight_number: string +departure: datetime +arrival: datetime +plane: int (plane ID) +track_origin: int (track ID) +track_destination: int (track ID) +删除航班(仅工作人员) +端点: /api/flights// +方法: DELETE +描述: 删除航班。 +预订管理 +获取用户预订列表 +端点: /api/bookings/ +方法: GET +描述: 获取当前认证用户的所有预订列表。 +获取预订详情 +端点: /api/bookings// +方法: GET +描述: 获取特定预订的详细信息。 +创建预订 +端点: /api/bookings/ +方法: POST +描述: 创建新预订。 +请求参数: +price: float +booking_type: int (booking type ID) +client: int (client ID) +flight: int (flight ID) +更新预订 +端点: /api/bookings// +方法: PUT +描述: 更新预订详细信息。 +请求参数: +price: float +booking_type: int (booking type ID) +flight: int (flight ID) +删除预订 +端点: /api/bookings// +方法: DELETE +描述: 删除预订。 +机场管理(仅工作人员) +获取所有机场 +端点: /api/airports/ +方法: GET +描述: 获取所有机场的列表。 +获取机场详情 +端点: /api/airports// +方法: GET +描述: 获取特定机场的详细信息。 +添加机场 +端点: /api/airports/ +方法: POST +描述: 添加新机场。 +请求参数: +name: string +location: string +更新机场信息 +端点: /api/airports// +方法: PUT +描述: 更新机场详细信息。 +请求参数: +name: string +location: string +删除机场 +端点: /api/airports// +方法: DELETE +描述: 删除机场。 +飞机管理(仅工作人员) +获取所有飞机 +端点: /api/planes/ +方法: GET +描述: 获取所有飞机的列表。 +获取飞机详情 +端点: /api/planes// +方法: GET +描述: 获取特定飞机的详细信息。 +添加飞机 +端点: /api/planes/ +方法: POST +描述: 添加新飞机。 +请求参数: +model: string +second_class_capacity: int +first_class_capacity: int +更新飞机信息 +端点: /api/planes// +方法: PUT +描述: 更新飞机详细信息。 +请求参数: +model: string +second_class_capacity: int +first_class_capacity: int +删除飞机 +端点: /api/planes// +方法: DELETE +描述: 删除飞机。 +所有预订记录(仅工作人员) +获取所有预订记录 +端点: /api/all-bookings/ +方法: GET +描述: 获取所有预订记录的列表。 \ No newline at end of file diff --git a/Django_api/airline/api_common/serializers.py b/Django_api/airline/api_common/serializers.py index 53de463..edaf04a 100644 --- a/Django_api/airline/api_common/serializers.py +++ b/Django_api/airline/api_common/serializers.py @@ -1 +1,29 @@ #api_common/serializers.py +from rest_framework import serializers +from django.contrib.auth.models import User +from .models import Client, Staff, Flight, Booking, Airport, Plane + +class UserSerializer(serializers.ModelSerializer): + class Meta: + model = User + fields = ['id', 'username', 'email', 'is_staff', 'is_superuser'] + +class FlightSerializer(serializers.ModelSerializer): + class Meta: + model = Flight + fields = '__all__' + +class BookingSerializer(serializers.ModelSerializer): + class Meta: + model = Booking + fields = '__all__' + +class AirportSerializer(serializers.ModelSerializer): + class Meta: + model = Airport + fields = '__all__' + +class PlaneSerializer(serializers.ModelSerializer): + class Meta: + model = Plane + fields = '__all__' diff --git a/Django_api/airline/api_common/urls.py b/Django_api/airline/api_common/urls.py index 31705c1..1b63609 100644 --- a/Django_api/airline/api_common/urls.py +++ b/Django_api/airline/api_common/urls.py @@ -1,7 +1,34 @@ #api_common/urls.py from django.urls import path -from . import views +from .views import ( + RegisterView, LoginView, UserListView, UserDetailView, FlightListView, + FlightDetailView, BookingListView, BookingDetailView, AirportListView, + AirportDetailView, PlaneListView, PlaneDetailView, AllBookingsListView, + AddFlightView, UpdateFlightView, DeleteFlightView, AddAirportView, + UpdateAirportView, DeleteAirportView, AddPlaneView, UpdatePlaneView, DeletePlaneView +) urlpatterns = [ - -] \ No newline at end of file + path('register/', RegisterView.as_view(), name='register'), + path('login/', LoginView.as_view(), name='login'), + path('users/', UserListView.as_view(), name='user-list'), + path('users//', UserDetailView.as_view(), name='user-detail'), + path('flights/', FlightListView.as_view(), name='flight-list'), + path('flights//', FlightDetailView.as_view(), name='flight-detail'), + path('bookings/', BookingListView.as_view(), name='booking-list'), + path('bookings//', BookingDetailView.as_view(), name='booking-detail'), + path('airports/', AirportListView.as_view(), name='airport-list'), + path('airports//', AirportDetailView.as_view(), name='airport-detail'), + path('planes/', PlaneListView.as_view(), name='plane-list'), + path('planes//', PlaneDetailView.as_view(), name='plane-detail'), + path('all-bookings/', AllBookingsListView.as_view(), name='all-bookings-list'), + path('flights/add/', AddFlightView.as_view(), name='add-flight'), + path('flights/update//', UpdateFlightView.as_view(), name='update-flight'), + path('flights/delete//', DeleteFlightView.as_view(), name='delete-flight'), + path('airports/add/', AddAirportView.as_view(), name='add-airport'), + path('airports/update//', UpdateAirportView.as_view(), name='update-airport'), + path('airports/delete//', DeleteAirportView.as_view(), name='delete-airport'), + path('planes/add/', AddPlaneView.as_view(), name='add-plane'), + path('planes/update//', UpdatePlaneView.as_view(), name='update-plane'), + path('planes/delete//', DeletePlaneView.as_view(), name='delete-plane'), +] diff --git a/Django_api/airline/api_common/views.py b/Django_api/airline/api_common/views.py index 5360f74..ee80c5b 100644 --- a/Django_api/airline/api_common/views.py +++ b/Django_api/airline/api_common/views.py @@ -1 +1,127 @@ #api_common/views.py +from rest_framework import generics, status +from rest_framework.response import Response +from rest_framework.views import APIView +from rest_framework.permissions import IsAuthenticated, IsAdminUser +from django.contrib.auth.models import User +from .models import Flight, Booking, Airport, Plane +from .serializers import UserSerializer, FlightSerializer, BookingSerializer, AirportSerializer, PlaneSerializer + +class RegisterView(generics.CreateAPIView): + queryset = User.objects.all() + serializer_class = UserSerializer + +class LoginView(APIView): + def post(self, request): + # Implement your authentication logic here + return Response({"message": "Login successful"}, status=status.HTTP_200_OK) + +class UserListView(generics.ListAPIView): + queryset = User.objects.all() + serializer_class = UserSerializer + permission_classes = [IsAdminUser] + +class UserDetailView(generics.RetrieveUpdateDestroyAPIView): + queryset = User.objects.all() + serializer_class = UserSerializer + permission_classes = [IsAdminUser] + +class FlightListView(generics.ListCreateAPIView): + queryset = Flight.objects.all() + serializer_class = FlightSerializer + permission_classes = [IsAuthenticated] + +class FlightDetailView(generics.RetrieveUpdateDestroyAPIView): + queryset = Flight.objects.all() + serializer_class = FlightSerializer + permission_classes = [IsAuthenticated] + +class BookingListView(generics.ListCreateAPIView): + queryset = Booking.objects.all() + serializer_class = BookingSerializer + permission_classes = [IsAuthenticated] + + def get_queryset(self): + user = self.request.user + return Booking.objects.filter(client__user=user) + +class BookingDetailView(generics.RetrieveUpdateDestroyAPIView): + queryset = Booking.objects.all() + serializer_class = BookingSerializer + permission_classes = [IsAuthenticated] + + def get_queryset(self): + if getattr(self, 'swagger_fake_view', False): + return Booking.objects.none() + user = self.request.user + return Booking.objects.filter(client__user=user, pk=self.kwargs.get('pk')) + +class AirportListView(generics.ListCreateAPIView): + queryset = Airport.objects.all() + serializer_class = AirportSerializer + permission_classes = [IsAdminUser] + +class AirportDetailView(generics.RetrieveUpdateDestroyAPIView): + queryset = Airport.objects.all() + serializer_class = AirportSerializer + permission_classes = [IsAdminUser] + +class PlaneListView(generics.ListCreateAPIView): + queryset = Plane.objects.all() + serializer_class = PlaneSerializer + permission_classes = [IsAdminUser] + +class PlaneDetailView(generics.RetrieveUpdateDestroyAPIView): + queryset = Plane.objects.all() + serializer_class = PlaneSerializer + permission_classes = [IsAdminUser] + +class AllBookingsListView(generics.ListAPIView): + queryset = Booking.objects.all() + serializer_class = BookingSerializer + permission_classes = [IsAdminUser] + +class AddFlightView(generics.CreateAPIView): + queryset = Flight.objects.all() + serializer_class = FlightSerializer + permission_classes = [IsAdminUser] + +class UpdateFlightView(generics.UpdateAPIView): + queryset = Flight.objects.all() + serializer_class = FlightSerializer + permission_classes = [IsAdminUser] + +class DeleteFlightView(generics.DestroyAPIView): + queryset = Flight.objects.all() + serializer_class = FlightSerializer + permission_classes = [IsAdminUser] + +class AddAirportView(generics.CreateAPIView): + queryset = Airport.objects.all() + serializer_class = AirportSerializer + permission_classes = [IsAdminUser] + +class UpdateAirportView(generics.UpdateAPIView): + queryset = Airport.objects.all() + serializer_class = AirportSerializer + permission_classes = [IsAdminUser] + +class DeleteAirportView(generics.DestroyAPIView): + queryset = Airport.objects.all() + serializer_class = AirportSerializer + permission_classes = [IsAdminUser] + +class AddPlaneView(generics.CreateAPIView): + queryset = Plane.objects.all() + serializer_class = PlaneSerializer + permission_classes = [IsAdminUser] + +class UpdatePlaneView(generics.UpdateAPIView): + queryset = Plane.objects.all() + serializer_class = PlaneSerializer + permission_classes = [IsAdminUser] + +class DeletePlaneView(generics.DestroyAPIView): + queryset = Plane.objects.all() + serializer_class = PlaneSerializer + permission_classes = [IsAdminUser]