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:
Ariel Rin 2020-06-11 03:41:31 +00:00
commit 5775a11b4e
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
)
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:
@ -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\

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.tz',
'allianceauth.notifications.context_processors.user_notification_count',
'allianceauth.groupmanagement.context_processors.can_manage_groups',
'allianceauth.context_processors.auth_settings',
],
},

View File

@ -1,6 +1,8 @@
{% load i18n %}
{% load navactive %}
{% load menu_items %}
{% load groupmanagement %}
<div class="col-sm-2 auth-side-navbar" role="navigation">
<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">
@ -16,7 +18,7 @@
</a>
</li>
{% if can_manage_groups %}
{% if request.user|can_manage_groups %}
<li>
<a class="{% navactive request 'groupmanagement:management groupmanagement:membership groupmanagement:membership_list' %}"
href="{% url 'groupmanagement:management' %}">