import datetime
from django.shortcuts import redirect, render
import json
from django.contrib import messages
from django.contrib.auth.models import User
from django.http import HttpResponse
from armsApp import models, forms
from django.db.models import Q
from django.contrib.auth import authenticate, login, logout, update_session_auth_hash
from django.contrib.auth.decorators import login_required
def context_data():
context = {
'page_name' : '',
'page_title' : '',
'system_name' : 'Airlines Reservation Managament System',
'topbar' : True,
'footer' : True,
}
return context
def userregister(request):
context = context_data()
context['topbar'] = False
context['footer'] = False
context['page_title'] = "User Registration"
if request.user.is_authenticated:
return redirect("home-page")
return render(request, 'register.html', context)
@login_required
def upload_modal(request):
context = context_data()
return render(request, 'upload.html', context)
def save_register(request):
resp={'status':'failed', 'msg':''}
if not request.method == 'POST':
resp['msg'] = "No data has been sent on this request"
else:
form = forms.SaveUser(request.POST)
if form.is_valid():
form.save()
messages.success(request, "Your Account has been created succesfully")
resp['status'] = 'success'
else:
for field in form:
for error in field.errors:
if resp['msg'] != '':
resp['msg'] += str('<br />')
resp['msg'] += str(f"[{field.name}] {error}.")
return HttpResponse(json.dumps(resp), content_type="application/json")
@login_required
def update_profile(request):
context = context_data()
context['page_title'] = 'Update Profile'
user = User.objects.get(id = request.user.id)
if not request.method == 'POST':
form = forms.UpdateProfile(instance=user)
context['form'] = form
print(form)
else:
form = forms.UpdateProfile(request.POST, instance=user)
if form.is_valid():
form.save()
messages.success(request, "Profile has been updated")
return redirect("profile-page")
else:
context['form'] = form
return render(request, 'manage_profile.html',context)
@login_required
def update_password(request):
context =context_data()
context['page_title'] = "Update Password"
if request.method == 'POST':
form = forms.UpdatePasswords(user = request.user, data= request.POST)
if form.is_valid():
form.save()
messages.success(request,"Your Account Password has been updated successfully")
update_session_auth_hash(request, form.user)
return redirect("profile-page")
else:
context['form'] = form
else:
form = forms.UpdatePasswords(request.POST)
context['form'] = form
return render(request,'update_password.html',context)
# Create your views here.
def login_page(request):
context = context_data()
context['topbar'] = False
context['footer'] = False
context['page_name'] = 'login'
context['page_title'] = 'Login'
return render(request, 'login.html', context)
def login_user(request):
logout(request)
resp = {"status":'failed','msg':''}
username = ''
password = ''
if request.POST:
username = request.POST['username']
password = request.POST['password']
user = authenticate(username=username, password=password)
if user is not None:
if user.is_active:
login(request, user)
resp['status']='success'
else:
resp['msg'] = "Incorrect username or password"
else:
resp['msg'] = "Incorrect username or password"
return HttpResponse(json.dumps(resp),content_type='application/json')
def search_flight(request):
context = context_data()
context['page'] = 'Search Available Flight'
airlines = models.Airlines.objects.filter(delete_flag = 0, status = 1).all()
airports = models.Airport.objects.filter(delete_flag = 0, status = 1).all()
context['airlines'] = airlines
context['airports'] = airports
return render(request,'search_flight.html', context)
def search_result(request, fromA=None, toA=None, departure = None):
context = context_data()
context['page'] = 'Search Result'
if fromA is None and toA is None and departure is None:
messages.error(request, "Invalid Search Inputs")
return redirect('public-page')
else:
departure = datetime.datetime.strptime(departure, "%Y-%m-%d")
year = departure.strftime("%Y")
month = departure.strftime("%m")
day = departure.strftime("%d")
context['flights'] = models.Flights.objects.filter(delete_flag=0,
departure__year = year,
departure__month = month,
departure__day = day,
).order_by('departure').all()
return render(request, 'search_result.html', context)
def save_reservation(request):
resp = { 'status': 'failed', 'msg':'' }
if not request.method == 'POST':
resp['msg'] = "No data has been sent."
else:
form = forms.SaveReservation(request.POST)
if form.is_valid():
form.save()
resp['status'] = 'success'
resp['msg'] = "Your Reservation has been sent. Our staff will reach as soon we sees your reservation. Thank you!"
messages.success(request,f"{resp['msg']}")
else:
for field in form:
for error in field.errors:
if not resp['msg'] == '':
resp['msg'] += str("<br />")
resp['msg'] += str(f"[{field.name}] {error}")
return HttpResponse(json.dumps(resp), content_type="application/json")
def reserve_form(request, pk=None):
context = context_data()
context['page'] = 'Search Result'
if pk is None:
messages.error(request, "Invalid Flight ID")
return redirect('public-page')
else:
context['flight'] = models.Flights.objects.get(id=pk)
return render(request, 'reservation.html', context)
@login_required
def home(request):
context = context_data()
context['page'] = 'home'
context['page_title'] = 'Home'
context['airlines'] = models.Airlines.objects.filter(delete_flag=0, status = 1).count()
context['airport'] = models.Airport.objects.filter(delete_flag=0, status = 1).count()
now = datetime.datetime.now()
year = now.strftime("%Y")
month = now.strftime("%m")
day = now.strftime("%d")
hour = now.strftime("%H")
context['flight'] = models.Flights.objects.filter(delete_flag=0,
departure__year__gte = year,
departure__month__gte = month,
departure__day__gte = day,
departure__hour__gte = hour,
).count()
return render(request, 'home.html', context)
def logout_user(request):
logout(request)
return redirect('login-page')
@login_required
def profile(request):
context = context_data()
context['page'] = 'profile'
context['page_title'] = "Profile"
return render(request,'profile.html', context)
#Airline
@login_required
def list_airline(request):
context = context_data()
context['page_title'] ="Airlines"
context['airlines'] = models.Airlines.objects.filter(delete_flag = 0).all()
return
没有合适的资源?快使用搜索试试~ 我知道了~
Flight Reservation Management System in Python using Django
共318个文件
js:186个
pyc:25个
py:22个
0 下载量 8 浏览量
2023-11-03
16:41:32
上传
评论
收藏 3.36MB ZIP 举报
温馨提示
Flight Reservation Management System in Python using Django
资源推荐
资源详情
资源评论
收起资源包目录
Flight Reservation Management System in Python using Django (318个子文件)
bootstrap.css 201KB
bootstrap.rtl.css 200KB
bootstrap.rtl.min.css 160KB
bootstrap.min.css 160KB
bootstrap-grid.rtl.css 71KB
bootstrap-grid.css 71KB
bootstrap-utilities.css 70KB
bootstrap-utilities.rtl.css 70KB
bootstrap-utilities.min.css 52KB
bootstrap-utilities.rtl.min.css 52KB
bootstrap-grid.rtl.min.css 52KB
bootstrap-grid.min.css 52KB
select2.css 18KB
select2.min.css 16KB
datatables.css 9KB
datatables.min.css 8KB
bootstrap-reboot.css 7KB
bootstrap-reboot.rtl.css 7KB
bootstrap-reboot.rtl.min.css 6KB
bootstrap-reboot.min.css 6KB
style.css 3KB
base.html 13KB
reservation.html 13KB
manage_flight.html 8KB
search_result.html 8KB
airlines.html 6KB
register.html 6KB
view_reservation_details.html 6KB
flights.html 6KB
airports.html 6KB
reservation_list.html 6KB
login.html 5KB
trash.html 4KB
search_flight.html 4KB
topNavigation.html 4KB
manage_profile.html 4KB
manage_airline.html 4KB
view_id.html 3KB
manage_airport.html 3KB
home.html 3KB
view_flight_details.html 2KB
profile.html 2KB
update_password.html 2KB
wallpaper.jpg 973KB
pal.jpg 18KB
logo.jpg 7KB
instascan.min.js 1.49MB
datatables.js 447KB
bootstrap.bundle.js 205KB
select2.full.js 163KB
select2.js 153KB
bootstrap.js 145KB
bootstrap.esm.js 136KB
jquery-3.6.0.min.js 128KB
datatables.min.js 91KB
bootstrap.bundle.min.js 76KB
select2.full.min.js 75KB
select2.min.js 71KB
bootstrap.esm.min.js 71KB
bootstrap.min.js 58KB
popper.min.js 26KB
diacritics.js 16KB
core.js 15KB
results.js 14KB
defaults.js 11KB
utils.js 9KB
attachBody.js 7KB
search.js 7KB
select.js 6KB
base.js 5KB
options.js 4KB
multiple.js 4KB
allowClear.js 3KB
search.js 3KB
ajax.js 3KB
tokenizer.js 3KB
single.js 3KB
tags.js 3KB
infiniteScroll.js 2KB
array.js 2KB
sk.js 2KB
te.js 2KB
pa.js 2KB
cs.js 2KB
ne.js 2KB
ru.js 2KB
bn.js 2KB
hsb.js 2KB
dsb.js 2KB
sr-Cyrl.js 1KB
el.js 1KB
placeholder.js 1KB
jquery.select2.js 1KB
uk.js 1KB
lt.js 1KB
sr.js 1KB
hi.js 1KB
he.js 1KB
bs.js 1KB
pa.js 1KB
共 318 条
- 1
- 2
- 3
- 4
资源评论
xiaoshun007~
- 粉丝: 3846
- 资源: 3131
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 用python从excel读取数据并画图.zip
- 一个光立方项目,使用树莓派+74HC154芯片控制(20多种特效)
- 基于MATLAB口罩定位识别系统源码+GUI界面+详细文档+全部资料(高分项目).zip
- comfyui的电商工作流BrushNet-basic
- 基于pytorch+OpenCV的手写数字识别源码+使用文档+全部资料(优秀项目).zip
- 基于C++和Opencv的传统手势识别源码+使用文档+全部资料(优秀项目).zip
- 与我最爱的人度过的第二个情人节,花心思制作的一个网页送给她
- Python实战:高效读取Excel数据.zip
- 历史学习网站 JAVA+Vue.js+SpringBoot+MySQL
- 基于pytorch+OpenCV的手写数字识别源码+使用文档+全部资料(优秀项目).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功