Skip to content

Commit 7069a65

Browse files
committed
(fix) Handle redeeming more points than available
1 parent 2da675f commit 7069a65

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

server.py

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,13 @@
44

55
def loadClubs():
66
with open('clubs.json') as c:
7-
listOfClubs = json.load(c)['clubs']
7+
listOfClubs = json.load(c)["clubs"]
88
return listOfClubs
99

1010

1111
def loadCompetitions():
1212
with open('competitions.json') as comps:
13-
listOfCompetitions = json.load(comps)['competitions']
13+
listOfCompetitions = json.load(comps)["competitions"]
1414
return listOfCompetitions
1515

1616

@@ -45,8 +45,15 @@ def book(competition,club):
4545
def purchasePlaces():
4646
competition = [c for c in competitions if c['name'] == request.form['competition']][0]
4747
club = [c for c in clubs if c['name'] == request.form['club']][0]
48+
if not request.form['places'] or int(request.form['places']) < 1 :
49+
flash("Places required must be a positive integer")
50+
return redirect(url_for('book',competition=competition['name'],club=club['name']))
4851
placesRequired = int(request.form['places'])
49-
competition['numberOfPlaces'] = int(competition['numberOfPlaces'])-placesRequired
52+
if placesRequired > int(club['points']):
53+
flash("Places required exceed club's total points")
54+
return redirect(url_for('book',competition=competition['name'],club=club['name']))
55+
competition['numberOfPlaces'] = int(competition['numberOfPlaces']) - placesRequired
56+
club['points'] = int(club['points']) - placesRequired
5057
flash('Great-booking complete!')
5158
return render_template('welcome.html', club=club, competitions=competitions)
5259

templates/booking.html

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,15 @@
66
</head>
77
<body>
88
<h2>{{competition['name']}}</h2>
9+
{% with messages = get_flashed_messages()%}
10+
{% if messages %}
11+
<ul>
12+
{% for message in messages %}
13+
<li>{{message}}</li>
14+
{% endfor %}
15+
</ul>
16+
{% endif%}
17+
{% endwith %}
918
Places available: {{competition['numberOfPlaces']}}
1019
<form action="/purchasePlaces" method="post">
1120
<input type="hidden" name="club" value="{{club['name']}}">

0 commit comments

Comments
 (0)