Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add ajax views for retrieving sidebar and user dropdown links #1420

Merged
Show file tree
Hide file tree
Changes from 7 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
13 changes: 11 additions & 2 deletions projectroles/templatetags/projectroles_tags.py
Original file line number Diff line number Diff line change
Expand Up @@ -274,10 +274,19 @@ def get_admin_warning():
@register.simple_tag
def get_user_links(request):
"""Return user dropdown links"""
return app_links.get_user_links(request)
return app_links.get_user_links(
request.user,
app_name=request.resolver_match.app_name,
url_name=request.resolver_match.url_name,
)


@register.simple_tag
def get_project_app_links(request, project=None):
"""Return sidebar links"""
return app_links.get_project_app_links(request, project)
return app_links.get_project_app_links(
request.user,
project,
app_name=request.resolver_match.app_name,
url_name=request.resolver_match.url_name,
)
96 changes: 95 additions & 1 deletion projectroles/tests/test_permissions_ajax.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@
from projectroles.models import SODAR_CONSTANTS
from projectroles.tests.test_permissions import ProjectPermissionTestBase


# SODAR constants
PROJECT_ROLE_OWNER = SODAR_CONSTANTS['PROJECT_ROLE_OWNER']
PROJECT_ROLE_DELEGATE = SODAR_CONSTANTS['PROJECT_ROLE_DELEGATE']
Expand Down Expand Up @@ -237,6 +236,101 @@ def test_get_category_anon(self):
self.assert_response(self.url_cat, self.anonymous, 401, method='POST')


class TestSidebarContentAjaxView(ProjectPermissionTestBase):
"""Tests for SidebarContentAjaxView permissions"""

def setUp(self):
super().setUp()
self.url = reverse(
'projectroles:ajax_sidebar',
kwargs={'project': self.project.sodar_uuid},
)
self.url_cat = reverse(
'projectroles:ajax_sidebar',
kwargs={'project': self.category.sodar_uuid},
)

def test_get(self):
"""Test SidebarContentAjaxView GET"""
good_users = [
self.superuser,
self.user_owner_cat,
self.user_delegate_cat,
self.user_contributor_cat,
self.user_guest_cat,
self.user_owner,
self.user_delegate,
self.user_contributor,
self.user_guest,
]
bad_users = [self.user_no_roles, self.user_finder_cat, self.anonymous]
mikkonie marked this conversation as resolved.
Show resolved Hide resolved
self.assert_response(self.url, good_users, 200, method='GET')
mikkonie marked this conversation as resolved.
Show resolved Hide resolved
self.assert_response(self.url, bad_users, 403, method='GET')
self.project.set_public()
self.assert_response(self.url, self.user_no_roles, 200, method='GET')
mikkonie marked this conversation as resolved.
Show resolved Hide resolved

@override_settings(PROJECTROLES_ALLOW_ANONYMOUS=True)
def test_get_anon(self):
"""Test GET with anonymous access"""
self.project.set_public()
self.assert_response(self.url, self.anonymous, 200, method='GET')

def test_get_category(self):
"""Test GET with category"""
good_users = [
self.superuser,
self.user_owner_cat,
self.user_delegate_cat,
self.user_contributor_cat,
self.user_guest_cat,
self.user_finder_cat,
self.user_owner,
self.user_delegate,
self.user_contributor,
self.user_guest,
]
bad_users = [self.user_no_roles, self.anonymous]
self.assert_response(self.url_cat, good_users, 200, method='GET')
self.assert_response(self.url_cat, bad_users, 403, method='GET')
self.project.set_public()
self.assert_response(
self.url_cat, self.user_no_roles, 200, method='GET'
)

@override_settings(PROJECTROLES_ALLOW_ANONYMOUS=True)
def test_get_category_anon(self):
"""Test GET with category and anonymous access"""
self.project.set_public()
self.assert_response(self.url_cat, self.anonymous, 200, method='GET')


class TestUserDropdownContentAjaxView(ProjectPermissionTestBase):
"""Tests for UserDropdownContentAjaxView permissions"""

def setUp(self):
super().setUp()
self.url = reverse('projectroles:ajax_user_dropdown')

def test_get(self):
"""Test UserDropdownContentAjaxView GET"""
good_users = [
self.superuser,
self.user_owner_cat,
self.user_delegate_cat,
self.user_contributor_cat,
self.user_guest_cat,
self.user_owner,
self.user_delegate,
self.user_contributor,
self.user_guest,
self.user_finder_cat,
self.user_no_roles,
]
bad_users = [self.anonymous]
self.assert_response(self.url, good_users, 200, method='GET')
self.assert_response(self.url, bad_users, 403, method='GET')


class TestUserAjaxViews(ProjectPermissionTestBase):
"""Tests for user Ajax view permissions"""

Expand Down
Loading
Loading