Send influence notifications to all players involved.
[matthijs/projects/xerxes.git] / influences / notify.py
index 2bf7483d7b805e84e1e65a06e3a58b4de9aae5e6..2e719de41c6f83b539d5a9daa4f4c5c78f0685f9 100644 (file)
@@ -1,16 +1,51 @@
 from django.db.models import signals
 from django.dispatch import dispatcher
-from ee.influences.models import Character,Influence
-from ee.tools.notify import notify
+from django.conf import settings
+from xerxes.influences.models import Character,Influence
+from xerxes.tools.notify import notify
 from django.contrib.auth.models import Group
+from threadedcomments.models import ThreadedComment
 
-def character_saved(instance, created):
-    notify(instance.player, 'influences/email/character_changed', {'character' : instance, 'created' : created})
+def character_saved(**kwargs):
+    instance = kwargs['instance']
+    created  = kwargs['created']
+    if (not settings.DEBUG):
+        notify([instance.player, 'lextalionis@evolution-events.nl'], 'influences/email/character_changed.html', {'character' : instance, 'created' : created})
 
-dispatcher.connect(character_saved, signals.post_save, Character)
+signals.post_save.connect(character_saved, sender=Character)
 
-def influence_saved(instance, created):
-    # TODO: Perhaps only notify when the status is / becomes Done?
-    notify(instance.character.player, 'influences/email/influence_changed', {'influence' : instance, 'created' : created})
+def influence_saved(**kwargs):
+    instance = kwargs['instance']
+    created  = kwargs['created']
+    if (not settings.DEBUG):
+        # TODO: Perhaps only notify when the status is / becomes Done?
+        notify([instance.related_players.keys(), 'lextalionis@evolution-events.nl'], 'influences/email/influence_changed.html', {'influence' : instance, 'created' : created})
 
-dispatcher.connect(influence_saved, signals.post_save, Influence)
+def comment_saved(**kwargs):
+    if (settings.DEBUG):
+        return
+
+    comment = kwargs['instance']
+
+    # We don't support comment editing, but let's check this anyway
+    if not kwargs['created']:
+        return
+
+    object = comment.content_object
+    if isinstance(object, Influence):
+        recipients = ['lextalionis@evolution-events.nl']
+        if comment.is_public:
+            recipients.extend(object.related_players.keys())
+
+        notify(
+            recipients,
+            'influences/email/influence_comment_added.html',
+            {'comment'   : comment, 
+             'influence' : object,
+             'commenter' : comment.user
+            }
+        )
+
+signals.post_save.connect(comment_saved, sender=ThreadedComment)
+
+# vim: set sts=4 sw=4 expandtab: