Skip to content

Commit 5647b94

Browse files
authored
Merge pull request #9 from erokemwa/copilot/update-requirements-for-python-compatibility
Upgrade requirements to modern package versions and fix Python 3.9+ compatibility
2 parents 67fc6bd + fd08519 commit 5647b94

11 files changed

Lines changed: 43 additions & 35 deletions

File tree

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
__pycache__/
2+
*.py[cod]
3+
*.pyo
4+
instance/
5+
*.db
6+
.env
-2.02 KB
Binary file not shown.
-902 Bytes
Binary file not shown.
-3.93 KB
Binary file not shown.

flaskblog/main/routes.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
from flask import render_template, request, Blueprint
2+
from sqlalchemy import select
3+
from flaskblog import db
24
from flaskblog.models import Post
35

46
main = Blueprint('main', __name__)
@@ -8,7 +10,7 @@
810
@main.route("/home")
911
def home():
1012
page = request.args.get('page', 1, type=int)
11-
posts = Post.query.order_by(Post.date_posted.desc()).paginate(page=page, per_page=5)
13+
posts = db.paginate(select(Post).order_by(Post.date_posted.desc()), page=page, per_page=5)
1214
return render_template('home.html', posts=posts)
1315

1416

flaskblog/models.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
from datetime import datetime
2-
from itsdangerous import TimedJSONWebSignatureSerializer
2+
from itsdangerous.url_safe import URLSafeTimedSerializer as Serializer
33
from flask import current_app
44
from flaskblog import db, login_manager
55
from flask_login import UserMixin
66

77

88
@login_manager.user_loader
99
def load_user(user_id):
10-
return User.query.get(int(user_id))
10+
return db.session.get(User, int(user_id))
1111

1212

1313
class User(db.Model, UserMixin):
@@ -19,17 +19,17 @@ class User(db.Model, UserMixin):
1919
posts = db.relationship('Post', backref='author', lazy=True)
2020

2121
def get_reset_token(self, expires_sec=1800):
22-
s = Serializer(current_app.config['SECRET_KEY'], expires_sec)
23-
return s.dumps({'user_id': self.id}).decode('utf-8')
22+
s = Serializer(current_app.config['SECRET_KEY'])
23+
return s.dumps({'user_id': self.id})
2424

2525
@staticmethod
2626
def verify_reset_token(token):
2727
s = Serializer(current_app.config['SECRET_KEY'])
2828
try:
29-
user_id = s.loads(token)['user_id']
30-
except:
29+
user_id = s.loads(token, max_age=1800)['user_id']
30+
except Exception:
3131
return None
32-
return User.query.get(user_id)
32+
return db.session.get(User, user_id)
3333

3434
def __repr__(self):
3535
return f"User('{self.username}', '{self.email}', '{self.image_file}')"

flaskblog/posts/routes.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ def new_post():
2424

2525
@posts.route("/post/<int:post_id>")
2626
def post(post_id):
27-
post = Post.query.get_or_404(post_id)
27+
post = db.get_or_404(Post, post_id)
2828
return render_template('post.html', title=post.title, post=post)
2929

3030

3131
@posts.route("/post/<int:post_id>/update", methods=['GET', 'POST'])
3232
@login_required
3333
def update_post(post_id):
34-
post = Post.query.get_or_404(post_id)
34+
post = db.get_or_404(Post, post_id)
3535
if post.author != current_user:
3636
abort(403)
3737
form = PostForm()
@@ -51,7 +51,7 @@ def update_post(post_id):
5151
@posts.route("/post/<int:post_id>/delete", methods=['POST'])
5252
@login_required
5353
def delete_post(post_id):
54-
post = Post.query.get_or_404(post_id)
54+
post = db.get_or_404(Post, post_id)
5555
if post.author != current_user:
5656
abort(403)
5757
db.session.delete(post)
-171 Bytes
Binary file not shown.
-8.72 KB
Binary file not shown.

flaskblog/users/routes.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from flask import render_template, url_for, flash, redirect, request, Blueprint
22
from flask_login import login_user, current_user, logout_user, login_required
3+
from sqlalchemy import select
34
from flaskblog import db, bcrypt
45
from flaskblog.models import User, Post
56
from flaskblog.users.forms import (RegistrationForm, LoginForm, UpdateAccountForm,
@@ -70,10 +71,9 @@ def account():
7071
@users.route("/user/<string:username>")
7172
def user_posts(username):
7273
page = request.args.get('page', 1, type=int)
73-
user = User.query.filter_by(username=username).first_or_404()
74-
posts = Post.query.filter_by(author=user)\
75-
.order_by(Post.date_posted.desc())\
76-
.paginate(page=page, per_page=5)
74+
user = db.first_or_404(select(User).filter_by(username=username))
75+
posts = db.paginate(select(Post).filter_by(author=user)
76+
.order_by(Post.date_posted.desc()), page=page, per_page=5)
7777
return render_template('user_posts.html', posts=posts, user=user)
7878

7979

0 commit comments

Comments
 (0)