add barebones theme switcher
This commit is contained in:
		@@ -2,7 +2,7 @@ from flask import Flask, session
 | 
			
		||||
from dotenv import load_dotenv
 | 
			
		||||
from .models import Avatars, Users, PostHistory, Posts
 | 
			
		||||
from .auth import digest
 | 
			
		||||
from .routes.users import is_logged_in, get_active_user
 | 
			
		||||
from .routes.users import is_logged_in, get_active_user, get_prefers_theme
 | 
			
		||||
from .routes.threads import get_post_url
 | 
			
		||||
from .constants import (
 | 
			
		||||
    PermissionLevel, permission_level_string,
 | 
			
		||||
@@ -140,6 +140,7 @@ def create_app():
 | 
			
		||||
    def inject_funcs():
 | 
			
		||||
        return {
 | 
			
		||||
            'get_post_url': get_post_url,
 | 
			
		||||
            'get_prefers_theme': get_prefers_theme,
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    @app.template_filter("ts_datetime")
 | 
			
		||||
 
 | 
			
		||||
@@ -165,6 +165,12 @@ def admin_only(*args, **kwargs):
 | 
			
		||||
    return decorator
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def get_prefers_theme():
 | 
			
		||||
    if not 'theme' in session:
 | 
			
		||||
        return 'style'
 | 
			
		||||
 | 
			
		||||
    return session['theme']
 | 
			
		||||
 | 
			
		||||
@bp.get("/log_in")
 | 
			
		||||
@redirect_if_logged_in(".page", username = lambda: get_active_user().username)
 | 
			
		||||
def log_in():
 | 
			
		||||
@@ -288,6 +294,12 @@ def settings_form(username):
 | 
			
		||||
    # we silently ignore the passed username
 | 
			
		||||
    # and grab the correct user from the session
 | 
			
		||||
    user = get_active_user()
 | 
			
		||||
    theme = request.form.get('theme', default='default')
 | 
			
		||||
    if theme == 'default':
 | 
			
		||||
        if 'theme' in session:
 | 
			
		||||
            session.pop('theme')
 | 
			
		||||
    else:
 | 
			
		||||
        session['theme'] = theme
 | 
			
		||||
    topic_sort_by = request.form.get('topic_sort_by', default='activity')
 | 
			
		||||
    if topic_sort_by == 'activity' or topic_sort_by == 'thread':
 | 
			
		||||
        sort_by = session['sort_by'] = topic_sort_by
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
  {% else %}
 | 
			
		||||
    <title>{{config.SITE_NAME}}</title>
 | 
			
		||||
  {% endif %}
 | 
			
		||||
  <link rel="stylesheet" href="{{ "/static/css/style.css" | cachebust }}">
 | 
			
		||||
  <link rel="stylesheet" href="{{ ("/static/css/%s.css" % get_prefers_theme()) | cachebust }}">
 | 
			
		||||
  <link rel="icon" type="image/png" href="/static/favicon.png">
 | 
			
		||||
</head>
 | 
			
		||||
<body>
 | 
			
		||||
 
 | 
			
		||||
@@ -15,6 +15,11 @@
 | 
			
		||||
    </div>
 | 
			
		||||
  </form>
 | 
			
		||||
  <form method='post'>
 | 
			
		||||
    <label for='theme'>Theme (beta)</label>
 | 
			
		||||
    <select autocomplete='off' id='theme' name='theme'>
 | 
			
		||||
      <option value='default' {{ 'selected' if get_prefers_theme() == 'style' }}>Default</option>
 | 
			
		||||
      <option value='theme-otomotone' {{ 'selected' if get_prefers_theme() == 'theme-otomotone' }}>Otomotone (beta)</option>
 | 
			
		||||
    </select>
 | 
			
		||||
    <label for='topic_sort_by'>Sort threads by:</label>
 | 
			
		||||
    <select id='topic_sort_by' name='topic_sort_by'>
 | 
			
		||||
      <option value='activity' {{ 'selected' if session['sort_by'] == 'activity' else '' }}>Latest activity</option>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user