完成大作业服务端代码,新建管理端,管理端不可用
This commit is contained in:
49
Project/Service/func/search.py
Normal file
49
Project/Service/func/search.py
Normal file
@@ -0,0 +1,49 @@
|
||||
from flask import render_template, request, g, abort, redirect, url_for
|
||||
from .config import db
|
||||
from .utils import get_cities
|
||||
import pymysql
|
||||
import datetime
|
||||
|
||||
|
||||
def search():
|
||||
if not g.user:
|
||||
return redirect(url_for("login"))
|
||||
departure_city = request.args.get('departure')
|
||||
destination_city = request.args.get('destination')
|
||||
departure_date = request.args.get('departure-date')
|
||||
passengers = int(request.args.get('passengers', 1))
|
||||
|
||||
# Date validation
|
||||
try:
|
||||
departure_date_obj = datetime.datetime.strptime(departure_date, '%Y-%m-%d').date()
|
||||
if departure_date_obj < datetime.date.today():
|
||||
abort(400, description="Departure date cannot be in the past.")
|
||||
except ValueError:
|
||||
abort(400, description="Invalid date format.")
|
||||
|
||||
conn = pymysql.connect(**db)
|
||||
cursor = conn.cursor(pymysql.cursors.DictCursor)
|
||||
|
||||
search_sql = """
|
||||
SELECT f.*, d.Name as Departure_airport_name, a.Name as Arrival_airport_name
|
||||
FROM Flights f
|
||||
JOIN Airports d ON f.Departure_airport = d.ID
|
||||
JOIN Airports a ON f.Arrival_airport = a.ID
|
||||
WHERE d.City = %s AND a.City = %s
|
||||
AND DATE(f.Departure_time) = %s
|
||||
AND (f.First_class_seats_remaining + f.Business_class_seats_remaining + f.Economy_class_seats_remaining) >= %s
|
||||
AND f.Status NOT IN ('已起飞', '已降落');
|
||||
"""
|
||||
|
||||
cursor.execute(search_sql, (departure_city, destination_city, departure_date, passengers))
|
||||
flights = cursor.fetchall()
|
||||
|
||||
cursor.close()
|
||||
conn.close()
|
||||
|
||||
return render_template(
|
||||
'search.html',
|
||||
cities=get_cities(),
|
||||
flights=flights,
|
||||
username=g.name
|
||||
)
|
||||
Reference in New Issue
Block a user