[Checkins] SVN: ZConfig/trunk/ - Added SMTP authentication support for email logger on Python 2.6.
Christian Zagrodnick
cz at gocept.com
Sat Apr 10 08:12:11 EDT 2010
Log message for revision 110705:
- Added SMTP authentication support for email logger on Python 2.6.
Changed:
U ZConfig/trunk/NEWS.txt
U ZConfig/trunk/ZConfig/components/logger/handlers.py
U ZConfig/trunk/ZConfig/components/logger/handlers.xml
U ZConfig/trunk/ZConfig/components/logger/tests/test_logger.py
-=-
Modified: ZConfig/trunk/NEWS.txt
===================================================================
--- ZConfig/trunk/NEWS.txt 2010-04-10 05:25:40 UTC (rev 110704)
+++ ZConfig/trunk/NEWS.txt 2010-04-10 12:12:11 UTC (rev 110705)
@@ -8,6 +8,8 @@
- Fix relative path recognition.
https://bugs.launchpad.net/zconfig/+bug/405687
+- Added SMTP authentication support for email logger on Python 2.6.
+
ZConfig 2.7.1 (2009/06/13)
--------------------------
Modified: ZConfig/trunk/ZConfig/components/logger/handlers.py
===================================================================
--- ZConfig/trunk/ZConfig/components/logger/handlers.py 2010-04-10 05:25:40 UTC (rev 110704)
+++ ZConfig/trunk/ZConfig/components/logger/handlers.py 2010-04-10 12:12:11 UTC (rev 110705)
@@ -212,7 +212,16 @@
mailhost = host
else:
mailhost = host, port
+ kwargs = {}
+ if self.section.smtp_auth_username or self.section.smtp_auth_password:
+ # Since credentials were only added in py2.6 we use a kwarg to not
+ # break compatibility with older py
+ if sys.version_info < (2, 6):
+ raise ValueError('SMTP auth requires at least Python 2.6.')
+ kwargs['credentials'] = (self.section.smtp_auth_username,
+ self.section.smtp_auth_password)
return loghandler.SMTPHandler(mailhost,
self.section.fromaddr,
self.section.toaddrs,
- self.section.subject)
+ self.section.subject,
+ **kwargs)
Modified: ZConfig/trunk/ZConfig/components/logger/handlers.xml
===================================================================
--- ZConfig/trunk/ZConfig/components/logger/handlers.xml 2010-04-10 05:25:40 UTC (rev 110704)
+++ ZConfig/trunk/ZConfig/components/logger/handlers.xml 2010-04-10 12:12:11 UTC (rev 110705)
@@ -79,6 +79,8 @@
<multikey name="to" required="yes" attribute="toaddrs"/>
<key name="subject" default="Message from Zope"/>
<key name="smtp-server" default="localhost" datatype="inet-address"/>
+ <key name="smtp-auth-username" default="" datatype="string"/>
+ <key name="smtp-auth-password" default="" datatype="string"/>
<key name="format"
default="%(asctime)s %(levelname)s %(name)s %(message)s"
datatype=".log_format"/>
Modified: ZConfig/trunk/ZConfig/components/logger/tests/test_logger.py
===================================================================
--- ZConfig/trunk/ZConfig/components/logger/tests/test_logger.py 2010-04-10 05:25:40 UTC (rev 110704)
+++ ZConfig/trunk/ZConfig/components/logger/tests/test_logger.py 2010-04-10 12:12:11 UTC (rev 110705)
@@ -346,6 +346,32 @@
self.assertEqual(handler.fromaddr, "zlog-user at example.com")
self.assertEqual(handler.level, logging.FATAL)
+ def test_with_email_notifier_with_credentials(self):
+ try:
+ logger = self.check_simple_logger("<eventlog>\n"
+ " <email-notifier>\n"
+ " to sysadmin at example.com\n"
+ " from zlog-user at example.com\n"
+ " level fatal\n"
+ " smtp-auth-username john\n"
+ " smtp-auth-password johnpw\n"
+ " </email-notifier>\n"
+ "</eventlog>")
+ except ValueError:
+ if sys.version_info >= (2, 6):
+ # For python 2.6 no ValueError must be raised.
+ raise
+ else:
+ # This path must only be reached with python >=2.6
+ self.assert_(sys.version_info >= (2, 6))
+ handler = logger.handlers[0]
+ self.assertEqual(handler.toaddrs, ["sysadmin at example.com"])
+ self.assertEqual(handler.fromaddr, "zlog-user at example.com")
+ self.assertEqual(handler.fromaddr, "zlog-user at example.com")
+ self.assertEqual(handler.level, logging.FATAL)
+ self.assertEqual(handler.username, 'john')
+ self.assertEqual(handler.password, 'johnpw')
+
def check_simple_logger(self, text, level=logging.INFO):
conf = self.get_config(text)
self.assert_(conf.eventlog is not None)
More information about the checkins
mailing list