Skip to content

Commit 39f333f

Browse files
committed
Add comments
1 parent 7be6e48 commit 39f333f

File tree

3 files changed

+48
-42
lines changed

3 files changed

+48
-42
lines changed

app.py

Lines changed: 40 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -11,46 +11,48 @@
1111
db = SQLAlchemy(app)
1212

1313

14-
class User(db.Model):
14+
class User(db.Model): # user class
1515
"""
1616
A user model to store the level and experience points (XP).
1717
"""
1818

19-
id = db.Column(db.Integer, primary_key=True, unique=True, nullable=False)
20-
username = db.Column(db.String(80), unique=True, nullable=False)
21-
xp = db.Column(db.Float, default=0)
22-
xp_required = db.Column(db.Float, default=1)
23-
total_xp = db.Column(db.Float, default=0)
24-
level = db.Column(db.Integer, default=1)
19+
id = db.Column(db.Integer, primary_key=True, unique=True, nullable=False) # user id
20+
username = db.Column(db.String(80), unique=True, nullable=False) # username
21+
xp = db.Column(db.Float, default=0) # user XP
22+
xp_required = db.Column(db.Float, default=1) # user XP required
23+
total_xp = db.Column(db.Float, default=0) # user total XP
24+
level = db.Column(db.Integer, default=1) # user level
2525

26-
def add_xp(self, amount):
26+
def add_xp(self, amount): # add XP
2727
"""
2828
Add XP (experience points) to the user.
2929
"""
30-
self.xp += amount
31-
self.total_xp += amount
32-
while self.xp >= self.xp_required:
30+
self.xp += amount # add XP by amount
31+
self.total_xp += amount # add total XP by amount
32+
while (
33+
self.xp >= self.xp_required
34+
): # if user XP is greater than or equal to XP required
3335
self.xp -= self.xp_required
3436
self.xp_required = round(
3537
self.xp_required + self.xp_required * 1 / math.sqrt(self.level)
3638
)
37-
self.level += 1
39+
self.level += 1 # increase level
3840

39-
def get_xp_required(self):
41+
def get_xp_required(self): # get required XP to next level
4042
"""
4143
Get the required XP for the user to level up.
4244
"""
4345
return self.xp_required
4446

45-
def get_level_progress(self):
47+
def get_level_progress(self): # get level progress
4648
"""
4749
Get the level progress as a percentage.
4850
"""
4951
return (self.xp / self.xp_required) * 100
5052

5153

52-
@app.template_filter("short_numeric")
53-
def short_numeric_filter(value):
54+
@app.template_filter("short_numeric") # short numeric filter
55+
def short_numeric_filter(value): # get number in short numeric form with abbreviations
5456
"""
5557
Get the abbreviated numeric value.
5658
"""
@@ -77,50 +79,52 @@ def short_numeric_filter(value):
7779
"OD",
7880
"ND",
7981
"V",
80-
]
82+
] # list of units
8183
exponent = 0
82-
mantissa = value
83-
while mantissa >= 1000:
84+
mantissa = value # mantissa value from 1 to 999
85+
while mantissa >= 1000: # repeat until mantissa is within 1 to 999
8486
mantissa /= 1000
8587
exponent += 1
86-
return f"{mantissa:.3g}{units[exponent]}" if value >= 1000 else f"{value:.0f}"
88+
return (
89+
f"{mantissa:.3g}{units[exponent]}" if value >= 1000 else f"{value:.0f}"
90+
) # print abbreviated output
8791

8892

89-
app.jinja_env.filters["short_numeric"] = short_numeric_filter
93+
app.jinja_env.filters["short_numeric"] = short_numeric_filter # add filter to Jinja
9094

9195

92-
@app.route("/")
93-
def index():
96+
@app.route("/") # index page
97+
def index(): # get index page template
9498
"""
9599
Return the index page containing a user.
96100
"""
97-
user = User.query.first()
98-
return render_template("index.html", user=user)
101+
user = User.query.first() # get first user
102+
return render_template("index.html", user=user) # return index page template
99103

100104

101-
@app.route("/add_xp", methods=["POST"])
102-
def add_xp():
105+
@app.route("/add_xp", methods=["POST"]) # add XP from POST method
106+
def add_xp(): # add XP
103107
"""
104108
Add XP (experience points) based on entered amount.
105109
"""
106-
user = User.query.first()
107-
user.add_xp(float(request.form["amount"]))
108-
db.session.commit()
109-
return redirect(url_for("index"))
110+
user = User.query.first() # get first user
111+
user.add_xp(float(request.form["amount"])) # parse amount as float
112+
db.session.commit() # commit database
113+
return redirect(url_for("index")) # return index page template
110114

111115

112-
def init_db():
116+
def init_db(): # initialize database
113117
"""
114118
Initialize the user database.
115119
"""
116120
with app.app_context():
117-
db.create_all()
118-
if User.query.count() == 0:
119-
new_user = User(username="Player")
121+
db.create_all() # initialize database
122+
if User.query.count() == 0: # if there is no user in database
123+
new_user = User(username="Player") # add user with name 'Player'
120124
db.session.add(new_user)
121125
db.session.commit()
122126

123127

124128
if __name__ == "__main__":
125129
init_db()
126-
app.run(debug=True, port=8081)
130+
app.run(debug=True, port=8081) # run the app at post 8081

schema.sql

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
create table
22
if not exists user (
3-
id integer primary key autoincrement,
4-
username text not null unique,
5-
xp float default 0,
6-
xp_required float default 1,
7-
total_xp float default 0,
8-
level integer default 1
3+
id integer primary key autoincrement, --user id
4+
username text not null unique, --username
5+
xp float default 0, --current user XP
6+
xp_required float default 1, --user required XP to reach next level
7+
total_xp float default 0, --user total XP earned
8+
level integer default 1 --current user level
99
);

templates/index.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ <h1>Flask User Level XP System</h1>
1515
{{ user.xp | short_numeric }} / {{ user.get_xp_required() | short_numeric
1616
}} XP<br />
1717
<div class="progress-container">
18+
<!--get current level progress-->
1819
<progress
1920
value="{{ user.xp }}"
2021
max="{{ user.get_xp_required() }}"
@@ -27,6 +28,7 @@ <h1>Flask User Level XP System</h1>
2728
action="{{ url_for('add_xp', user_id=user.id, amount=1) }}"
2829
method="post"
2930
>
31+
<!--form to add XP-->
3032
<input type="hidden" name="amount" value="1" />
3133
<button type="submit">Add XP</button>
3234
</form>

0 commit comments

Comments
 (0)