Skip to content

Commit fd1d294

Browse files
author
David Farrington
committed
test
1 parent e5fafe2 commit fd1d294

File tree

3 files changed

+137
-18
lines changed

3 files changed

+137
-18
lines changed

jazzmin/utils.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,16 @@ def get_view_permissions(user: AbstractUser) -> Set[str]:
150150
lower_perms = []
151151
for perm in perms:
152152
app, perm_codename = perm.split(".")
153+
<<<<<<< HEAD
153154
lower_perms.append("{app}.{perm_codename}".format(app=app, perm_codename=perm_codename.lower()))
155+
=======
156+
lower_perms.append(
157+
"{app}.{perm_codename}".format(
158+
app=app,
159+
perm_codename=perm_codename.lower(),
160+
)
161+
)
162+
>>>>>>> 3ec6d11 (test)
154163
return {x.replace("view_", "") for x in lower_perms if "view" in x or "change" in x}
155164

156165

@@ -208,7 +217,15 @@ def make_menu(
208217
# App links
209218
elif "app" in link and allow_appmenus:
210219
children = [
220+
<<<<<<< HEAD
211221
{"name": child.get("verbose_name", child["name"]), "url": child["url"], "children": None}
222+
=======
223+
{
224+
"name": child.get("verbose_name", child["name"]),
225+
"url": child["url"],
226+
"children": None,
227+
}
228+
>>>>>>> 3ec6d11 (test)
212229
for child in get_app_admin_urls(link["app"], admin_site=admin_site)
213230
if child["model"] in model_permissions
214231
]

tests/test_app/library/settings.py

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,15 +71,25 @@
7171

7272
DATABASES = {
7373
"default": dj_database_url.config(
74-
env="DATABASE_URL", conn_max_age=500, default="sqlite:///{}".format(os.path.join(BASE_DIR, "db.sqlite3")),
74+
env="DATABASE_URL",
75+
conn_max_age=500,
76+
default="sqlite:///{}".format(os.path.join(BASE_DIR, "db.sqlite3")),
7577
)
7678
}
7779

7880
AUTH_PASSWORD_VALIDATORS = [
79-
{"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",},
80-
{"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",},
81-
{"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",},
82-
{"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",},
81+
{
82+
"NAME": "django.contrib.auth.password_validation.UserAttributeSimilarityValidator",
83+
},
84+
{
85+
"NAME": "django.contrib.auth.password_validation.MinimumLengthValidator",
86+
},
87+
{
88+
"NAME": "django.contrib.auth.password_validation.CommonPasswordValidator",
89+
},
90+
{
91+
"NAME": "django.contrib.auth.password_validation.NumericPasswordValidator",
92+
},
8393
]
8494

8595
LANGUAGE_CODE = "en"
@@ -134,7 +144,11 @@
134144
# Url that gets reversed (Permissions can be added)
135145
{"name": "Home", "url": "admin:index", "permissions": ["auth.view_user"]},
136146
# external url that opens in a new window (Permissions can be added)
137-
{"name": "Support", "url": "https://github.com/farridav/django-jazzmin/issues", "new_window": True,},
147+
{
148+
"name": "Support",
149+
"url": "https://github.com/farridav/django-jazzmin/issues",
150+
"new_window": True,
151+
},
138152
# model admin to link to (Permissions checked against model)
139153
{"model": "auth.User"},
140154
# App with dropdown menu to all its models pages (Permissions checked against models)
@@ -146,7 +160,11 @@
146160
#############
147161
# Additional links to include in the user menu on the top right ('app' url type is not allowed)
148162
"usermenu_links": [
149-
{"name": "Support", "url": "https://github.com/farridav/django-jazzmin/issues", "new_window": True,},
163+
{
164+
"name": "Support",
165+
"url": "https://github.com/farridav/django-jazzmin/issues",
166+
"new_window": True,
167+
},
150168
{"model": "auth.user"},
151169
],
152170
#############

tests/test_jazzmin_menus.py

Lines changed: 95 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
import pytest
22
from django.contrib.admin import site
3-
from django.template import Context
43
from django.urls import reverse
54

65
from jazzmin.templatetags.jazzmin import get_side_menu
@@ -24,10 +23,21 @@ def test_side_menu(admin_client, settings):
2423

2524
assert parse_sidemenu(response) == {
2625
"Administration": ["/en/admin/admin/logentry/"],
27-
"Authentication and Authorization": ["/en/admin/auth/group/", "/en/admin/auth/user/",],
28-
"Books": ["/en/admin/books/author/", "/en/admin/books/book/", "/en/admin/books/genre/",],
26+
"Authentication and Authorization": [
27+
"/en/admin/auth/group/",
28+
"/en/admin/auth/user/",
29+
],
30+
"Books": [
31+
"/en/admin/books/author/",
32+
"/en/admin/books/book/",
33+
"/en/admin/books/genre/",
34+
],
2935
"Global": ["/en/admin/"],
30-
"Loans": ["/make_messages/", "/en/admin/loans/bookloan/", "/en/admin/loans/library/",],
36+
"Loans": [
37+
"/make_messages/",
38+
"/en/admin/loans/bookloan/",
39+
"/en/admin/loans/library/",
40+
],
3141
}
3242

3343
settings.JAZZMIN_SETTINGS = override_jazzmin_settings(hide_models=["auth.user"])
@@ -36,8 +46,16 @@ def test_side_menu(admin_client, settings):
3646
assert parse_sidemenu(response) == {
3747
"Global": ["/en/admin/"],
3848
"Authentication and Authorization": ["/en/admin/auth/group/"],
39-
"Books": ["/en/admin/books/author/", "/en/admin/books/book/", "/en/admin/books/genre/",],
40-
"Loans": ["/make_messages/", "/en/admin/loans/bookloan/", "/en/admin/loans/library/",],
49+
"Books": [
50+
"/en/admin/books/author/",
51+
"/en/admin/books/book/",
52+
"/en/admin/books/genre/",
53+
],
54+
"Loans": [
55+
"/make_messages/",
56+
"/en/admin/loans/bookloan/",
57+
"/en/admin/loans/library/",
58+
],
4159
"Administration": ["/en/admin/admin/logentry/"],
4260
}
4361

@@ -87,7 +105,11 @@ def test_top_menu(admin_client, settings):
87105
settings.JAZZMIN_SETTINGS = override_jazzmin_settings(
88106
topmenu_links=[
89107
{"name": "Home", "url": "admin:index", "permissions": ["auth.view_user"]},
90-
{"name": "Support", "url": "https://github.com/farridav/django-jazzmin/issues", "new_window": True,},
108+
{
109+
"name": "Support",
110+
"url": "https://github.com/farridav/django-jazzmin/issues",
111+
"new_window": True,
112+
},
91113
{"model": "auth.User"},
92114
{"app": "books"},
93115
]
@@ -97,7 +119,10 @@ def test_top_menu(admin_client, settings):
97119

98120
assert parse_topmenu(response) == [
99121
{"name": "Home", "link": "/en/admin/"},
100-
{"name": "Support", "link": "https://github.com/farridav/django-jazzmin/issues",},
122+
{
123+
"name": "Support",
124+
"link": "https://github.com/farridav/django-jazzmin/issues",
125+
},
101126
{"name": "Users", "link": "/en/admin/auth/user/"},
102127
{
103128
"name": "Books",
@@ -139,12 +164,71 @@ def test_user_menu(admin_user, client, settings):
139164
]
140165

141166

142-
def test_custom_menu_grouping(settings, rf):
143-
context = site.each_context(rf)
167+
def test_custom_menu_grouping(admin_user, settings, rf):
168+
"""
169+
When we use a custom menu we get exactly what we ask for
170+
"""
171+
request = rf.request()
172+
request.user = admin_user
173+
context = site.each_context(request)
174+
context.update({"user": admin_user})
175+
144176
settings.JAZZMIN_SETTINGS = override_jazzmin_settings(
145177
custom_menu={"auth": ["books.book"], "arbitrary name": ["auth.user", "auth.group"]}
146178
)
147179

148180
menu = get_side_menu(context)
149181

150-
assert menu == []
182+
assert menu == [
183+
{
184+
"app_label": "auth",
185+
"app_url": "/en/admin/auth/",
186+
"has_module_perms": True,
187+
"icon": "fas fa-users-cog",
188+
"models": [
189+
{
190+
"add_url": "/en/admin/books/book/add/",
191+
"admin_url": "/en/admin/books/book/",
192+
"icon": "fas fa-circle",
193+
"model_str": "auth.book",
194+
"name": "Books",
195+
"object_name": "Book",
196+
"perms": {"add": True, "change": True, "delete": True, "view": True},
197+
"url": "/en/admin/books/book/",
198+
"view_only": False,
199+
}
200+
],
201+
"name": "Authentication and Authorization",
202+
},
203+
{
204+
"app_label": "arbitrary name",
205+
"app_url": None,
206+
"has_module_perms": True,
207+
"icon": "fas fa-chevron-circle-right",
208+
"models": [
209+
{
210+
"add_url": "/en/admin/auth/user/add/",
211+
"admin_url": "/en/admin/auth/user/",
212+
"icon": "fas fa-circle",
213+
"model_str": "arbitrary name.user",
214+
"name": "Users",
215+
"object_name": "User",
216+
"perms": {"add": True, "change": True, "delete": True, "view": True},
217+
"url": "/en/admin/auth/user/",
218+
"view_only": False,
219+
},
220+
{
221+
"add_url": "/en/admin/auth/group/add/",
222+
"admin_url": "/en/admin/auth/group/",
223+
"icon": "fas fa-circle",
224+
"model_str": "arbitrary name.group",
225+
"name": "Groups",
226+
"object_name": "Group",
227+
"perms": {"add": True, "change": True, "delete": True, "view": True},
228+
"url": "/en/admin/auth/group/",
229+
"view_only": False,
230+
},
231+
],
232+
"name": "Arbitrary Name",
233+
},
234+
]

0 commit comments

Comments
 (0)