From 2ba2b97f9c5045f37aa8a026ef885e7707982ca0 Mon Sep 17 00:00:00 2001 From: vabene1111 Date: Sun, 14 Jan 2024 08:40:05 +0800 Subject: [PATCH] moved manifest to use main theming function --- cookbook/templatetags/theming_tags.py | 25 ++++++++++---------- cookbook/tests/other/test_theming.py | 33 +++++++++++++++------------ cookbook/views/views.py | 22 ++++++++---------- 3 files changed, 40 insertions(+), 40 deletions(-) diff --git a/cookbook/templatetags/theming_tags.py b/cookbook/templatetags/theming_tags.py index fb7e14059..52503f447 100644 --- a/cookbook/templatetags/theming_tags.py +++ b/cookbook/templatetags/theming_tags.py @@ -10,6 +10,10 @@ register = template.Library() @register.simple_tag def theme_values(request): + return get_theming_values(request) + + +def get_theming_values(request): space = None if request.space: space = request.space @@ -17,10 +21,6 @@ def theme_values(request): with scopes_disabled(): space = Space.objects.filter(id=UNAUTHENTICATED_THEME_FROM_SPACE).first() - return get_theming_values(space, request.user) - - -def get_theming_values(space, user): themes = { UserPreference.BOOTSTRAP: 'themes/bootstrap.min.css', UserPreference.FLATLY: 'themes/flatly.min.css', @@ -48,15 +48,14 @@ def get_theming_values(space, user): 'sticky_nav': 'position: sticky; top: 0; left: 0; z-index: 1000;', } - - if user.is_authenticated: - if user.userpreference.theme in themes: - tv['theme'] = static(themes[user.userpreference.theme]) - if user.userpreference.nav_bg_color: - tv['nav_bg_color'] = user.userpreference.nav_bg_color - if user.userpreference.nav_text_color and user.userpreference.nav_text_color in nav_text_type_mapping: - tv['nav_text_class'] = nav_text_type_mapping[user.userpreference.nav_text_color] - if not user.userpreference.nav_sticky: + if request.user.is_authenticated: + if request.user.userpreference.theme in themes: + tv['theme'] = static(themes[ request.user.userpreference.theme]) + if request.user.userpreference.nav_bg_color: + tv['nav_bg_color'] = request.user.userpreference.nav_bg_color + if request.user.userpreference.nav_text_color and request.user.userpreference.nav_text_color in nav_text_type_mapping: + tv['nav_text_class'] = nav_text_type_mapping[ request.user.userpreference.nav_text_color] + if not request.user.userpreference.nav_sticky: tv['sticky_nav'] = '' if space: diff --git a/cookbook/tests/other/test_theming.py b/cookbook/tests/other/test_theming.py index d9aa0189b..1407a6e23 100644 --- a/cookbook/tests/other/test_theming.py +++ b/cookbook/tests/other/test_theming.py @@ -1,19 +1,24 @@ from django.contrib import auth from django.templatetags.static import static +from django.test import RequestFactory from cookbook.models import Space, UserPreference, UserFile from cookbook.templatetags.theming_tags import theme_values, get_theming_values def test_theming_function(space_1, u1_s1): - user = auth.get_user(u1_s1) - # uf = UserFile.objects.create(name='test', space=space_1, created_by=user) #TODO add file tests - assert get_theming_values(space_1, user)['theme'] == static('themes/tandoor.min.css') - assert get_theming_values(space_1, user)['nav_bg_color'] == '#ddbf86' - assert get_theming_values(space_1, user)['nav_text_class'] == 'navbar-light' - assert get_theming_values(space_1, user)['nav_logo'] == static('assets/brand_logo.png') - assert get_theming_values(space_1, user)['sticky_nav'] == 'position: sticky; top: 0; left: 0; z-index: 1000;' + # uf = UserFile.objects.create(name='test', space=space_1, created_by=user) #TODO add file tests + user = auth.get_user(u1_s1) + request = RequestFactory() + request.user = auth.get_user(u1_s1) + request.space = space_1 + + assert get_theming_values(request)['theme'] == static('themes/tandoor.min.css') + assert get_theming_values(request)['nav_bg_color'] == '#ddbf86' + assert get_theming_values(request)['nav_text_class'] == 'navbar-light' + assert get_theming_values(request)['nav_logo'] == static('assets/brand_logo.png') + assert get_theming_values(request)['sticky_nav'] == 'position: sticky; top: 0; left: 0; z-index: 1000;' user.userpreference.theme = UserPreference.TANDOOR_DARK user.userpreference.nav_bg_color = '#ffffff' @@ -21,16 +26,16 @@ def test_theming_function(space_1, u1_s1): user.userpreference.nav_sticky = False user.userpreference.save() - assert get_theming_values(space_1, user)['theme'] == static('themes/tandoor_dark.min.css') - assert get_theming_values(space_1, user)['nav_bg_color'] == '#ffffff' - assert get_theming_values(space_1, user)['nav_text_class'] == 'navbar-dark' - assert get_theming_values(space_1, user)['sticky_nav'] == '' + assert get_theming_values(request)['theme'] == static('themes/tandoor_dark.min.css') + assert get_theming_values(request)['nav_bg_color'] == '#ffffff' + assert get_theming_values(request)['nav_text_class'] == 'navbar-dark' + assert get_theming_values(request)['sticky_nav'] == '' space_1.space_theme = Space.BOOTSTRAP space_1.nav_bg_color = '#000000' space_1.nav_text_color = UserPreference.DARK space_1.save() - assert get_theming_values(space_1, user)['theme'] == static('themes/bootstrap.min.css') - assert get_theming_values(space_1, user)['nav_bg_color'] == '#000000' - assert get_theming_values(space_1, user)['nav_text_class'] == 'navbar-light' + assert get_theming_values(request)['theme'] == static('themes/bootstrap.min.css') + assert get_theming_values(request)['nav_bg_color'] == '#000000' + assert get_theming_values(request)['nav_text_class'] == 'navbar-light' diff --git a/cookbook/views/views.py b/cookbook/views/views.py index 328ea65ec..cedc5a837 100644 --- a/cookbook/views/views.py +++ b/cookbook/views/views.py @@ -31,6 +31,7 @@ from cookbook.helper.permission_helper import (group_required, has_group_permiss from cookbook.models import (Comment, CookLog, InviteLink, SearchFields, SearchPreference, ShareLink, Space, UserSpace, ViewLog) from cookbook.tables import CookLogTable, ViewLogTable +from cookbook.templatetags.theming_tags import get_theming_values from cookbook.version_info import VERSION_INFO from recipes.settings import PLUGINS, BASE_DIR @@ -481,18 +482,13 @@ def report_share_abuse(request, token): def web_manifest(request): - icons = [ - {"src": static("/assets/logo_color.svg"), "sizes": "any"}, - {"src": static("/assets/logo_color144.png"), "type": "image/png", "sizes": "144x144"}, - {"src": static("/assets/logo_color512.png"), "type": "image/png", "sizes": "512x512"} - ] + theme_values = get_theming_values(request) - if request.user.is_authenticated and getattr(request.space, 'logo_color_svg') and getattr(request.space, 'logo_color_144') and getattr(request.space, 'logo_color_512'): - icons = [ - {"src": request.space.logo_color_svg.file.url, "sizes": "any"}, - {"src": request.space.logo_color_144.file.url, "type": "image/png", "sizes": "144x144"}, - {"src": request.space.logo_color_512.file.url, "type": "image/png", "sizes": "512x512"} - ] + icons = [ + {"src": theme_values['logo_color_svg'], "sizes": "any"}, + {"src": theme_values['logo_color_144'], "type": "image/png", "sizes": "144x144"}, + {"src": theme_values['logo_color_512'], "type": "image/png", "sizes": "512x512"} + ] manifest_info = { "name": "Tandoor Recipes", @@ -500,10 +496,10 @@ def web_manifest(request): "description": _("Manage recipes, shopping list, meal plans and more."), "icons": icons, "start_url": "./search", - "background_color": "#ffcb76", + "background_color": theme_values['nav_bg_color'], "display": "standalone", "scope": ".", - "theme_color": "#ffcb76", + "theme_color": theme_values['nav_bg_color'], "shortcuts": [ { "name": _("Plan"),