From 89e57400275d76357b594b60aa6147d60448f251 Mon Sep 17 00:00:00 2001 From: Adarnof Date: Fri, 23 Mar 2018 11:53:24 -0400 Subject: [PATCH] Update autogroups on main character save Closes #997 --- allianceauth/eveonline/autogroups/models.py | 2 -- allianceauth/eveonline/autogroups/signals.py | 11 +++++++++++ .../eveonline/autogroups/tests/test_signals.py | 7 +++---- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/allianceauth/eveonline/autogroups/models.py b/allianceauth/eveonline/autogroups/models.py index 2a293b70..4863ded9 100644 --- a/allianceauth/eveonline/autogroups/models.py +++ b/allianceauth/eveonline/autogroups/models.py @@ -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): diff --git a/allianceauth/eveonline/autogroups/signals.py b/allianceauth/eveonline/autogroups/signals.py index 85d18c5e..2ef7397b 100644 --- a/allianceauth/eveonline/autogroups/signals.py +++ b/allianceauth/eveonline/autogroups/signals.py @@ -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 diff --git a/allianceauth/eveonline/autogroups/tests/test_signals.py b/allianceauth/eveonline/autogroups/tests/test_signals.py index e7f1f2a9..0ff3aa4c 100644 --- a/allianceauth/eveonline/autogroups/tests/test_signals.py +++ b/allianceauth/eveonline/autogroups/tests/test_signals.py @@ -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)