moved manifest to use main theming function

This commit is contained in:
vabene1111
2024-01-14 08:40:05 +08:00
parent 26408c33f4
commit 2ba2b97f9c
3 changed files with 40 additions and 40 deletions

View File

@@ -10,6 +10,10 @@ register = template.Library()
@register.simple_tag @register.simple_tag
def theme_values(request): def theme_values(request):
return get_theming_values(request)
def get_theming_values(request):
space = None space = None
if request.space: if request.space:
space = request.space space = request.space
@@ -17,10 +21,6 @@ def theme_values(request):
with scopes_disabled(): with scopes_disabled():
space = Space.objects.filter(id=UNAUTHENTICATED_THEME_FROM_SPACE).first() space = Space.objects.filter(id=UNAUTHENTICATED_THEME_FROM_SPACE).first()
return get_theming_values(space, request.user)
def get_theming_values(space, user):
themes = { themes = {
UserPreference.BOOTSTRAP: 'themes/bootstrap.min.css', UserPreference.BOOTSTRAP: 'themes/bootstrap.min.css',
UserPreference.FLATLY: 'themes/flatly.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;', 'sticky_nav': 'position: sticky; top: 0; left: 0; z-index: 1000;',
} }
if request.user.is_authenticated:
if user.is_authenticated: if request.user.userpreference.theme in themes:
if user.userpreference.theme in themes: tv['theme'] = static(themes[ request.user.userpreference.theme])
tv['theme'] = static(themes[user.userpreference.theme]) if request.user.userpreference.nav_bg_color:
if user.userpreference.nav_bg_color: tv['nav_bg_color'] = request.user.userpreference.nav_bg_color
tv['nav_bg_color'] = user.userpreference.nav_bg_color if request.user.userpreference.nav_text_color and request.user.userpreference.nav_text_color in nav_text_type_mapping:
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[ request.user.userpreference.nav_text_color]
tv['nav_text_class'] = nav_text_type_mapping[user.userpreference.nav_text_color] if not request.user.userpreference.nav_sticky:
if not user.userpreference.nav_sticky:
tv['sticky_nav'] = '' tv['sticky_nav'] = ''
if space: if space:

View File

@@ -1,19 +1,24 @@
from django.contrib import auth from django.contrib import auth
from django.templatetags.static import static from django.templatetags.static import static
from django.test import RequestFactory
from cookbook.models import Space, UserPreference, UserFile from cookbook.models import Space, UserPreference, UserFile
from cookbook.templatetags.theming_tags import theme_values, get_theming_values from cookbook.templatetags.theming_tags import theme_values, get_theming_values
def test_theming_function(space_1, u1_s1): 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') # uf = UserFile.objects.create(name='test', space=space_1, created_by=user) #TODO add file tests
assert get_theming_values(space_1, user)['nav_bg_color'] == '#ddbf86' user = auth.get_user(u1_s1)
assert get_theming_values(space_1, user)['nav_text_class'] == 'navbar-light' request = RequestFactory()
assert get_theming_values(space_1, user)['nav_logo'] == static('assets/brand_logo.png') request.user = auth.get_user(u1_s1)
assert get_theming_values(space_1, user)['sticky_nav'] == 'position: sticky; top: 0; left: 0; z-index: 1000;' 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.theme = UserPreference.TANDOOR_DARK
user.userpreference.nav_bg_color = '#ffffff' 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.nav_sticky = False
user.userpreference.save() user.userpreference.save()
assert get_theming_values(space_1, user)['theme'] == static('themes/tandoor_dark.min.css') assert get_theming_values(request)['theme'] == static('themes/tandoor_dark.min.css')
assert get_theming_values(space_1, user)['nav_bg_color'] == '#ffffff' assert get_theming_values(request)['nav_bg_color'] == '#ffffff'
assert get_theming_values(space_1, user)['nav_text_class'] == 'navbar-dark' assert get_theming_values(request)['nav_text_class'] == 'navbar-dark'
assert get_theming_values(space_1, user)['sticky_nav'] == '' assert get_theming_values(request)['sticky_nav'] == ''
space_1.space_theme = Space.BOOTSTRAP space_1.space_theme = Space.BOOTSTRAP
space_1.nav_bg_color = '#000000' space_1.nav_bg_color = '#000000'
space_1.nav_text_color = UserPreference.DARK space_1.nav_text_color = UserPreference.DARK
space_1.save() space_1.save()
assert get_theming_values(space_1, user)['theme'] == static('themes/bootstrap.min.css') assert get_theming_values(request)['theme'] == static('themes/bootstrap.min.css')
assert get_theming_values(space_1, user)['nav_bg_color'] == '#000000' assert get_theming_values(request)['nav_bg_color'] == '#000000'
assert get_theming_values(space_1, user)['nav_text_class'] == 'navbar-light' assert get_theming_values(request)['nav_text_class'] == 'navbar-light'

View File

@@ -31,6 +31,7 @@ from cookbook.helper.permission_helper import (group_required, has_group_permiss
from cookbook.models import (Comment, CookLog, InviteLink, SearchFields, SearchPreference, from cookbook.models import (Comment, CookLog, InviteLink, SearchFields, SearchPreference,
ShareLink, Space, UserSpace, ViewLog) ShareLink, Space, UserSpace, ViewLog)
from cookbook.tables import CookLogTable, ViewLogTable from cookbook.tables import CookLogTable, ViewLogTable
from cookbook.templatetags.theming_tags import get_theming_values
from cookbook.version_info import VERSION_INFO from cookbook.version_info import VERSION_INFO
from recipes.settings import PLUGINS, BASE_DIR from recipes.settings import PLUGINS, BASE_DIR
@@ -481,18 +482,13 @@ def report_share_abuse(request, token):
def web_manifest(request): def web_manifest(request):
icons = [ theme_values = get_theming_values(request)
{"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"}
]
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 = [
icons = [ {"src": theme_values['logo_color_svg'], "sizes": "any"},
{"src": request.space.logo_color_svg.file.url, "sizes": "any"}, {"src": theme_values['logo_color_144'], "type": "image/png", "sizes": "144x144"},
{"src": request.space.logo_color_144.file.url, "type": "image/png", "sizes": "144x144"}, {"src": theme_values['logo_color_512'], "type": "image/png", "sizes": "512x512"}
{"src": request.space.logo_color_512.file.url, "type": "image/png", "sizes": "512x512"} ]
]
manifest_info = { manifest_info = {
"name": "Tandoor Recipes", "name": "Tandoor Recipes",
@@ -500,10 +496,10 @@ def web_manifest(request):
"description": _("Manage recipes, shopping list, meal plans and more."), "description": _("Manage recipes, shopping list, meal plans and more."),
"icons": icons, "icons": icons,
"start_url": "./search", "start_url": "./search",
"background_color": "#ffcb76", "background_color": theme_values['nav_bg_color'],
"display": "standalone", "display": "standalone",
"scope": ".", "scope": ".",
"theme_color": "#ffcb76", "theme_color": theme_values['nav_bg_color'],
"shortcuts": [ "shortcuts": [
{ {
"name": _("Plan"), "name": _("Plan"),