Skip to content

Commit

Permalink
refactoring changes
Browse files Browse the repository at this point in the history
  • Loading branch information
gromdimon committed Apr 10, 2024
1 parent 5e7b11d commit f8de949
Show file tree
Hide file tree
Showing 4 changed files with 130 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -50,8 +50,8 @@
<a class="dropdown-item {% if link.active %}active{% endif %}
{% if link.name == 'sign-out' %}text-danger{% endif %}
{% if link.name == 'sign-in' %}text-primary{% endif %}"
href="{{ link.url }}"
id="sodar-navbar-link-{{ link.name }}">
href="{{ link.url }}"
id="sodar-navbar-link-{{ link.name }}">
<i class="iconify" data-icon="{{ link.icon }}"></i> {{ link.label }}
</a>
{% endfor %}
Expand Down
6 changes: 3 additions & 3 deletions projectroles/templatetags/projectroles_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 UserDropdownContent, AppLinkContent
from projectroles.utils import AppLinkContent


register = template.Library()
Expand Down Expand Up @@ -273,8 +273,8 @@ def get_admin_warning():
@register.simple_tag
def get_user_links(request):
"""Return user dropdown links"""
user_dropdown_content = UserDropdownContent()
return user_dropdown_content.get_user_links(request)
app_links = AppLinkContent()
return app_links.get_user_links(request)


@register.simple_tag
Expand Down
115 changes: 114 additions & 1 deletion projectroles/tests/test_templatetags.py
Original file line number Diff line number Diff line change
Expand Up @@ -726,7 +726,7 @@ def test_get_sidebar_links_timeline_view(self):
else:
self.assertEqual(app['active'], False)

def test_get_get_user_links_home(self):
def test_get_user_links_home(self):
"""Test get_user_links() on the home view"""
url = reverse('home')
with self.login(self.user):
Expand Down Expand Up @@ -781,6 +781,106 @@ def test_get_get_user_links_home(self):
],
)

def test_get_superuser_links_home(self):
"""Test get_user_links() on the home view as superuser"""
url = reverse('home')
superuser = self.make_user('superuser')
superuser.is_superuser = True
superuser.save()
with self.login(superuser):
request = self.req_factory.get(url)
request.resolver_match = resolve(url)
request.user = superuser
self.assertEqual(
tags.get_user_links(request),
[
{
'name': 'adminalerts',
'url': '/alerts/adm/list',
'label': 'Admin Alerts',
'icon': 'mdi:alert',
'active': False,
},
{
'name': 'appalerts',
'url': '/alerts/app/list',
'label': 'App Alerts',
'icon': 'mdi:alert-octagram',
'active': False,
},
{
'name': 'bgjobs_site',
'url': '/bgjobs/list',
'label': 'Site Background Jobs',
'icon': 'mdi:server',
'active': False,
},
{
'name': 'example_site_app',
'url': '/examples/site/example',
'label': 'Example Site App',
'icon': 'mdi:rocket-launch-outline',
'active': False,
},
{
'name': 'remotesites',
'url': '/project/remote/sites',
'label': 'Remote Site Access',
'icon': 'mdi:cloud-sync',
'active': False,
},
{
'name': 'siteinfo',
'url': '/siteinfo/info',
'label': 'Site Info',
'icon': 'mdi:bar-chart',
'active': False,
},
{
'name': 'timeline_site',
'url': '/timeline/site',
'label': 'Site-Wide Events',
'icon': 'mdi:clock-time-eight-outline',
'active': False,
},
{
'name': 'timeline_site_admin',
'url': '/timeline/site/all',
'label': 'All Timeline Events',
'icon': 'mdi:web-clock',
'active': False,
},
{
'name': 'tokens',
'url': '/tokens/',
'label': 'API Tokens',
'icon': 'mdi:key-chain-variant',
'active': False,
},
{
'name': 'userprofile',
'url': '/user/profile',
'label': 'User Profile',
'icon': 'mdi:account-details',
'active': False,
},
{
'name': 'admin',
'url': '/admin/',
'label': 'Django Admin',
'icon': 'mdi:cogs',
'active': False,
},
{
'name': 'sign-out',
'url': '/logout/',
'label': 'Logout',
'icon': 'mdi:logout-variant',
'active': False,
},
],
)

def test_get_user_links_userprofile(self):
"""Test get_user_links() on the user profile view"""
url = reverse('userprofile:detail')
Expand All @@ -793,3 +893,16 @@ def test_get_user_links_userprofile(self):
self.assertEqual(app['active'], True)
else:
self.assertEqual(app['active'], False)

def test_get_user_links_remote_site(self):
"""Test get_user_links() on the remote site view"""
url = reverse('projectroles:remote_site_create')
with self.login(self.user):
request = self.req_factory.get(url)
request.resolver_match = resolve(url)
request.user = self.user
for app in tags.get_user_links(request):
if app['name'] == 'remote_site_app':
self.assertEqual(app['active'], True)
else:
self.assertEqual(app['active'], False)
23 changes: 11 additions & 12 deletions projectroles/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -300,32 +300,31 @@ def get_project_app_links(self, request, project=None):
)
return ret


class UserDropdownContent:
"""Class for generating application links for the dropdown"""

def get_user_links(self, request):
"""Return user links for the user dropdown"""
links = []
ret = []
# 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(
ret.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),
'active': self._is_active_plugin(
app,
request.resolver_match.app_name,
request.resolver_match.url_name,
),
}
)
# Add admin link
if request.user.is_superuser:
links.append(
ret.append(
{
'name': 'admin',
'url': reverse('admin:index'),
Expand All @@ -336,7 +335,7 @@ def get_user_links(self, request):
)
# Add log out / sign in link
if request.user.is_authenticated:
links.append(
ret.append(
{
'name': 'sign-out',
'url': reverse('logout'),
Expand All @@ -346,7 +345,7 @@ def get_user_links(self, request):
}
)
elif not getattr(settings, 'PROJECTROLES_KIOSK_MODE', False):
links.append(
ret.append(
{
'name': 'sign-in',
'url': reverse('login'),
Expand All @@ -355,4 +354,4 @@ def get_user_links(self, request):
'active': False,
}
)
return links
return ret

0 comments on commit f8de949

Please sign in to comment.