-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathroutes.py
94 lines (74 loc) · 3.58 KB
/
routes.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
from market import app
from flask import render_template, redirect, url_for, flash, request
from market.models import Item, User
from market.forms import RegisterForm, LoginForm, PurchaseItemForm, SellItemForm
from market import db
from flask_login import login_user, logout_user, login_required, current_user
@app.route('/')
@app.route('/home')
def home_page():
return render_template('home.html')
@app.route('/market', methods=['GET', 'POST'])
@login_required
def market_page():
purchase_form = PurchaseItemForm()
selling_form = SellItemForm()
if request.method == "POST":
#Purchase Item Logic
purchased_item = request.form.get('purchased_item')
p_item_object = Item.query.filter_by(name=purchased_item).first()
if p_item_object:
if current_user.can_purchase(p_item_object):
p_item_object.buy(current_user)
flash(f"Congratulations! You purchased {p_item_object.name} for {p_item_object.price}$", category='success')
else:
flash(f"Unfortunately, you don't have enough money to purchase {p_item_object.name}!", category='danger')
#Remove Logic
sold_item = request.form.get('sold_item')
s_item_object = Item.query.filter_by(name=sold_item).first()
if s_item_object:
if current_user.can_sell(s_item_object):
s_item_object.sell(current_user)
flash(f"{s_item_object.name} removed from Cart", category='success')
else:
flash(f"Failed to remove {s_item_object.name}", category='danger')
return redirect(url_for('market_page'))
if request.method == "GET":
items = Item.query.filter_by(owner=None)
owned_items = Item.query.filter_by(owner=current_user.id)
return render_template('market.html', items=items, purchase_form=purchase_form, owned_items=owned_items, selling_form=selling_form)
@app.route('/register', methods=['GET', 'POST'])
def register_page():
form = RegisterForm()
if form.validate_on_submit():
user_to_create = User(username=form.username.data,
email_address=form.email_address.data,
password=form.password1.data)
db.session.add(user_to_create)
db.session.commit()
login_user(user_to_create)
flash(f"Account created successfully! You are now logged in as {user_to_create.username}", category='success')
return redirect(url_for('market_page'))
if form.errors != {}: #If there are not errors from the validations
for err_msg in form.errors.values():
flash(f'There was an error while creating an account: {err_msg}', category='danger')
return render_template('register.html', form=form)
@app.route('/login', methods=['GET', 'POST'])
def login_page():
form = LoginForm()
if form.validate_on_submit():
attempted_user = User.query.filter_by(username=form.username.data).first()
if attempted_user and attempted_user.check_password_correction(
attempted_password=form.password.data
):
login_user(attempted_user)
flash(f'Success! You are logged in as: {attempted_user.username}', category='success')
return redirect(url_for('market_page'))
else:
flash('Username and password do not match.\n Please try again.', category='danger')
return render_template('login.html', form=form)
@app.route('/logout')
def logout_page():
logout_user()
flash("You have been logged out!", category='info')
return redirect(url_for("home_page"))