diff --git a/djangoldp_notification/models.py b/djangoldp_notification/models.py index 2c5a3d4431e78fca3fffa826f02ade936c303528..980dbfbc75303b76f0582619fdfed292bebe0458 100644 --- a/djangoldp_notification/models.py +++ b/djangoldp_notification/models.py @@ -79,32 +79,42 @@ def send_request(target, object_iri): @receiver(post_save, sender=Notification) def send_email_on_notification(sender, instance, created, **kwargs): if created and instance.summary and settings.JABBER_DEFAULT_HOST and instance.user.email: - try: - who = requests.get(instance.author).json()['name'] or 'Unknown Person' # I've no idea how to handle dead links. - where = requests.get(instance.object).json()['name'] or 'some unknown place' # So let's get to the unknown :) - if(instance.author == instance.object): - where = "has sent you a private message" + try: + if instance.author.startswith(settings.SITE_URL): + who = str(Model.resolve_id(instance.author.replace(settings.SITE_URL,''))) + else: + who = requests.get(instance.author).json()['name'] + except: + who = "Unknown Person" + + try: + if instance.object.startswith(settings.SITE_URL): + where = str(Model.resolve_id(instance.object.replace(settings.SITE_URL,''))) else: - where = "mention you on " + where - html_message = loader.render_to_string( - 'email.html', - { - 'on': settings.JABBER_DEFAULT_HOST, - 'instance': instance, - 'author': who, - 'object': where - } - ) - send_mail( - 'Notification on ' + settings.JABBER_DEFAULT_HOST, - instance.summary, - settings.EMAIL_HOST_USER or "noreply@" + settings.JABBER_DEFAULT_HOST, - [instance.user.email], - fail_silently=True, - html_message=html_message - ) + where = requests.get(instance.object).json()['name'] except: - logging.error('Djangoldp_notifications: Can\'t mail the user') - else: - if created: - raise Exception('Djangoldp_notifications: Misconfiguration, missing JABBER_DEFAULT_HOST or no mail for user found') + where = "Unknown place" + + if(who == where): + where = "has sent you a private message" + else: + where = "mention you on " + where + + html_message = loader.render_to_string( + 'email.html', + { + 'on': settings.JABBER_DEFAULT_HOST, + 'instance': instance, + 'author': who, + 'object': where + } + ) + + send_mail( + 'Notification on ' + settings.JABBER_DEFAULT_HOST, + instance.summary, + settings.EMAIL_HOST_USER or "noreply@" + settings.JABBER_DEFAULT_HOST, + [instance.user.email], + fail_silently=True, + html_message=html_message + )