diff --git a/tildes/alembic/versions/347859b0355e_added_account_default_theme_setting.py b/tildes/alembic/versions/347859b0355e_added_account_default_theme_setting.py new file mode 100644 index 0000000..4195207 --- /dev/null +++ b/tildes/alembic/versions/347859b0355e_added_account_default_theme_setting.py @@ -0,0 +1,24 @@ +"""Added account default theme setting + +Revision ID: 347859b0355e +Revises: fab922a8bb04 +Create Date: 2018-08-11 16:23:13.297883 + +""" +from alembic import op +import sqlalchemy as sa + + +# revision identifiers, used by Alembic. +revision = '347859b0355e' +down_revision = 'fab922a8bb04' +branch_labels = None +depends_on = None + + +def upgrade(): + op.add_column('users', sa.Column('theme_account_default', sa.Text(), server_default='', nullable=False)) + + +def downgrade(): + op.drop_column('users', 'theme_account_default') diff --git a/tildes/scss/modules/_form.scss b/tildes/scss/modules/_form.scss index 1c473b3..72b86bf 100644 --- a/tildes/scss/modules/_form.scss +++ b/tildes/scss/modules/_form.scss @@ -38,6 +38,10 @@ select.form-select:not([multiple]) { } } +.form-buttons.no-flex-reverse { + flex-direction: row; +} + textarea.form-input { height: 8rem; line-height: 1.5; diff --git a/tildes/static/js/behaviors/theme-selector.js b/tildes/static/js/behaviors/theme-selector.js index 33f1501..8704863 100644 --- a/tildes/static/js/behaviors/theme-selector.js +++ b/tildes/static/js/behaviors/theme-selector.js @@ -3,6 +3,9 @@ $.onmount('[data-js-theme-selector]', function() { event.preventDefault(); var new_theme = $(this).val(); + var selected_text = $(this).find('option:selected').text() + var $setDefaultLink = $('#button-set-default-theme') + var $formDefaultValue = $('#input-set-default-theme') // persist the new theme for the user in their cookie document.cookie = 'theme=' + new_theme + ';' + @@ -22,5 +25,15 @@ $.onmount('[data-js-theme-selector]', function() { if (new_theme) { $body.addClass('theme-' + new_theme); } + + // set the IC hidden input with the new value + $formDefaultValue.val(new_theme) + + // set visibility of 'Set as account default' link + if (selected_text.indexOf('(account default)') !== -1) { + $setDefaultLink.css('visibility', 'hidden') + } else { + $setDefaultLink.css('visibility', 'visible') + } }); }); diff --git a/tildes/tildes/models/user/user.py b/tildes/tildes/models/user/user.py index 43d2cbf..feee644 100644 --- a/tildes/tildes/models/user/user.py +++ b/tildes/tildes/models/user/user.py @@ -88,6 +88,8 @@ class User(DatabaseModel): Boolean, nullable=False, server_default='false') open_new_tab_text: bool = Column( Boolean, nullable=False, server_default='false') + theme_account_default: str = Column( + Text, nullable=False, server_default='') is_banned: bool = Column(Boolean, nullable=False, server_default='false') is_admin: bool = Column(Boolean, nullable=False, server_default='false') home_default_order: Optional[TopicSortOption] = Column( diff --git a/tildes/tildes/templates/base.jinja2 b/tildes/tildes/templates/base.jinja2 index e299d41..a33cdcb 100644 --- a/tildes/tildes/templates/base.jinja2 +++ b/tildes/tildes/templates/base.jinja2 @@ -38,6 +38,8 @@ {% block body_tag %} {% if request.cookies.get('theme', '') %} + {% elif request.user and request.user.theme_account_default %} + {% else %} {% endif %} diff --git a/tildes/tildes/templates/base_no_sidebar.jinja2 b/tildes/tildes/templates/base_no_sidebar.jinja2 index 728a98a..85e5ae3 100644 --- a/tildes/tildes/templates/base_no_sidebar.jinja2 +++ b/tildes/tildes/templates/base_no_sidebar.jinja2 @@ -3,6 +3,8 @@ {% block body_tag %} {% if request.cookies.get('theme', '') %} + {% elif request.user and request.user.theme_account_default %} + {% else %} {% endif %} diff --git a/tildes/tildes/templates/settings.jinja2 b/tildes/tildes/templates/settings.jinja2 index bd16d7e..19972dc 100644 --- a/tildes/tildes/templates/settings.jinja2 +++ b/tildes/tildes/templates/settings.jinja2 @@ -8,14 +8,36 @@