From 2c7572016df534e9f3f0b36a721296fa31a04f47 Mon Sep 17 00:00:00 2001 From: Bauke Date: Sat, 8 Feb 2020 01:14:03 +0100 Subject: [PATCH] Add setting to choose default comment sort order --- ..._add_comment_sort_order_account_setting.py | 37 +++++++++++++++++++ tildes/tildes/models/user/user.py | 10 ++++- tildes/tildes/templates/settings.jinja2 | 25 +++++++++++++ tildes/tildes/views/api/web/user.py | 16 ++++++++ tildes/tildes/views/settings.py | 12 +++++- tildes/tildes/views/topic.py | 13 +++---- 6 files changed, 104 insertions(+), 9 deletions(-) create mode 100644 tildes/alembic/versions/51a1012f4f63_add_comment_sort_order_account_setting.py diff --git a/tildes/alembic/versions/51a1012f4f63_add_comment_sort_order_account_setting.py b/tildes/alembic/versions/51a1012f4f63_add_comment_sort_order_account_setting.py new file mode 100644 index 0000000..e0908fe --- /dev/null +++ b/tildes/alembic/versions/51a1012f4f63_add_comment_sort_order_account_setting.py @@ -0,0 +1,37 @@ +"""Add comment sort order account setting + +Revision ID: 51a1012f4f63 +Revises: 9b7a7b906956 +Create Date: 2020-02-07 22:38:08.826608 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = "51a1012f4f63" +down_revision = "9b7a7b906956" +branch_labels = None +depends_on = None + + +def upgrade(): + op.execute( + "create type commenttreesortoption as enum('VOTES', 'NEWEST', 'POSTED', 'RELEVANCE')" + ) + op.add_column( + "users", + sa.Column( + "comment_sort_order_default", + postgresql.ENUM( + "VOTES", "NEWEST", "POSTED", "RELEVANCE", name="commenttreesortoption" + ), + nullable=True, + ), + ) + + +def downgrade(): + op.drop_column("users", "comment_sort_order_default") + op.execute("drop type commenttreesortoption") diff --git a/tildes/tildes/models/user/user.py b/tildes/tildes/models/user/user.py index 56d9f1f..c39541b 100644 --- a/tildes/tildes/models/user/user.py +++ b/tildes/tildes/models/user/user.py @@ -30,7 +30,12 @@ from sqlalchemy.ext.hybrid import hybrid_property from sqlalchemy.orm import deferred from sqlalchemy.sql.expression import text -from tildes.enums import CommentLabelOption, HTMLSanitizationContext, TopicSortOption +from tildes.enums import ( + CommentLabelOption, + CommentTreeSortOption, + HTMLSanitizationContext, + TopicSortOption, +) from tildes.lib.database import CIText, TagList from tildes.lib.datetime import utc_now from tildes.lib.hash import hash_string, is_match_for_hash @@ -90,6 +95,9 @@ class User(DatabaseModel): inviter_id: int = Column(Integer, ForeignKey("users.user_id")) invite_codes_remaining: int = Column(Integer, nullable=False, server_default="0") collapse_old_comments: bool = Column(Boolean, nullable=False, server_default="true") + comment_sort_order_default: Optional[CommentTreeSortOption] = Column( + ENUM(CommentTreeSortOption) + ) auto_mark_notifications_read: bool = Column( Boolean, nullable=False, server_default="false" ) diff --git a/tildes/tildes/templates/settings.jinja2 b/tildes/tildes/templates/settings.jinja2 index 2c2680d..597809d 100644 --- a/tildes/tildes/templates/settings.jinja2 +++ b/tildes/tildes/templates/settings.jinja2 @@ -73,6 +73,31 @@

Site behavior settings