Redirect all signals from admin proxy models.

This commit is contained in:
Adarnof 2018-02-23 14:44:12 -05:00
parent 7a9bb0c84b
commit 814b2da0ca
4 changed files with 64 additions and 27 deletions

View File

@ -3,7 +3,8 @@ from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
from django.contrib.auth.models import User as BaseUser, Permission as BasePermission
from django.utils.text import slugify
from allianceauth.services.hooks import ServicesHook
from django.db.models.signals import pre_save, post_save, pre_delete, post_delete, m2m_changed
from django.dispatch import receiver
from allianceauth.authentication.models import State, get_guest_state, CharacterOwnership, UserProfile
from allianceauth.hooks import get_hooks
@ -155,3 +156,33 @@ try:
finally:
admin.site.register(User, UserAdmin)
admin.site.register(Permission, PermissionAdmin)
@receiver(pre_save, sender=User)
def redirect_pre_save(sender, signal=None, *args, **kwargs):
pre_save.send(BaseUser, *args, **kwargs)
@receiver(post_save, sender=User)
def redirect_post_save(sender, signal=None, *args, **kwargs):
post_save.send(BaseUser, *args, **kwargs)
@receiver(pre_delete, sender=User)
def redirect_pre_delete(sender, signal=None, *args, **kwargs):
pre_delete.send(BaseUser, *args, **kwargs)
@receiver(post_delete, sender=User)
def redirect_post_delete(sender, signal=None, *args, **kwargs):
post_delete.send(BaseUser, *args, **kwargs)
@receiver(m2m_changed, sender=User.groups.through)
def redirect_m2m_changed_groups(sender, signal=None, *args, **kwargs):
m2m_changed.send(BaseUser, *args, **kwargs)
@receiver(m2m_changed, sender=User.user_permissions.through)
def redirect_m2m_changed_permissions(sender, signal=None, *args, **kwargs):
m2m_changed.send(BaseUser, *args, **kwargs)

View File

@ -3,10 +3,9 @@ import logging
from .models import CharacterOwnership, UserProfile, get_guest_state, State
from django.contrib.auth.models import User
from django.db.models import Q
from django.db.models.signals import post_save, pre_delete, m2m_changed, pre_save
from django.db.models.signals import pre_save, post_save, pre_delete, m2m_changed
from django.dispatch import receiver, Signal
from esi.models import Token
from allianceauth.authentication.admin import User as AdminUser
from allianceauth.eveonline.models import EveCharacter
@ -67,6 +66,7 @@ def reassess_on_profile_save(sender, instance, created, *args, **kwargs):
instance.assign_state()
@receiver(post_save, sender=User)
def create_required_models(sender, instance, created, *args, **kwargs):
# ensure all users have a model
if created:
@ -74,10 +74,6 @@ def create_required_models(sender, instance, created, *args, **kwargs):
UserProfile.objects.get_or_create(user=instance)
post_save.connect(create_required_models, sender=User)
post_save.connect(create_required_models, sender=AdminUser)
@receiver(post_save, sender=Token)
def record_character_ownership(sender, instance, created, *args, **kwargs):
if created:
@ -132,6 +128,7 @@ def validate_main_character_token(sender, instance, *args, **kwargs):
profile.save()
@receiver(pre_save, sender=User)
def assign_state_on_active_change(sender, instance, *args, **kwargs):
# set to guest state if inactive, assign proper state if reactivated
if instance.pk:
@ -147,10 +144,6 @@ def assign_state_on_active_change(sender, instance, *args, **kwargs):
instance.profile.save(update_fields=['state'])
pre_save.connect(assign_state_on_active_change, sender=User)
pre_save.connect(assign_state_on_active_change, sender=AdminUser)
@receiver(post_save, sender=EveCharacter)
def check_state_on_character_update(sender, instance, *args, **kwargs):
# if this is a main character updating, check that user's state

View File

@ -1,8 +1,8 @@
from django.contrib import admin
from django.contrib.auth.models import Group as BaseGroup
from django.db.models.signals import post_save
from .models import AuthGroup, save_auth_group, create_auth_group
from django.db.models.signals import pre_save, post_save, pre_delete, post_delete, m2m_changed
from django.dispatch import receiver
from .models import AuthGroup
from .models import GroupRequest
@ -29,5 +29,26 @@ admin.site.register(GroupRequest)
admin.site.register(AuthGroup, AuthGroupAdmin)
post_save.connect(create_auth_group, sender=Group)
post_save.connect(save_auth_group, sender=Group)
@receiver(pre_save, sender=Group)
def redirect_pre_save(sender, signal=None, *args, **kwargs):
pre_save.send(BaseGroup, *args, **kwargs)
@receiver(post_save, sender=Group)
def redirect_post_save(sender, signal=None, *args, **kwargs):
post_save.send(BaseGroup, *args, **kwargs)
@receiver(pre_delete, sender=Group)
def redirect_pre_delete(sender, signal=None, *args, **kwargs):
pre_delete.send(BaseGroup, *args, **kwargs)
@receiver(post_delete, sender=Group)
def redirect_post_delete(sender, signal=None, *args, **kwargs):
post_delete.send(BaseGroup, *args, **kwargs)
@receiver(m2m_changed, sender=Group.permissions.through)
def redirect_m2m_changed_permissions(sender, signal=None, *args, **kwargs):
m2m_changed.send(BaseGroup, *args, **kwargs)

View File

@ -8,8 +8,6 @@ from django.db.models.signals import pre_save
from django.dispatch import receiver
from .hooks import ServicesHook
from .tasks import disable_user
from allianceauth.authentication.admin import User as AdminUser
from allianceauth.groupmanagement.admin import Group as AdminGroup
from allianceauth.authentication.models import State, UserProfile
from allianceauth.authentication.signals import state_changed
@ -57,6 +55,7 @@ def m2m_changed_user_permissions(sender, instance, action, *args, **kwargs):
transaction.on_commit(lambda: validate_all_services())
@receiver(m2m_changed, sender=Group.permissions.through)
def m2m_changed_group_permissions(sender, instance, action, pk_set, *args, **kwargs):
logger.debug("Received m2m_changed from group %s permissions with action %s" % (instance, action))
if instance.pk and (action == "post_remove" or action == "post_clear"):
@ -89,10 +88,6 @@ def m2m_changed_group_permissions(sender, instance, action, pk_set, *args, **kwa
logger.debug("Permission change for group {} was not service permission, ignoring".format(instance))
m2m_changed.connect(m2m_changed_group_permissions, sender=Group.permissions.through)
m2m_changed.connect(m2m_changed_group_permissions, sender=AdminGroup.permissions.through)
@receiver(m2m_changed, sender=State.permissions.through)
def m2m_changed_state_permissions(sender, instance, action, pk_set, *args, **kwargs):
logger.debug("Received m2m_changed from state %s permissions with action %s" % (instance, action))
@ -145,6 +140,7 @@ def pre_delete_user(sender, instance, *args, **kwargs):
disable_user(instance)
@receiver(pre_save, sender=User)
def pre_save_user(sender, instance, *args, **kwargs):
logger.debug("Received pre_save from %s" % instance)
# check if user is being marked active/inactive
@ -158,7 +154,3 @@ def pre_save_user(sender, instance, *args, **kwargs):
disable_user(instance)
except User.DoesNotExist:
pass
pre_save.connect(pre_save_user, sender=User)
pre_save.connect(pre_save_user, sender=AdminUser)