mirror of
https://gitlab.com/allianceauth/allianceauth.git
synced 2025-07-12 05:50:16 +02:00
Merge branch 'replace_context_manager_groups' into 'master'
Improve page load performance by replacing groups context manager See merge request allianceauth/allianceauth!1219
This commit is contained in:
commit
5775a11b4e
@ -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)}
|
|
15
allianceauth/groupmanagement/templatetags/groupmanagement.py
Normal file
15
allianceauth/groupmanagement/templatetags/groupmanagement.py
Normal 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)
|
@ -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:
|
||||||
@ -219,8 +215,8 @@ class TestGroupAdmin(TestCase):
|
|||||||
"""create autogroups for corps and alliances"""
|
"""create autogroups for corps and alliances"""
|
||||||
if _has_auto_groups:
|
if _has_auto_groups:
|
||||||
autogroups_config = AutogroupsConfig(
|
autogroups_config = AutogroupsConfig(
|
||||||
corp_groups = True,
|
corp_groups=True,
|
||||||
alliance_groups = True
|
alliance_groups=True
|
||||||
)
|
)
|
||||||
autogroups_config.save()
|
autogroups_config.save()
|
||||||
for state in State.objects.all():
|
for state in State.objects.all():
|
||||||
@ -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\
|
||||||
@ -337,8 +333,8 @@ class TestGroupAdmin(TestCase):
|
|||||||
changelist = my_modeladmin.get_changelist_instance(request)
|
changelist = my_modeladmin.get_changelist_instance(request)
|
||||||
queryset = changelist.get_queryset(request)
|
queryset = changelist.get_queryset(request)
|
||||||
expected = Group.objects.exclude(
|
expected = Group.objects.exclude(
|
||||||
managedalliancegroup__isnull=True,
|
managedalliancegroup__isnull=True,
|
||||||
managedcorpgroup__isnull=True
|
managedcorpgroup__isnull=True
|
||||||
)
|
)
|
||||||
self.assertSetEqual(set(queryset), set(expected))
|
self.assertSetEqual(set(queryset), set(expected))
|
||||||
|
|
||||||
|
27
allianceauth/groupmanagement/tests/test_templatetags.py
Normal file
27
allianceauth/groupmanagement/tests/test_templatetags.py
Normal 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)
|
@ -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',
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
@ -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' %}">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user