Hệ thống quản lý sân bay bằng Python

1 from django.shortcuts import render
2 from
django.contrib.auth import login, authenticate
3 from
django.contrib.auth.decorators import login_required
4 from
django.shortcuts import render, redirect, get_object_or_404
5 from
.models import User, Passenger, Flight, Security, Staff
6 import datetime
7 import pdfkit

8 from
django.http import HttpResponse
9 from
django.template import loader
10
11 # Create your views here.
12
13
14 def login_security(request):
15     
if request.method == "POST":
16         username = request.POST[
'username']
17         password = request.POST[
'password']
18         user = authenticate(username=username, password=password)
19         
if user is not None:
20             
if user.is_active:
21                 
if user.user_type == 2:
22                     login(request, user)
23                     
return redirect('security_clearing') #, pk=user.security.id)
24                 
else:
25                     
return render(request, 'security_login.html', {'error_message': 'Invalid security staff credentials'})
26             
else:
27                 
return render(request, 'security_login.html', {'error_message': 'Your account has been disabled'})
28         
else:
29             
return render(request, 'security_login.html', {'error_message': 'Invalid login'})
30     
return render(request, 'security_login.html')
31
32
33 def login_staff(request):
34     
if request.method == "POST":
35         username = request.POST[
'username']
36         password = request.POST[
'password']
37         user = authenticate(username=username, password=password)
38         
if user is not None:
39             
if user.is_active:
40                 
if user.user_type == 1:
41                     login(request, user)
42                     
return redirect('staff_home', flight_no=user.staff.flight_no.flight_no)
43                 
else:
44                     
return render(request, 'staff_login.html', {'error_message': 'Invalid flight staff credentials'})
45             
else:
46                 
return render(request, 'staff_login.html', {'error_message': 'Your account has been disabled'})
47         
else:
48             
return render(request, 'staff_login.html', {'error_message': 'Invalid login'})
49     
return render(request, 'staff_login.html')
50
51
52 def home(request):
53     
return render(request, 'home.html')
54
55
56 def airport_mgmt(request):
57     
return render(request, 'airport_mgmt.html')
58
59
60 def clear_security(request):
61     data = Passenger.objects.all()
62     
return render(request, 'security_clearing.html', {'passengers': data})
63
64
65 def clear_for_security(request, pk):
66     passenger = get_object_or_404(Passenger, pk=pk)
67     passenger.cleared_security_status = request.user.security.id
68     passenger.save()
69
70     
return redirect('security_clearing')
71
72
73 def staff_home(request, flight_no):
74     # staff = get_object_or_404(Staff, pk=pk)
75     data = Passenger.objects.filter(flight_no=flight_no)
76     
return render(request, 'staff_home.html', {'passengers': data, 'flight_no': flight_no})
77
78     
79 def view_flights(request):
80     data = Flight.objects.all()
81     
return render(request, 'view_flights.html', {'flights': data})
82
83
84 def self_check_in(request, pk):
85     passenger = get_object_or_404(Passenger, pk=pk)
86     passenger.checked_in_status = True
87     passenger.save()
88     
return redirect('passenger_home', pk=passenger.pk)
89
90
91 def search_by_source(request):
92     
if request.method == "POST":
93         source = request.POST[
'source']
94         
if source:
95             data = Flight.objects.filter(source=source)
96             
return render(request, 'view_flights.html', {'flights': data})
97         
else:
98             
return redirect('view_flights')
99     
else:
100         
return redirect('view_flights')
101
102
103 def search_by_destination(request):
104     
if request.method == "POST":
105         destination = request.POST[
'destination']
106         
if destination:
107             data = Flight.objects.filter(destination=destination)
108             
return render(request, 'view_flights.html', {'flights': data})
109         
else:
110             
return redirect('view_flights')
111     
else:
112         
return redirect('view_flights')
113
114
115 def view_available_flights(request):
116     
if request.method == "POST":
117         source = request.POST[
'source']
118         destination = request.POST[
'destination']
119         
if source and destination:
120             flights = Flight.objects.filter(source=source, destination=destination)
121             
if flights:
122                 
return render(request, 'home.html', {'flights': flights})
123             
else:
124                 
return render(request, 'home.html', {'error_message_flight': "No flights found"})
125         
else:
126             
return redirect('home')
127     
else:
128         
return redirect('home')
129
130
131 def book_flight(request, pk):
132     
if request.method == "POST":
133         flight = Flight.objects.
get(flight_no=pk)
134         first_name = request.POST[
'first_name']
135         last_name = request.POST[
'last_name']
136         nationality = request.POST[
'nationality']
137         gender = request.POST[
'gender']
138         dob = request.POST[
'dob']
139         pnr = str(flight.flight_no) + str(flight.destination)
140         passenger = Passenger(pnr=pnr, first_name=first_name, last_name=last_name, nationality=nationality,
141                               flight_no=flight, gender=gender, dob=dob)
142         passenger.save()
143         passenger.pnr = str(flight.flight_no) + str(flight.destination_code) + str(passenger.pk)
144         passenger.save()
145         flight.no_of_seats -=
1
146         flight.save()
147         
return redirect('passenger_home', pk=passenger.pk)
148     
else:
149         
return render(request, 'book_flight.html', {'flight_no': pk})
150
151
152 def passenger_home(request, pk):
153     passenger = Passenger.objects.
get(pk=pk)
154     
return render(request, 'passenger_home.html', {'passenger': passenger})
155
156
157 def view_booking(request):
158     
if request.method == "POST": # view existing booking
159         pnr = request.POST[
'pnr']
160         
try:
161             passenger = Passenger.objects.
get(pnr=pnr)
162         except Passenger.DoesNotExist:
163             passenger = None
164         
if passenger:
165             passenger = get_object_or_404(Passenger, pnr=pnr)
166             
return render(request, 'passenger_home.html', {'passenger': passenger})
167         
else:
168             
return render(request, 'home.html', {'error_message_booking': 'No booking found'})
169
170
171 def create_pdf(request, pk):
172     passenger = get_object_or_404(Passenger, pk=pk)
173     html = loader.render_to_string(
'passenger_home.html', {'passenger': passenger})
174     output = pdfkit.from_string(html, output_path=False)
175     response = HttpResponse(content_type=
"application/pdf")
176     response.write(output)
177     
return response
178
179
180 def staff_check_in(request, pk):
181     passenger = get_object_or_404(Passenger, pk=pk)
182     passenger.checked_in_status = True
183     passenger.save()
184     
return redirect('staff_home', flight_no=passenger.flight_no.flight_no)
185
186
187 def delete_passengers(request, flight_no):
188     flight = Flight.objects.
get(flight_no=flight_no)
189     passenger = Passenger.objects.filter(flight_no=flight)
190     passenger.delete()
191     
return redirect('staff_home', flight_no=flight.flight_no)
192
193
194 def generate_report(request, flight_no):
195     passengers = Passenger.objects.filter(flight_no=flight_no)
196     html = loader.render_to_string(
'staff_home.html', {'passengers': passengers, 'flight_no': flight_no})
197     output = pdfkit.from_string(html, output_path=False)
198     response = HttpResponse(content_type=
"application/pdf")
199     response.write(output)
200     
return response


Gõ tìm kiếm nhanh...