signals.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536
  1. from django.contrib.auth.models import User
  2. from django.core.mail import send_mail
  3. from django.db.models import signals
  4. from website.settings import *
  5. def post_user_save(sender, instance: User, *args, **kwargs):
  6. #oldUser: User = User.objects.get(id=instance.id)
  7. #print(oldUser.get_all_permissions(), args, kwargs)
  8. #if instance.get_all_permissions() != oldUser.get_all_permissions():
  9. perm_list = []
  10. if instance.has_perm("stammbaum.view"):
  11. perm_list.append("Du darfst den gesamten Stammbaum ansehen.")
  12. if instance.has_perm("stammbaum.upload_image"):
  13. perm_list.append("Du darfst Bilder für Personen im Stammbaum hochladen.")
  14. if instance.is_staff and instance.has_perm("stammbaum.change_person"):
  15. perm_list.append("Du darfst Personen im Stammbaum bearbeiten.")
  16. if instance.is_staff and instance.has_perm("stammbaum.add_person"):
  17. perm_list.append("Du darfst Personen zum Stammbaum hinzufügen.")
  18. if instance.is_staff and instance.has_perm("stammbaum.add_group"):
  19. perm_list.append("Du darfst deinen eigenen Stammbaum hinzufügen. (Stammbaum bearbeiten -> Gruppe hinzufügen)")
  20. send_mail(
  21. subject='Deine Berechtigungen wurden geändert',
  22. message=f'Hallo {instance.get_full_name()}, \n\n' +
  23. "deine Berechtigungen auf der Stammbaum-Webseite wurden gerade angepasst.\n\n" +
  24. "Jetzt hast du folgende Berechtigungen:\n" +
  25. '\n'.join([' - ' + p for p in perm_list]) + '\n\n' +
  26. "LG\nWebsite-Admins\n\n" +
  27. "https://pi.justprojects.de/stammbaum\n" +
  28. f"Login vergessen? Dein Benutzername lautet {instance.username}.",
  29. from_email='stammbaum@justprojects.de',
  30. recipient_list=[instance.email],
  31. fail_silently=False
  32. )
  33. signals.post_save.connect(post_user_save, sender=User, dispatch_uid='post_user_save')