From b2a712771052f99e33fac8349a79ba101dd9f3d8 Mon Sep 17 00:00:00 2001 From: gromdimon Date: Tue, 19 Mar 2024 20:09:15 +0100 Subject: [PATCH 1/7] Rebase dev --- .../projectroles/_site_titlebar_dropdown.html | 168 ++++++++++-------- .../templatetags/projectroles_tags.py | 9 +- projectroles/utils.py | 60 ++++++- 3 files changed, 161 insertions(+), 76 deletions(-) diff --git a/projectroles/templates/projectroles/_site_titlebar_dropdown.html b/projectroles/templates/projectroles/_site_titlebar_dropdown.html index 3251a871..da5721b1 100644 --- a/projectroles/templates/projectroles/_site_titlebar_dropdown.html +++ b/projectroles/templates/projectroles/_site_titlebar_dropdown.html @@ -7,47 +7,56 @@ {# Responsive replacement for user dropdown #} {# Admin link #} -{% if request.user.is_superuser %} - -{% endif %} - +{#{% if request.user.is_superuser %}#} +{# #} +{#{% endif %}#} +{##} {# Site-wide apps #} -{% for plugin in site_apps %} - {% has_perm plugin.app_permission request.user as can_view_app %} - {% if not plugin.app_permission or can_view_app %} - - {% endif %} -{% endfor %} - +{#{% for plugin in site_apps %}#} +{# {% has_perm plugin.app_permission request.user as can_view_app %}#} +{# {% if not plugin.app_permission or can_view_app %}#} +{# #} +{# {% endif %}#} +{#{% endfor %}#} +{##} {# Log out link #} -{% if request.user.is_authenticated %} - -{% elif not kiosk_mode %} - #} +{#{% elif not kiosk_mode %}#} +{# #} +{#{% endif %}#} +{% get_user_links request as dropdown_links %} +{% for link in dropdown_links %} + -{% endif %} - +{% endfor %} {# Actual user dropdown #} diff --git a/projectroles/templatetags/projectroles_tags.py b/projectroles/templatetags/projectroles_tags.py index c4862992..126f1d23 100644 --- a/projectroles/templatetags/projectroles_tags.py +++ b/projectroles/templatetags/projectroles_tags.py @@ -8,7 +8,7 @@ from projectroles.app_settings import AppSettingAPI from projectroles.models import RemoteProject, SODAR_CONSTANTS from projectroles.plugins import get_active_plugins -from projectroles.utils import AppLinkContent +from projectroles.utils import UserDropdownContent, AppLinkContent register = template.Library() @@ -270,6 +270,13 @@ def get_admin_warning(): return ret +@register.simple_tag +def get_user_links(request): + """Return user dropdown links""" + user_dropdown_content = UserDropdownContent() + return user_dropdown_content.get_user_links(request) + + @register.simple_tag def get_project_app_links(request, project=None): """Return sidebar links""" diff --git a/projectroles/utils.py b/projectroles/utils.py index 5862b09c..837b74ac 100644 --- a/projectroles/utils.py +++ b/projectroles/utils.py @@ -5,8 +5,9 @@ from django.urls import reverse from django.utils import timezone -from projectroles.models import SODAR_CONSTANTS +from projectroles.constants import get_sodar_constants from projectroles.plugins import get_active_plugins +from projectroles.models import SODAR_CONSTANTS # Settings SECRET_LENGTH = getattr(settings, 'PROJECTROLES_SECRET_LENGTH', 32) @@ -299,3 +300,60 @@ def get_project_app_links(self, request, project=None): } ) return ret + + +class UserDropdownContent: + """Class to generate user dropdown content""" + + def get_user_links(self, request): + links = [] + # Add site-wide apps links + site_apps = get_active_plugins('site_app') + for app in site_apps: + if not app.app_permission or request.user.has_perm( + app.app_permission + ): + links.append( + { + 'name': app.name, + 'url': reverse(app.entry_point_url_id), + 'label': app.title, + 'icon': app.icon, + 'active': request.path + == reverse(app.entry_point_url_id), + } + ) + # Add admin link + if request.user.is_superuser: + links.append( + { + 'name': 'admin', + 'url': reverse('admin:index'), + 'label': 'Django Admin', + 'icon': 'mdi:cogs', + 'active': request.path == reverse('admin:index'), + } + ) + # Add log out link + if request.user.is_authenticated: + links.append( + { + 'name': 'sign-out', + 'url': reverse('logout'), + 'label': 'Logout', + 'icon': 'mdi:logout-variant', + 'active': False, + } + ) + elif not getattr(settings, 'PROJECTROLES_KIOSK_MODE', False): + links.append( + { + 'name': 'sign-in', + 'url': reverse('login'), + 'label': 'Login', + 'icon': 'mdi:login-variant', + 'active': False, + } + ) + print(links) + return links From e6aae935fba7ee15e655d24445bb69f5d5167d8b Mon Sep 17 00:00:00 2001 From: gromdimon Date: Thu, 7 Mar 2024 16:27:17 +0100 Subject: [PATCH 2/7] wip --- .../projectroles/_site_titlebar_dropdown.html | 83 ------------------- projectroles/utils.py | 4 +- 2 files changed, 2 insertions(+), 85 deletions(-) diff --git a/projectroles/templates/projectroles/_site_titlebar_dropdown.html b/projectroles/templates/projectroles/_site_titlebar_dropdown.html index da5721b1..7494b79d 100644 --- a/projectroles/templates/projectroles/_site_titlebar_dropdown.html +++ b/projectroles/templates/projectroles/_site_titlebar_dropdown.html @@ -5,48 +5,6 @@ {% get_django_setting 'PROJECTROLES_KIOSK_MODE' as kiosk_mode %} {# Responsive replacement for user dropdown #} - -{# Admin link #} -{#{% if request.user.is_superuser %}#} -{# #} -{#{% endif %}#} -{##} -{# Site-wide apps #} -{#{% for plugin in site_apps %}#} -{# {% has_perm plugin.app_permission request.user as can_view_app %}#} -{# {% if not plugin.app_permission or can_view_app %}#} -{# #} -{# {% endif %}#} -{#{% endfor %}#} -{##} -{# Log out link #} -{#{% if request.user.is_authenticated %}#} -{# #} -{#{% elif not kiosk_mode %}#} -{# #} -{#{% endif %}#} {% get_user_links request as dropdown_links %} {% for link in dropdown_links %}