Code

Added the ability to toggle where error messages go.
authoreparker <eparker@57a73879-2fb5-44c3-a270-3262357dd7e2>
Thu, 25 Mar 2004 19:27:15 +0000 (19:27 +0000)
committereparker <eparker@57a73879-2fb5-44c3-a270-3262357dd7e2>
Thu, 25 Mar 2004 19:27:15 +0000 (19:27 +0000)
They either go to the user (default, for backwards compatibility), the
dispatcher, or both. These are able to be toggled via settings in config.py.
Please refer to upgrading.txt for more details. (And Richard, let me know
if I've done anything wrong with this checkin. :))

git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/trunk@2187 57a73879-2fb5-44c3-a270-3262357dd7e2

doc/upgrading.txt
roundup/mailgw.py
templates/classic/config.py
templates/minimal/config.py

index 2a20dc7149fa707cafde8ef836321ad0383439c9..dbd01ad2cb40363c7ed751a85cf86cf3ed1fed8f 100644 (file)
@@ -8,6 +8,35 @@ accordingly. Note that there is information about upgrade procedures in the
 
 .. contents::
 
+
+
+Migrating from 0.7 to 0.8
+=========================
+
+0.8.0 Added Dispatcher role
+---------------------------
+
+A new config option has been added. There is a 'role' that can be filled, 
+that of the 'dispatcher'. This person acts as a central sentinel for issues
+coming into the system. You can configure it so that all e-mail error messages
+get bounced to them, them and the user in question, or just the user (default).
+
+To toggle these switches, look at the new classic and minimal config.py's,
+specifically:
+
+
+# The 'dispatcher' is a role that can get notified of new items to the database.
+DISPATCHER_EMAIL = ADMIN_EMAIL
+
+...
+
+
+# Send error messages to the dispatcher, user, or both?
+# If 'dispatcher', error message notifications will only be sent to the dispatcher.
+# If 'user',       error message notifications will only be sent to the user.
+# If 'both',       error message notifications will be sent to both individuals.
+ERROR_MESSAGES_TO = 'user'
+
 Migrating from 0.6 to 0.7
 =========================
 
index f45eedc9d51af4e3e6e0a88259c054676215dcdb..6b1fb936a89e7d4d6a2b8fdc3069713791f838c3 100644 (file)
@@ -72,7 +72,7 @@ are calling the create() method to create a new node). If an auditor raises
 an exception, the original message is bounced back to the sender with the
 explanatory message given in the exception. 
 
-$Id: mailgw.py,v 1.143 2004-02-11 23:55:08 richard Exp $
+$Id: mailgw.py,v 1.144 2004-03-25 19:27:15 eparker Exp $
 """
 __docformat__ = 'restructuredtext'
 
@@ -429,13 +429,27 @@ class MailGW:
         """
         # in some rare cases, a particularly stuffed-up e-mail will make
         # its way into here... try to handle it gracefully
+
+        # Setting the dispatcher e-mail here, so as not to clutter things. Defaulting to ADMIN_EMAIL, if not set.
+        dispatcherEmail = getattr(self.instance.config, "DISPATCHER_EMAIL", getattr(self.instance.config, "ADMIN_EMAIL"))
+        errorMessagesTo = getattr(self.instance.config, "ERROR_MESSAGES_TO", "user")
+
         sendto = message.getaddrlist('resent-from')
         if not sendto:
             sendto = message.getaddrlist('from')
         if not sendto:
             # very bad-looking message - we don't even know who sent it
             # XXX we should use a log file here...
-            sendto = [self.instance.config.ADMIN_EMAIL]
+            
+            # [EP] This section was originally only to admin.. Not sure if this should ever go to the user?
+
+            if(errorMessagesTo == "dispatcher"):
+                sendto = [dispatcherEmail]
+            elif(errorMessagesTo == "both"):
+                sendto = [dispatcherEmail, self.instance.config.ADMIN_EMAIL]
+            else:
+                sendto = [self.instance.config.ADMIN_EMAIL]
+
             m = ['Subject: badly formed message from mail gateway']
             m.append('')
             m.append('The mail gateway retrieved a message which has no From:')
@@ -454,7 +468,13 @@ class MailGW:
         except MailUsageHelp:
             # bounce the message back to the sender with the usage message
             fulldoc = '\n'.join(string.split(__doc__, '\n')[2:])
-            sendto = [sendto[0][1]]
+            if(errorMessagesTo == "dispatcher"):
+                sendto = [dispatcherEmail]
+            elif(errorMessagesTo == "both"):
+                sendto = [dispatcherEmail, sendto[0][1]]
+            else:
+                sendto = [sendto[0][1]]
+
             m = ['']
             m.append('\n\nMail Gateway Help\n=================')
             m.append(fulldoc)
@@ -463,7 +483,13 @@ class MailGW:
         except MailUsageError, value:
             # bounce the message back to the sender with the usage message
             fulldoc = '\n'.join(string.split(__doc__, '\n')[2:])
