This commit is contained in:
ErikKalkoken 2020-06-06 17:59:23 +02:00
parent f6e6ba775c
commit bbb70c93d9
7 changed files with 53 additions and 19 deletions

View File

@ -1,5 +0,0 @@
from allianceauth.groupmanagement.managers import GroupManager
def can_manage_groups(request):
return {'can_manage_groups': GroupManager.can_manage_groups(request.user)}

View File

@ -0,0 +1,15 @@
from django import template
from django.contrib.auth.models import User
from allianceauth.groupmanagement.managers import GroupManager
register = template.Library()
@register.filter
def can_manage_groups(user: User) -> bool:
"""returns True if the given user can manage groups. Returns False otherwise."""
if not isinstance(user, User):
return False
return GroupManager.can_manage_groups(user)

View File

@ -11,11 +11,7 @@ from allianceauth.eveonline.models import (
EveCharacter, EveCorporationInfo, EveAllianceInfo EveCharacter, EveCorporationInfo, EveAllianceInfo
) )
from ..admin import ( from ..admin import HasLeaderFilter, GroupAdmin, Group
HasLeaderFilter,
GroupAdmin,
Group
)
from . import get_admin_change_view_url from . import get_admin_change_view_url
if 'allianceauth.eveonline.autogroups' in settings.INSTALLED_APPS: if 'allianceauth.eveonline.autogroups' in settings.INSTALLED_APPS:
@ -277,7 +273,7 @@ class TestGroupAdmin(TestCase):
if _has_auto_groups: if _has_auto_groups:
@patch(MODULE_PATH + '._has_auto_groups', True) @patch(MODULE_PATH + '._has_auto_groups', True)
def test_properties_6(self): def test_properties_7(self):
self._create_autogroups() self._create_autogroups()
expected = ['Auto Group'] expected = ['Auto Group']
my_group = Group.objects\ my_group = Group.objects\

View File

@ -0,0 +1,27 @@
from unittest.mock import patch
from django.test import TestCase
from allianceauth.tests.auth_utils import AuthUtils
from ..templatetags.groupmanagement import can_manage_groups
MODULE_PATH = 'allianceauth.groupmanagement.templatetags.groupmanagement'
@patch(MODULE_PATH + '.GroupManager.can_manage_groups')
class TestCanManageGroups(TestCase):
def setUp(self):
self.user = AuthUtils.create_user('Bruce Wayne')
def test_return_normal_result(self, mock_can_manage_groups):
mock_can_manage_groups.return_value = True
self.assertTrue(can_manage_groups(self.user))
self.assertTrue(mock_can_manage_groups.called)
def test_return_false_if_not_user(self, mock_can_manage_groups):
mock_can_manage_groups.return_value = True
self.assertFalse(can_manage_groups('invalid'))
self.assertFalse(mock_can_manage_groups.called)

View File

@ -104,7 +104,6 @@ TEMPLATES = [
'django.template.context_processors.static', 'django.template.context_processors.static',
'django.template.context_processors.tz', 'django.template.context_processors.tz',
'allianceauth.notifications.context_processors.user_notification_count', 'allianceauth.notifications.context_processors.user_notification_count',
'allianceauth.groupmanagement.context_processors.can_manage_groups',
'allianceauth.context_processors.auth_settings', 'allianceauth.context_processors.auth_settings',
], ],
}, },

View File

@ -1,6 +1,8 @@
{% load i18n %} {% load i18n %}
{% load navactive %} {% load navactive %}
{% load menu_items %} {% load menu_items %}
{% load groupmanagement %}
<div class="col-sm-2 auth-side-navbar" role="navigation"> <div class="col-sm-2 auth-side-navbar" role="navigation">
<div class="collapse navbar-collapse auth-menus-collapse auth-side-navbar-collapse"> <div class="collapse navbar-collapse auth-menus-collapse auth-side-navbar-collapse">
<ul class="nav nav-pills nav-stacked gray-icon-color" id="side-menu"> <ul class="nav nav-pills nav-stacked gray-icon-color" id="side-menu">
@ -16,7 +18,7 @@
</a> </a>
</li> </li>
{% if can_manage_groups %} {% if request.user|can_manage_groups %}
<li> <li>
<a class="{% navactive request 'groupmanagement:management groupmanagement:membership groupmanagement:membership_list' %}" <a class="{% navactive request 'groupmanagement:management groupmanagement:membership groupmanagement:membership_list' %}"
href="{% url 'groupmanagement:management' %}"> href="{% url 'groupmanagement:management' %}">