コード例 #1
0
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)
コード例 #2
0
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)
コード例 #3
0
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
コード例 #4
0
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)
コード例 #5
0
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)
コード例 #6
0
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)
コード例 #7
0
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'))
コード例 #8
0
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)
コード例 #9
0
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'))
コード例 #10
0
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'))
コード例 #11
0
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)
コード例 #12
0
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)
コード例 #13
0
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)