mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-09 12:30:15 +02:00
Merge branch 'fix-leave-tab-for-autoleave' into 'master'
Fix leave tab for autoleave See merge request allianceauth/allianceauth!1536
This commit is contained in:
commit
1544f097e0
@ -1,8 +1,7 @@
|
|||||||
from typing import Set
|
from typing import Set
|
||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib.auth.models import Group
|
from django.contrib.auth.models import Group, User
|
||||||
from django.contrib.auth.models import User
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.utils.timezone import now
|
from django.utils.timezone import now
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
@ -14,7 +13,7 @@ from allianceauth.notifications import notify
|
|||||||
class GroupRequest(models.Model):
|
class GroupRequest(models.Model):
|
||||||
"""Request from a user for joining or leaving a group."""
|
"""Request from a user for joining or leaving a group."""
|
||||||
|
|
||||||
leave_request = models.BooleanField(default=0)
|
leave_request = models.BooleanField(default=False)
|
||||||
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
user = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||||
group = models.ForeignKey(Group, on_delete=models.CASCADE)
|
group = models.ForeignKey(Group, on_delete=models.CASCADE)
|
||||||
|
|
||||||
@ -49,7 +48,7 @@ class RequestLog(models.Model):
|
|||||||
request_type = models.BooleanField(null=True)
|
request_type = models.BooleanField(null=True)
|
||||||
group = models.ForeignKey(Group, on_delete=models.CASCADE)
|
group = models.ForeignKey(Group, on_delete=models.CASCADE)
|
||||||
request_info = models.CharField(max_length=254)
|
request_info = models.CharField(max_length=254)
|
||||||
action = models.BooleanField(default=0)
|
action = models.BooleanField(default=False)
|
||||||
request_actor = models.ForeignKey(User, on_delete=models.CASCADE)
|
request_actor = models.ForeignKey(User, on_delete=models.CASCADE)
|
||||||
date = models.DateTimeField(auto_now_add=True)
|
date = models.DateTimeField(auto_now_add=True)
|
||||||
|
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
</a>
|
</a>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
{% if not auto_leave %}
|
{% if not show_leave_tab %}
|
||||||
<li>
|
<li>
|
||||||
<a data-toggle="tab" href="#leave">
|
<a data-toggle="tab" href="#leave">
|
||||||
{% translate "Leave Requests" %}
|
{% translate "Leave Requests" %}
|
||||||
@ -102,7 +102,7 @@
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
{% if not auto_leave %}
|
{% if not show_leave_tab %}
|
||||||
<div id="leave" class="tab-pane">
|
<div id="leave" class="tab-pane">
|
||||||
{% if leaverequests %}
|
{% if leaverequests %}
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
from django.test import RequestFactory, TestCase, override_settings
|
from django.test import RequestFactory, TestCase, override_settings
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
|
|
||||||
|
from allianceauth.groupmanagement.models import Group, GroupRequest
|
||||||
from allianceauth.tests.auth_utils import AuthUtils
|
from allianceauth.tests.auth_utils import AuthUtils
|
||||||
|
|
||||||
from .. import views
|
from .. import views
|
||||||
@ -16,6 +17,7 @@ class TestViews(TestCase):
|
|||||||
self.factory = RequestFactory()
|
self.factory = RequestFactory()
|
||||||
self.user = AuthUtils.create_user('Peter Parker')
|
self.user = AuthUtils.create_user('Peter Parker')
|
||||||
self.user_with_manage_permission = AuthUtils.create_user('Bruce Wayne')
|
self.user_with_manage_permission = AuthUtils.create_user('Bruce Wayne')
|
||||||
|
self.group = Group.objects.create(name="Example group")
|
||||||
|
|
||||||
# set permissions
|
# set permissions
|
||||||
AuthUtils.add_permission_to_user_by_name(
|
AuthUtils.add_permission_to_user_by_name(
|
||||||
@ -83,3 +85,19 @@ class TestViews(TestCase):
|
|||||||
self.assertEqual(response.status_code, 200)
|
self.assertEqual(response.status_code, 200)
|
||||||
self.assertNotIn('<a data-toggle="tab" href="#leave">', content)
|
self.assertNotIn('<a data-toggle="tab" href="#leave">', content)
|
||||||
self.assertNotIn('<div id="leave" class="tab-pane">', content)
|
self.assertNotIn('<div id="leave" class="tab-pane">', content)
|
||||||
|
|
||||||
|
@override_settings(GROUPMANAGEMENT_AUTO_LEAVE=True)
|
||||||
|
def test_should_not_hide_leave_requests_tab_when_there_are_open_requests(self):
|
||||||
|
# given
|
||||||
|
request = self.factory.get(reverse('groupmanagement:management'))
|
||||||
|
request.user = self.user_with_manage_permission
|
||||||
|
GroupRequest.objects.create(user=self.user, group=self.group, leave_request=True)
|
||||||
|
|
||||||
|
# when
|
||||||
|
response = views.group_management(request)
|
||||||
|
|
||||||
|
# then
|
||||||
|
content = response_content_to_str(response)
|
||||||
|
self.assertEqual(response.status_code, 200)
|
||||||
|
self.assertIn('<a data-toggle="tab" href="#leave">', content)
|
||||||
|
self.assertIn('<div id="leave" class="tab-pane">', content)
|
||||||
|
@ -2,13 +2,12 @@ import logging
|
|||||||
|
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required, user_passes_test
|
||||||
from django.contrib.auth.decorators import user_passes_test
|
|
||||||
from django.contrib.auth.models import Group
|
from django.contrib.auth.models import Group
|
||||||
from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
|
from django.core.exceptions import ObjectDoesNotExist, PermissionDenied
|
||||||
from django.db.models import Count
|
from django.db.models import Count
|
||||||
from django.http import Http404
|
from django.http import Http404
|
||||||
from django.shortcuts import render, redirect, get_object_or_404
|
from django.shortcuts import get_object_or_404, redirect, render
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
|
|
||||||
from allianceauth.notifications import notify
|
from allianceauth.notifications import notify
|
||||||
@ -16,7 +15,6 @@ from allianceauth.notifications import notify
|
|||||||
from .managers import GroupManager
|
from .managers import GroupManager
|
||||||
from .models import GroupRequest, RequestLog
|
from .models import GroupRequest, RequestLog
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@ -45,10 +43,15 @@ def group_management(request):
|
|||||||
logger.debug("Providing user {} with {} acceptrequests and {} leaverequests.".format(
|
logger.debug("Providing user {} with {} acceptrequests and {} leaverequests.".format(
|
||||||
request.user, len(acceptrequests), len(leaverequests)))
|
request.user, len(acceptrequests), len(leaverequests)))
|
||||||
|
|
||||||
|
show_leave_tab = (
|
||||||
|
getattr(settings, 'GROUPMANAGEMENT_AUTO_LEAVE', False)
|
||||||
|
and not GroupRequest.objects.filter(leave_request=True).exists()
|
||||||
|
)
|
||||||
|
|
||||||
render_items = {
|
render_items = {
|
||||||
'acceptrequests': acceptrequests,
|
'acceptrequests': acceptrequests,
|
||||||
'leaverequests': leaverequests,
|
'leaverequests': leaverequests,
|
||||||
'auto_leave': getattr(settings, 'GROUPMANAGEMENT_AUTO_LEAVE', False),
|
'show_leave_tab': show_leave_tab,
|
||||||
}
|
}
|
||||||
|
|
||||||
return render(request, 'groupmanagement/index.html', context=render_items)
|
return render(request, 'groupmanagement/index.html', context=render_items)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user