Update autogroups on main character save

Closes #997
This commit is contained in:
Adarnof 2018-03-23 11:53:24 -04:00
parent 106f6bbcea
commit 89e5740027
3 changed files with 14 additions and 6 deletions

View File

@ -36,8 +36,6 @@ class AutogroupsConfigManager(models.Manager):
:param state: State to update user for
:return:
"""
import traceback
print(traceback.print_stack())
if state is None:
state = user.profile.state
for config in self.filter(states=state):

View File

@ -2,6 +2,7 @@ import logging
from django.dispatch import receiver
from django.db.models.signals import pre_save, post_save, pre_delete, m2m_changed
from allianceauth.authentication.models import UserProfile, State
from allianceauth.eveonline.models import EveCharacter
from .models import AutogroupsConfig
@ -62,3 +63,13 @@ def autogroups_states_changed(sender, instance, action, reverse, model, pk_set,
except State.DoesNotExist:
# Deleted States handled by the profile state change
pass
@receiver(post_save, sender=EveCharacter)
def check_groups_on_character_update(sender, instance, created, *args, **kwargs):
if not created:
try:
profile = UserProfile.objects.prefetch_related('user').get(main_character_id=instance.pk)
AutogroupsConfig.objects.update_groups_for_user(profile.user)
except UserProfile.DoesNotExist:
pass

View File

@ -1,11 +1,11 @@
from django.test import TestCase
from django.contrib.auth.models import Group, User
from django.contrib.auth.models import User
from allianceauth.tests.auth_utils import AuthUtils
from allianceauth.eveonline.models import EveCharacter, EveCorporationInfo, EveAllianceInfo
from ..models import AutogroupsConfig, ManagedAllianceGroup
from ..models import AutogroupsConfig
from . import patch, disconnect_signals, connect_signals
@ -52,8 +52,7 @@ class SignalsTestCase(TestCase):
@patch('.models.AutogroupsConfigManager.update_groups_for_user')
def test_check_groups_on_profile_update_state(self, update_groups_for_user):
# Trigger signal
self.member.profile.state = AuthUtils.get_guest_state()
self.member.profile.save()
self.member.profile.assign_state(state=AuthUtils.get_guest_state())
self.assertTrue(update_groups_for_user.called)
self.assertEqual(update_groups_for_user.call_count, 1)