From bbb70c93d92a73e46d5fa2c867b307cf2051f598 Mon Sep 17 00:00:00 2001 From: ErikKalkoken Date: Sat, 6 Jun 2020 17:59:23 +0200 Subject: [PATCH] Initial --- .../groupmanagement/context_processors.py | 5 ---- .../groupmanagement/templatetags/__init__.py | 0 .../templatetags/groupmanagement.py | 15 +++++++++++ .../groupmanagement/tests/test_admin.py | 18 +++++-------- .../tests/test_templatetags.py | 27 +++++++++++++++++++ .../project_name/settings/base.py | 3 +-- .../templates/allianceauth/side-menu.html | 4 ++- 7 files changed, 53 insertions(+), 19 deletions(-) delete mode 100644 allianceauth/groupmanagement/context_processors.py create mode 100644 allianceauth/groupmanagement/templatetags/__init__.py create mode 100644 allianceauth/groupmanagement/templatetags/groupmanagement.py create mode 100644 allianceauth/groupmanagement/tests/test_templatetags.py diff --git a/allianceauth/groupmanagement/context_processors.py b/allianceauth/groupmanagement/context_processors.py deleted file mode 100644 index 5e1d9fbd..00000000 --- a/allianceauth/groupmanagement/context_processors.py +++ /dev/null @@ -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)} diff --git a/allianceauth/groupmanagement/templatetags/__init__.py b/allianceauth/groupmanagement/templatetags/__init__.py new file mode 100644 index 00000000..e69de29b diff --git a/allianceauth/groupmanagement/templatetags/groupmanagement.py b/allianceauth/groupmanagement/templatetags/groupmanagement.py new file mode 100644 index 00000000..f5084b7e --- /dev/null +++ b/allianceauth/groupmanagement/templatetags/groupmanagement.py @@ -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) diff --git a/allianceauth/groupmanagement/tests/test_admin.py b/allianceauth/groupmanagement/tests/test_admin.py index 387eb6df..a7ee6ace 100644 --- a/allianceauth/groupmanagement/tests/test_admin.py +++ b/allianceauth/groupmanagement/tests/test_admin.py @@ -11,11 +11,7 @@ from allianceauth.eveonline.models import ( EveCharacter, EveCorporationInfo, EveAllianceInfo ) -from ..admin import ( - HasLeaderFilter, - GroupAdmin, - Group -) +from ..admin import HasLeaderFilter, GroupAdmin, Group from . import get_admin_change_view_url if 'allianceauth.eveonline.autogroups' in settings.INSTALLED_APPS: @@ -219,8 +215,8 @@ class TestGroupAdmin(TestCase): """create autogroups for corps and alliances""" if _has_auto_groups: autogroups_config = AutogroupsConfig( - corp_groups = True, - alliance_groups = True + corp_groups=True, + alliance_groups=True ) autogroups_config.save() for state in State.objects.all(): @@ -277,7 +273,7 @@ class TestGroupAdmin(TestCase): if _has_auto_groups: @patch(MODULE_PATH + '._has_auto_groups', True) - def test_properties_6(self): + def test_properties_7(self): self._create_autogroups() expected = ['Auto Group'] my_group = Group.objects\ @@ -337,8 +333,8 @@ class TestGroupAdmin(TestCase): changelist = my_modeladmin.get_changelist_instance(request) queryset = changelist.get_queryset(request) expected = Group.objects.exclude( - managedalliancegroup__isnull=True, - managedcorpgroup__isnull=True + managedalliancegroup__isnull=True, + managedcorpgroup__isnull=True ) self.assertSetEqual(set(queryset), set(expected)) @@ -394,4 +390,4 @@ class TestGroupAdmin(TestCase): c = Client() c.login(username='superuser', password='secret') response = c.get(get_admin_change_view_url(self.group_1)) - self.assertEqual(response.status_code, 200) \ No newline at end of file + self.assertEqual(response.status_code, 200) diff --git a/allianceauth/groupmanagement/tests/test_templatetags.py b/allianceauth/groupmanagement/tests/test_templatetags.py new file mode 100644 index 00000000..f85090ec --- /dev/null +++ b/allianceauth/groupmanagement/tests/test_templatetags.py @@ -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) diff --git a/allianceauth/project_template/project_name/settings/base.py b/allianceauth/project_template/project_name/settings/base.py index c9a45b6f..97a0bc3e 100644 --- a/allianceauth/project_template/project_name/settings/base.py +++ b/allianceauth/project_template/project_name/settings/base.py @@ -103,8 +103,7 @@ TEMPLATES = [ 'django.template.context_processors.media', 'django.template.context_processors.static', 'django.template.context_processors.tz', - 'allianceauth.notifications.context_processors.user_notification_count', - 'allianceauth.groupmanagement.context_processors.can_manage_groups', + 'allianceauth.notifications.context_processors.user_notification_count', 'allianceauth.context_processors.auth_settings', ], }, diff --git a/allianceauth/templates/allianceauth/side-menu.html b/allianceauth/templates/allianceauth/side-menu.html index bef3d097..587f791c 100644 --- a/allianceauth/templates/allianceauth/side-menu.html +++ b/allianceauth/templates/allianceauth/side-menu.html @@ -1,6 +1,8 @@ {% load i18n %} {% load navactive %} {% load menu_items %} +{% load groupmanagement %} +