diff --git a/allianceauth/groupmanagement/templates/groupmanagement/index.html b/allianceauth/groupmanagement/templates/groupmanagement/index.html index a65cb776..842ea4bc 100644 --- a/allianceauth/groupmanagement/templates/groupmanagement/index.html +++ b/allianceauth/groupmanagement/templates/groupmanagement/index.html @@ -29,15 +29,18 @@ {% endif %} -
  • - - {% translate "Leave Requests" %} - {% if leaverequests %} - {{ leaverequests|length }} - {% endif %} - -
  • + {% if not auto_leave %} +
  • + + {% translate "Leave Requests" %} + + {% if leaverequests %} + {{ leaverequests|length }} + {% endif %} + +
  • + {% endif %}
    @@ -100,61 +103,63 @@ {% endif %}
    -
    - {% if leaverequests %} -
    - - - - - - - - - - - - {% for leaverequest in leaverequests %} + {% if not auto_leave %} +
    + {% if leaverequests %} +
    +
    {% translate "Character" %}{% translate "Organization" %}{% translate "Group" %}
    + - - - - + + + + - {% endfor %} - -
    - - {% if leaverequest.main_char %} - - {{ leaverequest.main_char.character_name }} - - {% else %} - {{ leaverequest.user.username }} - {% endif %} - - {% if leaverequest.main_char %} - - {{ leaverequest.main_char.corporation_name }} -
    - {{ leaverequest.main_char.alliance_name|default_if_none:"" }} - {% else %} - {% translate "(unknown)" %} - {% endif %} -
    {{ leaverequest.group.name }} - - {% translate "Accept" %} - - - - {% translate "Reject" %} - - {% translate "Character" %}{% translate "Organization" %}{% translate "Group" %}
    -
    - {% else %} -
    {% translate "No group leave requests." %}
    - {% endif %} -
    + + + + {% for leaverequest in leaverequests %} + + + + {% if leaverequest.main_char %} + + {{ leaverequest.main_char.character_name }} + + {% else %} + {{ leaverequest.user.username }} + {% endif %} + + + {% if leaverequest.main_char %} + + {{ leaverequest.main_char.corporation_name }} +
    + {{ leaverequest.main_char.alliance_name|default_if_none:"" }} + {% else %} + {% translate "(unknown)" %} + {% endif %} + + {{ leaverequest.group.name }} + + + {% translate "Accept" %} + + + + {% translate "Reject" %} + + + + {% endfor %} + + + + {% else %} +
    {% translate "No group leave requests." %}
    + {% endif %} + + {% endif %} diff --git a/allianceauth/groupmanagement/tests/test_views.py b/allianceauth/groupmanagement/tests/test_views.py index 0c723ec9..e0c9245b 100644 --- a/allianceauth/groupmanagement/tests/test_views.py +++ b/allianceauth/groupmanagement/tests/test_views.py @@ -1,4 +1,4 @@ -from django.test import RequestFactory, TestCase +from django.test import RequestFactory, TestCase, override_settings from django.urls import reverse from allianceauth.tests.auth_utils import AuthUtils @@ -6,14 +6,80 @@ from allianceauth.tests.auth_utils import AuthUtils from .. import views +def response_content_to_str(response) -> str: + return response.content.decode(response.charset) + + class TestViews(TestCase): def setUp(self): self.factory = RequestFactory() - self.user = AuthUtils.create_user('Bruce Wayne') + self.user = AuthUtils.create_user('Peter Parker') + self.user_with_manage_permission = AuthUtils.create_user('Bruce Wayne') + + # set permissions + AuthUtils.add_permission_to_user_by_name( + 'auth.group_management', self.user_with_manage_permission + ) def test_groups_view_can_load(self): request = self.factory.get(reverse('groupmanagement:groups')) request.user = self.user response = views.groups_view(request) self.assertEqual(response.status_code, 200) + + def test_management_view_can_load_for_user_with_permissions(self): + """ + Test if user with management permissions can access the management view + :return: + """ + + request = self.factory.get(reverse('groupmanagement:management')) + request.user = self.user_with_manage_permission + response = views.group_management(request) + self.assertEqual(response.status_code, 200) + + def test_management_view_doesnt_load_for_user_without_permissions(self): + """ + Test if user without management permissions can't access the management view + :return: + """ + + request = self.factory.get(reverse('groupmanagement:management')) + request.user = self.user + response = views.group_management(request) + self.assertEqual(response.status_code, 302) + + @override_settings(GROUPMANAGEMENT_AUTO_LEAVE=False) + def test_leave_requests_tab_visible(self): + """ + Test if the leave requests tab is visible when GROUPMANAGEMENT_AUTO_LEAVE = False + :return: + """ + + request = self.factory.get(reverse('groupmanagement:management')) + request.user = self.user_with_manage_permission + response = views.group_management(request) + + content = response_content_to_str(response) + + self.assertEqual(response.status_code, 200) + self.assertIn('', content) + self.assertIn('
    ', content) + + @override_settings(GROUPMANAGEMENT_AUTO_LEAVE=True) + def test_leave_requests_tab_hidden(self): + """ + Test if the leave requests tab is hidden when GROUPMANAGEMENT_AUTO_LEAVE = True + :return: + """ + + request = self.factory.get(reverse('groupmanagement:management')) + request.user = self.user_with_manage_permission + response = views.group_management(request) + + content = response_content_to_str(response) + + self.assertEqual(response.status_code, 200) + self.assertNotIn('', content) + self.assertNotIn('
    ', content) diff --git a/allianceauth/groupmanagement/views.py b/allianceauth/groupmanagement/views.py index e8d68157..10682636 100755 --- a/allianceauth/groupmanagement/views.py +++ b/allianceauth/groupmanagement/views.py @@ -45,7 +45,11 @@ def group_management(request): logger.debug("Providing user {} with {} acceptrequests and {} leaverequests.".format( request.user, len(acceptrequests), len(leaverequests))) - render_items = {'acceptrequests': acceptrequests, 'leaverequests': leaverequests} + render_items = { + 'acceptrequests': acceptrequests, + 'leaverequests': leaverequests, + 'auto_leave': getattr(settings, 'GROUPMANAGEMENT_AUTO_LEAVE', False), + } return render(request, 'groupmanagement/index.html', context=render_items)