Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
__pycache__/
*.py[cod]
*.pyo
instance/
*.db
.env
Binary file removed flaskblog/__pycache__/__init__.cpython-311.pyc
Binary file not shown.
Binary file removed flaskblog/__pycache__/config.cpython-311.pyc
Binary file not shown.
Binary file removed flaskblog/__pycache__/models.cpython-311.pyc
Binary file not shown.
4 changes: 3 additions & 1 deletion flaskblog/main/routes.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
from flask import render_template, request, Blueprint
from sqlalchemy import select
from flaskblog import db
from flaskblog.models import Post

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


Expand Down
14 changes: 7 additions & 7 deletions flaskblog/models.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
from datetime import datetime
from itsdangerous import TimedJSONWebSignatureSerializer
from itsdangerous.url_safe import URLSafeTimedSerializer as Serializer
from flask import current_app
from flaskblog import db, login_manager
from flask_login import UserMixin


@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
return db.session.get(User, int(user_id))


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

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

@staticmethod
def verify_reset_token(token):
s = Serializer(current_app.config['SECRET_KEY'])
try:
user_id = s.loads(token)['user_id']
except:
user_id = s.loads(token, max_age=1800)['user_id']
except Exception:
return None
return User.query.get(user_id)
return db.session.get(User, user_id)

def __repr__(self):
return f"User('{self.username}', '{self.email}', '{self.image_file}')"
Expand Down
6 changes: 3 additions & 3 deletions flaskblog/posts/routes.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@ def new_post():

@posts.route("/post/<int:post_id>")
def post(post_id):
post = Post.query.get_or_404(post_id)
post = db.get_or_404(Post, post_id)
return render_template('post.html', title=post.title, post=post)


@posts.route("/post/<int:post_id>/update", methods=['GET', 'POST'])
@login_required
def update_post(post_id):
post = Post.query.get_or_404(post_id)
post = db.get_or_404(Post, post_id)
if post.author != current_user:
abort(403)
form = PostForm()
Expand All @@ -51,7 +51,7 @@ def update_post(post_id):
@posts.route("/post/<int:post_id>/delete", methods=['POST'])
@login_required
def delete_post(post_id):
post = Post.query.get_or_404(post_id)
post = db.get_or_404(Post, post_id)
if post.author != current_user:
abort(403)
db.session.delete(post)
Expand Down
Binary file removed flaskblog/users/__pycache__/__init__.cpython-311.pyc
Binary file not shown.
Binary file removed flaskblog/users/__pycache__/routes.cpython-311.pyc
Binary file not shown.
8 changes: 4 additions & 4 deletions flaskblog/users/routes.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from flask import render_template, url_for, flash, redirect, request, Blueprint
from flask_login import login_user, current_user, logout_user, login_required
from sqlalchemy import select
from flaskblog import db, bcrypt
from flaskblog.models import User, Post
from flaskblog.users.forms import (RegistrationForm, LoginForm, UpdateAccountForm,
Expand Down Expand Up @@ -70,10 +71,9 @@ def account():
@users.route("/user/<string:username>")
def user_posts(username):
page = request.args.get('page', 1, type=int)
user = User.query.filter_by(username=username).first_or_404()
posts = Post.query.filter_by(author=user)\
.order_by(Post.date_posted.desc())\
.paginate(page=page, per_page=5)
user = db.first_or_404(select(User).filter_by(username=username))
posts = db.paginate(select(Post).filter_by(author=user)
.order_by(Post.date_posted.desc()), page=page, per_page=5)
return render_template('user_posts.html', posts=posts, user=user)


Expand Down
40 changes: 20 additions & 20 deletions requirements.txt
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
bcrypt==3.1.4
blinker==1.4
certifi==2016.2.28
cffi==1.11.5
click==6.7
Flask==1.0
Flask-Bcrypt==0.7.1
Flask-Login==0.4.1
Flask-Mail==0.9.1
Flask-SQLAlchemy==2.3.2
Flask-WTF==0.14.2
itsdangerous==0.24
Jinja2==2.10
MarkupSafe==1.0
Pillow==5.3.0
pycparser==2.18
six==1.11.0
SQLAlchemy==1.2.7
Werkzeug==0.14.1
WTForms==2.1
bcrypt==4.1.3
blinker==1.7.0
certifi==2024.2.2
cffi==1.16.0
click==8.1.7
Flask==3.0.3
Flask-Bcrypt==1.0.1
Flask-Login==0.6.3
Flask-Mail==0.10.0
Flask-SQLAlchemy==3.1.1
Flask-WTF==1.2.1
itsdangerous==2.2.0
Jinja2==3.1.3
MarkupSafe==2.1.5
Pillow==10.3.0
pycparser==2.22
six==1.16.0
SQLAlchemy==2.0.29
Werkzeug==3.0.3
WTForms==3.1.2
Loading