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
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:

View File

@@ -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'

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,
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"),