From 7b4254da58164de64c17cb3a595e16ead1fbc807 Mon Sep 17 00:00:00 2001 From: rubenwardy Date: Sat, 22 Jan 2022 20:47:43 +0000 Subject: [PATCH] Add locale to user model --- app/__init__.py | 19 +++++++++++++------ app/models/__init__.py | 4 ++-- app/models/users.py | 2 ++ migrations/versions/6e57b2b4dcdf_.py | 24 ++++++++++++++++++++++++ 4 files changed, 41 insertions(+), 8 deletions(-) create mode 100644 migrations/versions/6e57b2b4dcdf_.py diff --git a/app/__init__.py b/app/__init__.py index 92e1169..0a216bf 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -121,16 +121,19 @@ def page_not_found(e): @babel.localeselector def get_locale(): + if not request: + return None + locales = app.config["LANGUAGES"].keys() - if request: - locale = request.cookies.get("locale") - if locale in locales: - return locale + if current_user.is_authenticated and current_user.locale in locales: + return current_user.locale - return request.accept_languages.best_match(locales) + locale = request.cookies.get("locale") + if locale in locales: + return locale - return None + return request.accept_languages.best_match(locales) @app.route("/set-locale/", methods=["POST"]) @@ -152,4 +155,8 @@ def set_locale(): expire_date = expire_date + datetime.timedelta(days=5*365) resp.set_cookie("locale", locale, expires=expire_date) + if current_user.is_authenticated: + current_user.locale = locale + models.db.session.commit() + return resp diff --git a/app/models/__init__.py b/app/models/__init__.py index 3128a38..8b9cfab 100644 --- a/app/models/__init__.py +++ b/app/models/__init__.py @@ -117,8 +117,8 @@ class ForumTopic(db.Model): author_id = db.Column(db.Integer, db.ForeignKey("user.id"), nullable=False) author = db.relationship("User", back_populates="forum_topics") - wip = db.Column(db.Boolean, server_default="0") - discarded = db.Column(db.Boolean, server_default="0") + wip = db.Column(db.Boolean, default=False, nullable=False) + discarded = db.Column(db.Boolean, default=False, nullable=False) type = db.Column(db.Enum(PackageType), nullable=False) title = db.Column(db.String(200), nullable=False) diff --git a/app/models/users.py b/app/models/users.py index a1a1e9b..c294e8e 100644 --- a/app/models/users.py +++ b/app/models/users.py @@ -148,6 +148,8 @@ class User(db.Model, UserMixin): email = db.Column(db.String(255), nullable=True, unique=True) email_confirmed_at = db.Column(db.DateTime(), nullable=True, server_default=None) + locale = db.Column(db.String(10), nullable=True, default="") + # User information profile_pic = db.Column(db.String(255), nullable=True, server_default=None) is_active = db.Column("is_active", db.Boolean, nullable=False, server_default="0") diff --git a/migrations/versions/6e57b2b4dcdf_.py b/migrations/versions/6e57b2b4dcdf_.py new file mode 100644 index 0000000..3566a37 --- /dev/null +++ b/migrations/versions/6e57b2b4dcdf_.py @@ -0,0 +1,24 @@ +"""empty message + +Revision ID: 6e57b2b4dcdf +Revises: 17b303f33f68 +Create Date: 2022-01-22 20:35:25.494712 +""" + +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '6e57b2b4dcdf' +down_revision = '17b303f33f68' +branch_labels = None +depends_on = None + + +def upgrade(): + op.add_column('user', sa.Column('locale', sa.String(length=10), nullable=True)) + + +def downgrade(): + op.drop_column('user', 'locale')