1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import json
- from django.contrib.admin.models import LogEntry, CHANGE
- from django.contrib.auth.models import User
- from django.contrib.contenttypes.models import ContentType
- from django.core.mail import send_mail
- from django.db.models import signals
- from website.settings import *
- def post_log_save(sender, instance: LogEntry, *args, **kwargs):
- if instance.action_flag == CHANGE and instance.change_message:
- ct: ContentType = instance.content_type
- if ct.app_label == "auth" and ct.model == "user":
- user: User = User.objects.get(id=instance.object_id)
- for msg in json.loads(instance.change_message):
- if 'changed' in msg:
- for field in msg['changed']['fields']:
- if field == "Groups" or field == "Staff status" or field == "User permissions":
- send_notification(user)
- return
-
- signals.post_save.connect(post_log_save, sender=LogEntry, dispatch_uid='post_log_save')
- def send_notification(user: User):
- perm_list = []
- if user.has_perm("stammbaum.view"):
- perm_list.append("Du darfst den gesamten Stammbaum ansehen.")
- if user.has_perm("stammbaum.upload_image"):
- perm_list.append("Du darfst Bilder für Personen im Stammbaum hochladen.")
- if user.is_staff and user.has_perm("stammbaum.change_person"):
- perm_list.append("Du darfst Personen im Stammbaum bearbeiten.")
- if user.is_staff and user.has_perm("stammbaum.add_person"):
- perm_list.append("Du darfst Personen zum Stammbaum hinzufügen.")
- if user.is_staff and user.has_perm("stammbaum.add_group"):
- perm_list.append("Du darfst deinen eigenen Stammbaum hinzufügen. (Stammbaum bearbeiten -> Gruppe hinzufügen)")
- send_mail(
- subject='Deine Berechtigungen wurden geändert',
- message=f'Hallo {user.get_full_name()}, \n\n' +
- "deine Berechtigungen auf der Stammbaum-Webseite wurden gerade angepasst.\n\n" +
- "Jetzt hast du folgende Berechtigungen:\n" +
- '\n'.join([' - ' + p for p in perm_list]) + '\n\n' +
- "LG\nWebsite-Admins\n\n" +
- "https://pi.justprojects.de/stammbaum\n" +
- f"Login vergessen? Dein Benutzername lautet {user.username}.",
- from_email='stammbaum@justprojects.de',
- recipient_list=[user.email],
- fail_silently=False
- )
|