-            sendto = [sendto[0][1]]
+
+            if(errorMessagesTo == "dispatcher"):
+                sendto = [dispatcherEmail]
+            elif(errorMessagesTo == "both"):
+                sendto = [dispatcherEmail, sendto[0][1]]
+            else:
+                sendto = [sendto[0][1]]
             m = ['']
             m.append(str(value))
             m.append('\n\nMail Gateway Help\n=================')
@@ -471,7 +497,13 @@ class MailGW:
             self.mailer.bounce_message(message, sendto, m)
         except Unauthorized, value:
             # just inform the user that he is not authorized
-            sendto = [sendto[0][1]]
+            
+            if(errorMessagesTo == "dispatcher"):
+                sendto = [dispatcherEmail]
+            elif(errorMessagesTo == "both"):
+                sendto = [dispatcherEmail, sendto[0][1]]
+            else:
+                sendto = [sendto[0][1]]
             m = ['']
             m.append(str(value))
             self.mailer.bounce_message(message, sendto, m)
@@ -483,7 +515,14 @@ class MailGW:
         except:
             # bounce the message back to the sender with the error message
             # XXX we should use a log file here...
-            sendto = [sendto[0][1], self.instance.config.ADMIN_EMAIL]
+
+            if(errorMessagesTo == "dispatcher"):
+                sendto = [dispatcherEmail]
+            elif(errorMessagesTo == "both"):
+                sendto = [dispatcherEmail, sendto[0][1], self.instance.config.ADMIN_EMAIL]
+            else:
+                sendto = [sendto[0][1], self.instance.config.ADMIN_EMAIL]
+
             m = ['']
             m.append('An unexpected error occurred during the processing')
             m.append('of your message. The tracker administrator is being')
index f53678451525edb9fc864d8668da72c544b50ab6..703fc14188908435e9da17f7a563e628e800db74 100644 (file)
@@ -15,7 +15,7 @@
 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 # 
-# $Id: config.py,v 1.5 2004-02-23 05:29:05 richard Exp $
+# $Id: config.py,v 1.6 2004-03-25 19:27:15 eparker Exp $
 
 import os
 
@@ -63,6 +63,9 @@ TRACKER_WEB = 'http://tracker.example/cgi-bin/roundup.cgi/bugs/'
 # The email address that roundup will complain to if it runs into trouble
 ADMIN_EMAIL = 'roundup-admin@%s'%MAIL_DOMAIN
 
+# The 'dispatcher' is a role that can get notified of new items to the database.
+DISPATCHER_EMAIL = ADMIN_EMAIL
+
 # Additional text to include in the "name" part of the From: address used
 # in nosy messages. If the sending user is "Foo Bar", the From: line is
 # usually:
@@ -71,6 +74,13 @@ ADMIN_EMAIL = 'roundup-admin@%s'%MAIL_DOMAIN
 #    "Foo Bar EMAIL_FROM_TAG" <issue_tracker@tracker.example>
 EMAIL_FROM_TAG = ""
 
+
+# Send error messages to the dispatcher, user, or both?
+# If 'dispatcher', error message notifications will only be sent to the dispatcher.
+# If 'user',       error message notifications will only be sent to the user.
+# If 'both',       error message notifications will be sent to both individuals.
+ERROR_MESSAGES_TO = 'user'
+
 # Send nosy messages to the author of the message?
 # If 'new' is used, then the author will only be sent the message when the
 # message creates a new issue. If 'yes' then the author will always be sent
index cf82f22fda20d0ae72868fc12d30c1e436b414d1..7b2807e0a1372c3d287c111076c7cad13e4accf1 100644 (file)
@@ -15,7 +15,7 @@
 # BASIS, AND THERE IS NO OBLIGATION WHATSOEVER TO PROVIDE MAINTENANCE,
 # SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.
 # 
-# $Id: config.py,v 1.4 2004-02-23 05:29:06 richard Exp $
+# $Id: config.py,v 1.5 2004-03-25 19:27:15 eparker Exp $
 
 import os
 
@@ -63,6 +63,9 @@ TRACKER_WEB = 'http://tracker.example/cgi-bin/roundup.cgi/bugs/'
 # The email address that roundup will complain to if it runs into trouble
 ADMIN_EMAIL = 'roundup-admin@%s'%MAIL_DOMAIN
 
+# The 'dispatcher' is a role that can get notified of new items to the database.
+DISPATCHER_EMAIL = ADMIN_EMAIL
+
 # Additional text to include in the "name" part of the From: address used
 # in nosy messages. If the sending user is "Foo Bar", the From: line is
 # usually: "Foo Bar" <issue_tracker@tracker.example>
@@ -78,6 +81,12 @@ EMAIL_FROM_TAG = ""
 NEW_WEB_USER_ROLES = 'User'
 NEW_EMAIL_USER_ROLES = 'User'
 
+# Send error messages to the dispatcher, user, or both?
+# If 'dispatcher', error message notifications will only be sent to the dispatcher.
+# If 'user',       error message notifications will only be sent to the user.
+# If 'both',       error message notifications will be sent to both individuals.
+ERROR_MESSAGES_TO = 'user'
+
 # Send nosy messages to the author of the message
 MESSAGES_TO_AUTHOR = 'no'           # either 'yes' or 'no'