From 37b50bf409282cd7cf8010a877deb8af02c885f2 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Fri, 24 May 2024 00:53:05 +0100 Subject: [PATCH] Update Flask dependencies --- app/__init__.py | 9 --------- app/models/users.py | 4 ++-- app/tasks/emails.py | 5 ++++- app/utils/gravatar.py | 11 +++++++++++ requirements.lock.txt | 19 +++++++++---------- requirements.txt | 1 - 6 files changed, 26 insertions(+), 23 deletions(-) create mode 100644 app/utils/gravatar.py diff --git a/app/__init__.py b/app/__init__.py index fde63cb7..2bffc1d2 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -23,7 +23,6 @@ from flask_babel import Babel, gettext from flask_flatpages import FlatPages from flask_flatpages.utils import pygmented_markdown from flask_github import GitHub -from flask_gravatar import Gravatar from flask_login import logout_user, current_user, LoginManager from flask_mail import Mail from flask_wtf.csrf import CSRFProtect @@ -108,14 +107,6 @@ csrf = CSRFProtect(app) mail = Mail(app) pages = FlatPages(app) babel = Babel() -gravatar = Gravatar(app, - size=64, - rating="g", - default="retro", - force_default=False, - force_lower=False, - use_ssl=True, - base_url=None) init_markdown(app) login_manager = LoginManager() diff --git a/app/models/users.py b/app/models/users.py index 91e8fa4d..2c6dfd25 100644 --- a/app/models/users.py +++ b/app/models/users.py @@ -21,7 +21,6 @@ from flask import url_for from flask_login import UserMixin from sqlalchemy import desc, text -from app import gravatar from . import db @@ -233,7 +232,8 @@ class User(db.Model, UserMixin): elif self.rank == UserRank.BOT: return "/static/bot_avatar.png" else: - return gravatar(self.email or f"{self.username}@content.minetest.net") + from app.utils.gravatar import get_gravatar + return get_gravatar(self.email or f"{self.username}@content.minetest.net") def check_perm(self, user, perm): if not user.is_authenticated: diff --git a/app/tasks/emails.py b/app/tasks/emails.py index 1c0c79c5..47f0a142 100644 --- a/app/tasks/emails.py +++ b/app/tasks/emails.py @@ -13,13 +13,16 @@ # # You should have received a copy of the GNU Affero General Public License # along with this program. If not, see . + import smtplib import typing from typing import Dict -from flask import render_template, escape +from flask import render_template from flask_babel import force_locale, gettext, lazy_gettext, LazyString from flask_mail import Message +from markupsafe import escape + from app import mail from app.models import Notification, db, EmailSubscription, User from app.rediscache import increment_key diff --git a/app/utils/gravatar.py b/app/utils/gravatar.py new file mode 100644 index 00000000..3a7e3e76 --- /dev/null +++ b/app/utils/gravatar.py @@ -0,0 +1,11 @@ +import hashlib + + +def get_gravatar(email: str): + size = 64 + rating = "g" + default = "retro" + url = "https://secure.gravatar.com/avatar/" + email_hash = hashlib.md5(email.encode("utf-8")).hexdigest() + link = f"{url}{email_hash}?s={size}&d={default}&r={rating}" + return link diff --git a/requirements.lock.txt b/requirements.lock.txt index 5ed75927..7664384b 100644 --- a/requirements.lock.txt +++ b/requirements.lock.txt @@ -1,7 +1,7 @@ alembic==1.10.3 amqp==5.1.1 async-timeout==4.0.2 -Babel==2.12.1 +Babel==2.15.0 bcrypt==4.0.1 beautifulsoup4==4.12.2 billiard==3.6.4.0 @@ -20,15 +20,14 @@ deep-compare==1.0.5 dnspython==2.3.0 email-validator==2.0.0.post1 exceptiongroup==1.1.1 -Flask==2.2.3 -flask-babel==3.1.0 -Flask-FlatPages==0.8.1 -Flask-Gravatar==0.5.0 -Flask-Login==0.6.2 -Flask-Mail==0.9.1 +Flask==3.0.3 +flask-babel==4.0.0 +Flask-FlatPages==0.8.2 +Flask-Login==0.6.3 +Flask-Mail==0.10.0 Flask-Migrate==4.0.4 Flask-SQLAlchemy==3.0.3 -Flask-WTF==1.1.1 +Flask-WTF==1.2.1 git-archive-all==1.23.1 gitdb==4.0.10 GitHub-Flask==3.2.0 @@ -37,7 +36,7 @@ greenlet==2.0.2 gunicorn==20.1.0 idna==3.4 iniconfig==2.0.0 -itsdangerous==2.1.2 +itsdangerous==2.2.0 Jinja2==3.1.2 kombu==5.2.4 libsass==0.22.0 @@ -73,7 +72,7 @@ validators==0.20.0 vine==5.0.0 wcwidth==0.2.6 webencodings==0.5.1 -Werkzeug==2.2.3 +Werkzeug==3.0.3 WTForms==3.0.1 WTForms-SQLAlchemy==0.3 sentry-sdk[flask]==2.0.1 diff --git a/requirements.txt b/requirements.txt index 8afc4379..6051032c 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,5 @@ Flask Flask-FlatPages -Flask-Gravatar Flask-Login Flask-Migrate Flask-SQLAlchemy