def personal_info(): form = ChangeInfoForm(request.form) if request.method == 'POST': #and form.validate(): user_t = db.Table('user') user_t.update_item( Key={ 'nickname': form.nickname.data, }, UpdateExpression= 'SET tname = :val1, email = :val2, id_card = :val3, password = :val4', ExpressionAttributeValues={ ':val1': form.name.data, ':val2': form.email.data, ':val3': form.id_card.data, ':val4': generate_password_hash(form.password.data) }) flash('Change user information success') return redirect(url_for('web.personal_info')) user_t = db.Table('user') response = user_t.scan( FilterExpression=Attr('nickname').eq(session['usernickname'])) user = response['Items'][0] form.nickname.default = user['nickname'] form.password.default = user['password'] form.name.default = user['tname'] form.id_card.default = user['id_card'] form.email.default = user['email'] form.process() return render_template('web/VIPInfo.html', form=form)
def add_ticket(): if 'auth' not in session: return redirect(url_for('admin.login')) if not session['auth']: return redirect(url_for('admin.login')) form = AddTicketForm(request.form) if request.method == 'POST': # and form.validate(): ticket_t = db.Table('ticket') ticket = { 'name': form.name.data, 'create_time': int(datetime.now().timestamp()), 'company_name': form.company_name.data, 'depart_city': form.depart_city.data, 'arrive_city': form.arrive_city.data, 'depart_time': form.depart_time.data, 'depart_date': str(form.depart_date.data), 'arrive_time': form.arrive_time.data, 'arrive_date': str(form.arrive_date.data), 'first_class_price': form.first_class_price.data, 'first_class_num': form.first_class_num.data, 'second_class_price': form.second_class_price.data, 'second_class_num': form.second_class_num.data, 'third_class_price': form.third_class_price.data, 'third_class_num': form.third_class_num.data, 'depart_airport': form.depart_airport.data, 'arrive_airport': form.arrive_airport.data } ticket_t.put_item(Item=ticket) flash('Create ticket success!') return redirect(url_for('admin.add_ticket')) return render_template('admin/TicketAdd.html', form=form)
def create_app(): app = Flask(__name__) app.config.from_object('app.config') # init flask-s3 to upload static file s3 = FlaskS3() s3.init_app(app) app.config['FLASKS3_BUCKET_NAME'] = 'a2homework' #flask_s3.create_all(app) register_blueprint(app) login_manager.init_app(app) login_manager.login_view = 'web.login' login_manager.login_message = 'Please login or register' admin_t = db.Table('admin') response = admin_t.scan( FilterExpression=Attr('nickname').eq('admin') ) items = response['Items'] if not len(items): admin_t.put_item( Item={ 'nickname': 'admin', 'role': 'super', 'password': generate_password_hash('123456'), 'create_time': int(datetime.now().timestamp()) } ) return app
def login(): form = LoginForm(request.form) if request.method == 'POST': # and form.validate(): user_t = db.Table('user') response = user_t.scan( FilterExpression=Attr('nickname').eq(form.nickname.data)) if len(response['Items']) != 0: userc = response['Items'][0]['nickname'] pw = response['Items'][0]['password'] if userc and check_password_hash(pw, form.password.data): from flask import session from datetime import timedelta session.permanent = True app.permanent_session_lifetime = timedelta(minutes=30) user = User(datetime.now()) login_user(user, remember=True) session['usernickname'] = userc next = request.args.get('next') if not next: next = url_for('web.personal_info') return redirect(next) else: flash('Account does not exist or wrong password') else: flash('Account does not exist or wrong password') return render_template('web/VIPSignIn.html', form=form)
def manage_order(): if 'auth' not in session: return redirect(url_for('admin.login')) if not session['auth']: return redirect(url_for('admin.login')) order_id = request.args.get('order_id') if request.method == 'POST': order_t = db.Table('order') response = order_t.update_item( Key={'order_id': order_id}, UpdateExpression='SET order_status = :val1', ExpressionAttributeValues={':val1': 'Completed'}) return redirect(url_for('admin.manage_order')) order_t = db.Table('order') response = order_t.scan() orders = response['Items'] orders = ManageOrder(orders).order return render_template('admin/OrderManage.html', orders=orders)
def admin_manage(): if 'auth' not in session: return redirect(url_for('admin.login')) if not session['auth']: return redirect(url_for('admin.login')) form = AddAdminForm(request.form) admin_t = db.Table('admin') response = admin_t.scan() admins = response['Items'] return render_template('admin/AdminManage.html', form=form, admins=admins)
def change_company(company_name): if 'auth' not in session: return redirect(url_for('admin.login')) if not session['auth']: return redirect(url_for('admin.login')) # form = AddCompanyForm(request.form) company_t = db.Table('company') response = company_t.scan( FilterExpression=Attr('En_name').eq(company_name)) com = response['Items'][0] ticket_t = db.Table('ticket') response = ticket_t.scan( FilterExpression=Attr('company_name').eq(com['company_name'])) tic = response['Items'] if len(tic): flash("WARNING! There are related airlines!") return redirect(url_for('admin.company')) company_t.delete_item(Key={'company_name': com['company_name']}) return redirect(url_for('admin.company'))
def login(): session['auth'] = 0 form = LoginForm(request.form) if request.method == 'POST': admin_t = db.Table('admin') response = admin_t.scan( FilterExpression=Attr('nickname').eq(form.nickname.data)) if len(response['Items']) != 0: ad = response['Items'][0]['password'] if ad and check_password_hash(ad, form.password.data): session['auth'] = 1 return redirect(url_for('admin.admin_manage')) flash('Incorrect admin account or password') return render_template('admin/AdminSignIn.html', form=form)
def dispose_order(): if 'auth' not in session: return redirect(url_for('admin.login')) if not session['auth']: return redirect(url_for('admin.login')) order_id = request.args.get('order_id') order_t = db.Table('order') ticket_t = db.Table('ticket') #Get order then get plane_id response = order_t.get_item(Key={'order_id': order_id}) order = response['Item'] ticket_type = order['ticket_type'] plane_id = order['plane_id'] #Get ticket by plane_id and get the seat num response = ticket_t.scan(FilterExpression=Attr('name').eq(plane_id)) ticket = response['Items'][0] if ticket_type == 'First-class': num = ticket['first_class_num'] classnum = 'first_class_num' elif ticket_type == 'Business': num = ticket['second_class_num'] classnum = 'second_class_num' else: num = ticket['third_class_num'] classnum = 'third_class_num' # update avaiable space plus 1 ticket_t.update_item(Key={ 'name': plane_id, }, UpdateExpression='SET #classnum = :val1', ExpressionAttributeNames={'#classnum': classnum}, ExpressionAttributeValues={':val1': num + 1}) #delete order order_t.delete_item(Key={'order_id': order_id}) return redirect(url_for('admin.manage_order'))
def change_info(nickname): if 'auth' not in session: return redirect(url_for('admin.login')) if not session['auth']: return redirect(url_for('admin.login')) form = AddAdminForm(request.form) form.nickname.default = nickname form.process() admin_t = db.Table('admin') response = admin_t.scan(FilterExpression=Attr('nickname').eq(nickname)) if request.method == 'GET': admin_t.delete_item(Key={ 'nickname': nickname, }) return redirect(url_for('admin.admin_manage'))
def add_admin(): if 'auth' not in session: return redirect(url_for('admin.login')) if not session['auth']: return redirect(url_for('admin.login')) form = AddAdminForm(request.form) admin_t = db.Table('admin') response = admin_t.scan() admins = response['Items'] if request.method == 'POST': # and form.validate(): admin_t.put_item( Item={ 'nickname': form.nickname.data, 'role': 'super', 'password': generate_password_hash(form.password.data), 'create_time': int(datetime.now().timestamp()) }) return redirect(url_for('admin.admin_manage')) return render_template('admin/AdminManage.html', form=form, admins=admins)
def company(): if 'auth' not in session: return redirect(url_for('admin.login')) if not session['auth']: return redirect(url_for('admin.login')) form = AddCompanyForm(request.form) company_t = db.Table('company') response = company_t.scan() companys = response['Items'] if request.method == 'POST': company_t.put_item( Item={ 'company_name': form.company_name.data, 'En_name': form.En_name.data, 'create_time': int(datetime.now().timestamp()) }) return redirect(url_for('admin.company')) return render_template('admin/CompanyManage.html', form=form, companys=companys)
def register(): form = RegisterForm(request.form) if request.method == 'POST': #judge if there are duplicate user user_t = db.Table('user') response = user_t.get_item(Key={'nickname': form.nickname.data}) if response.__contains__('Item'): flash('This username has been registered, try another one') return render_template('web/SignUp.html', form=form) user_t.put_item( Item={ 'nickname': form.nickname.data, 'create_time': int(datetime.now().timestamp()), 'tname': form.name.data, 'email': form.email.data, 'id_card': form.id_card.data, 'password': generate_password_hash(form.password.data), }) # Replace [email protected] with your "From" address. # This address must be verified with Amazon SES. SENDER = "*****@*****.**" # Replace [email protected] with a "To" address. If your account # is still in the sandbox, this address must be verified. RECIPIENT = form.email.data # Specify a configuration set. If you do not want to use a configuration # set, comment the following variable, and the # ConfigurationSetName=CONFIGURATION_SET argument below. CONFIGURATION_SET = "ConfigSet" # If necessary, replace us-west-2 with the AWS Region you're using for Amazon SES. AWS_REGION = "us-east-1" # The subject line for the email. SUBJECT = "Welcome to TicketBooking!" # The email body for recipients with non-HTML email clients. BODY_TEXT = ("Dear guest,\r\n" "Welcome to our ticket booking website! " "We hope you can find a new journey in your life.") # The HTML body of the email. BODY_HTML = """<html> <head>Welcome to TicketBooking!</head> <body> <h1></h1> <p>Dear guest, <br>Welcome to our ticket booking website!We hope you can find a new journey in your life. </p> </body> </html> """ # The character encoding for the email. CHARSET = "UTF-8" # Create a new SES resource and specify a region. client = boto3.client('ses', region_name=AWS_REGION) # Try to send the email. try: # Provide the contents of the email. response = client.send_email( Destination={ 'ToAddresses': [ RECIPIENT, ], }, Message={ 'Body': { 'Html': { 'Charset': CHARSET, 'Data': BODY_HTML, }, 'Text': { 'Charset': CHARSET, 'Data': BODY_TEXT, }, }, 'Subject': { 'Charset': CHARSET, 'Data': SUBJECT, }, }, Source=SENDER, # If you are not using a configuration set, comment or delete the # following line # ConfigurationSetName=CONFIGURATION_SET, ) # Display an error if something goes wrong. except ClientError as e: print(e.response['Error']['Message']) else: print("Email sent! Message ID:"), print(response['MessageId']) return redirect(url_for('web.login')) return render_template('web/SignUp.html', form=form)