mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2026-01-03 13:19:16 -05:00
test for theming function + sticky nav
This commit is contained in:
@@ -78,7 +78,7 @@
|
||||
|
||||
<nav class="navbar navbar-expand-lg {{ theme_values.nav_text_class }}"
|
||||
id="id_main_nav"
|
||||
style="{% sticky_nav request %}; background-color: {{ theme_values.nav_bg_color }}">
|
||||
style="{{ theme_values.sticky_nav }}; background-color: {{ theme_values.nav_bg_color }}">
|
||||
|
||||
{% if not request.user.userpreference.left_handed %}
|
||||
{% if not request.user.is_authenticated or request.user.userpreference.nav_show_logo %}
|
||||
|
||||
@@ -10,6 +10,17 @@ register = template.Library()
|
||||
|
||||
@register.simple_tag
|
||||
def theme_values(request):
|
||||
space = None
|
||||
if request.space:
|
||||
space = request.space
|
||||
if not request.user.is_authenticated and UNAUTHENTICATED_THEME_FROM_SPACE > 0:
|
||||
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',
|
||||
@@ -34,21 +45,19 @@ def theme_values(request):
|
||||
'nav_logo': static('assets/brand_logo.png'),
|
||||
'nav_bg_color': '#ddbf86',
|
||||
'nav_text_class': 'navbar-light',
|
||||
'sticky_nav': 'position: sticky; top: 0; left: 0; z-index: 1000;',
|
||||
}
|
||||
space = None
|
||||
if request.space:
|
||||
space = request.space
|
||||
if not request.user.is_authenticated and UNAUTHENTICATED_THEME_FROM_SPACE > 0:
|
||||
with scopes_disabled():
|
||||
space = Space.objects.filter(id=UNAUTHENTICATED_THEME_FROM_SPACE).first()
|
||||
|
||||
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'] = request.user.userpreference.nav_text_color
|
||||
|
||||
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:
|
||||
tv['sticky_nav'] = ''
|
||||
|
||||
if space:
|
||||
for logo in list(tv.keys()):
|
||||
@@ -65,12 +74,3 @@ def theme_values(request):
|
||||
if space.nav_text_color and space.nav_text_color in nav_text_type_mapping:
|
||||
tv['nav_text_class'] = nav_text_type_mapping[space.nav_text_color]
|
||||
return tv
|
||||
|
||||
|
||||
@register.simple_tag
|
||||
def sticky_nav(request):
|
||||
if (not request.user.is_authenticated and STICKY_NAV_PREF_DEFAULT) or (
|
||||
request.user.is_authenticated and request.user.userpreference.nav_sticky):
|
||||
return 'position: sticky; top: 0; left: 0; z-index: 1000;'
|
||||
else:
|
||||
return ''
|
||||
|
||||
36
cookbook/tests/other/test_theming.py
Normal file
36
cookbook/tests/other/test_theming.py
Normal file
@@ -0,0 +1,36 @@
|
||||
from django.contrib import auth
|
||||
from django.templatetags.static import static
|
||||
|
||||
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;'
|
||||
|
||||
user.userpreference.theme = UserPreference.TANDOOR_DARK
|
||||
user.userpreference.nav_bg_color = '#ffffff'
|
||||
user.userpreference.nav_text_color = UserPreference.LIGHT
|
||||
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'] == ''
|
||||
|
||||
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'
|
||||
Reference in New Issue
Block a user