signals.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. from django.contrib.auth import get_user_model
  2. from django.dispatch import receiver, Signal
  3. delete_user_content = Signal()
  4. username_changed = Signal()
  5. """
  6. Signal handlers
  7. """
  8. @receiver(username_changed)
  9. def handle_name_change(sender, **kwargs):
  10. sender.user_renames.update(changed_by_username=sender.username)
  11. sender.warnings_given.update(giver_username=sender.username,
  12. giver_slug=sender.slug)
  13. sender.warnings_canceled.update(canceler_username=sender.username,
  14. canceler_slug=sender.slug)
  15. from django.db.models.signals import pre_delete
  16. @receiver(pre_delete, sender=get_user_model())
  17. def recache_active_users_list_on_active_user_delete(sender, **kwargs):
  18. from misago.core.cache import cache
  19. from misago.users.activepostersranking import (get_active_posters_ranking,
  20. clear_active_posters_ranking)
  21. for user in get_active_posters_ranking()['users']:
  22. if user == kwargs['instance']:
  23. clear_active_posters_ranking()
  24. from misago.core.signals import secret_key_changed
  25. @receiver(secret_key_changed)
  26. def update_signatures_checksums(sender, **kwargs):
  27. User = get_user_model()
  28. for user in User.objects.iterator():
  29. if user.signature:
  30. new_checksum = make_signature_checksum(user.signature_parsed, user)
  31. user.signature_checksum = new_checksum
  32. user.save(update_fields=['signature_checksum'])