Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 9 additions & 3 deletions openwisp_utils/admin_theme/context_processor.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
from django.apps import registry
from django.conf import settings
from django.contrib.admin import site
from django.urls import reverse

from . import settings as app_settings
Expand Down Expand Up @@ -28,8 +27,15 @@ def build_menu(request=None):
model_class = registry.apps.get_model(app_label, model)
url = reverse('admin:{}_{}_changelist'.format(app_label, model.lower()))
label = item.get('label', model_class._meta.verbose_name_plural)
model_admin = site._registry[model_class]
if not request or model_admin.has_module_permission(request):
has_permission = False
for perm in request.user.get_all_permissions():
try:
obj = perm.split('.', 1)[1].split('_')[1]
if model.lower() == obj:
has_permission = True
except IndexError:
continue
if not request or has_permission:
menu.append({'url': url, 'label': label, 'class': model.lower()})
return menu

Expand Down