[CalendarServer-changes] [3299] CalendarServer/branches/users/sagen/localization-3280

source_changes at macosforge.org source_changes at macosforge.org
Fri Oct 31 11:11:21 PDT 2008


Revision: 3299
          http://trac.macosforge.org/projects/calendarserver/changeset/3299
Author:   sagen at apple.com
Date:     2008-10-31 11:11:21 -0700 (Fri, 31 Oct 2008)
Log Message:
-----------
Adding LocalesDirectory and Language to config; now falls back to english if locale files not found; polling for mail is less noisy; failure to process emails won't leave them in the inbox

Modified Paths:
--------------
    CalendarServer/branches/users/sagen/localization-3280/conf/caldavd-test.plist
    CalendarServer/branches/users/sagen/localization-3280/twistedcaldav/config.py
    CalendarServer/branches/users/sagen/localization-3280/twistedcaldav/localization.py
    CalendarServer/branches/users/sagen/localization-3280/twistedcaldav/mail.py

Modified: CalendarServer/branches/users/sagen/localization-3280/conf/caldavd-test.plist
===================================================================
--- CalendarServer/branches/users/sagen/localization-3280/conf/caldavd-test.plist	2008-10-31 17:34:20 UTC (rev 3298)
+++ CalendarServer/branches/users/sagen/localization-3280/conf/caldavd-test.plist	2008-10-31 18:11:21 UTC (rev 3299)
@@ -638,6 +638,13 @@
       <string>logs/caldavd-pydir.sock</string>
     </dict>
 
+    <key>Localization</key>
+    <dict>
+      <key>LocalesDirectory</key>
+      <string>locales</string>
+      <key>Language</key>
+      <string>en</string>
+    </dict>
 
   </dict>
 </plist>

Modified: CalendarServer/branches/users/sagen/localization-3280/twistedcaldav/config.py
===================================================================
--- CalendarServer/branches/users/sagen/localization-3280/twistedcaldav/config.py	2008-10-31 17:34:20 UTC (rev 3298)
+++ CalendarServer/branches/users/sagen/localization-3280/twistedcaldav/config.py	2008-10-31 18:11:21 UTC (rev 3299)
@@ -290,7 +290,17 @@
     "IdleConnectionTimeOut": 15,
     "UIDReservationTimeOut": 30 * 60,
 
+
     #
+    # Localization
+    #
+    "Localization" : {
+        "LocalesDirectory" : "/usr/share/caldavd/locales",
+        "Language" : "en",
+    },
+
+
+    #
     # Implementation details
     #
     #    The following are specific to how the server is built, and useful

Modified: CalendarServer/branches/users/sagen/localization-3280/twistedcaldav/localization.py
===================================================================
--- CalendarServer/branches/users/sagen/localization-3280/twistedcaldav/localization.py	2008-10-31 17:34:20 UTC (rev 3298)
+++ CalendarServer/branches/users/sagen/localization-3280/twistedcaldav/localization.py	2008-10-31 18:11:21 UTC (rev 3299)
@@ -88,20 +88,24 @@
 import gettext
 import inspect
 import datetime
+from twistedcaldav.config import config
 
 
 class translationTo(object):
 
     translations = {}
 
-    def __init__(self, lang, domain='calendarserver', localeDir='locales'):
+    def __init__(self, lang, domain='calendarserver', localeDir=None):
 
+        if localeDir is None:
+            localeDir = config.Localization["LocalesDirectory"]
+
         # Cache gettext translation objects in class.translations
         key = (lang, domain, localeDir)
         self.translation = self.translations.get(key, None)
         if self.translation is None:
             self.translation = gettext.translation(domain=domain,
-                localedir=localeDir, languages=[lang, 'en'])
+                localedir=localeDir, languages=[lang, 'en'], fallback=True)
             self.translations[key] = self.translation
 
     def __enter__(self):

Modified: CalendarServer/branches/users/sagen/localization-3280/twistedcaldav/mail.py
===================================================================
--- CalendarServer/branches/users/sagen/localization-3280/twistedcaldav/mail.py	2008-10-31 17:34:20 UTC (rev 3298)
+++ CalendarServer/branches/users/sagen/localization-3280/twistedcaldav/mail.py	2008-10-31 18:11:21 UTC (rev 3299)
@@ -263,6 +263,8 @@
     log.debug("Injecting to %s: %s %s" % (url, str(headers), data))
     factory = client.HTTPClientFactory(url, method='POST', headers=headers,
         postdata=data, agent="iMIP gateway")
+    factory.noisy = False
+
     if useSSL:
         reactor.connectSSL(host, port, factory, ssl.ClientContextFactory())
     else:
@@ -483,8 +485,9 @@
             # Compute token, add to db, generate email and send it
             calendar = ical.Component.fromString(request.content.read())
             headers = request.getAllHeaders()
+            language = config.Localization["Language"]
             self.mailer.outbound(headers['originator'], headers['recipient'],
-                calendar, language='en')
+                calendar, language=language)
 
             # TODO: what to return?
             return """
@@ -579,7 +582,7 @@
             # TODO: what to do in this case?
             pass
 
-        self.log_error("Mail gateway processing DSN %s" % (msgId,))
+        self.log_warn("Mail gateway processing DSN %s" % (msgId,))
         return fn(organizer, attendee, calendar, msgId)
 
     def processReply(self, msg, fn):
@@ -630,33 +633,39 @@
 
 
     def inbound(self, message, fn=injectMessage):
-        msg = email.message_from_string(message)
+        try:
+            msg = email.message_from_string(message)
 
-        isDSN, action, calBody = self.checkDSN(msg)
-        if isDSN:
-            if action == 'failed' and calBody:
-                # This is a DSN we can handle
-                return self.processDSN(calBody, msg['Message-ID'], fn)
-            else:
-                # It's a DSN without enough to go on
-                self.log_error("Mail gateway can't process DSN %s" % (msg['Message-ID'],))
-                return
+            isDSN, action, calBody = self.checkDSN(msg)
+            if isDSN:
+                if action == 'failed' and calBody:
+                    # This is a DSN we can handle
+                    return self.processDSN(calBody, msg['Message-ID'], fn)
+                else:
+                    # It's a DSN without enough to go on
+                    self.log_error("Mail gateway can't process DSN %s" % (msg['Message-ID'],))
+                    return
 
-        self.log_info("Mail gateway received message %s from %s to %s" %
-            (msg['Message-ID'], msg['From'], msg['To']))
+            self.log_info("Mail gateway received message %s from %s to %s" %
+                (msg['Message-ID'], msg['From'], msg['To']))
 
-        return self.processReply(msg, fn)
+            return self.processReply(msg, fn)
 
+        except Exception, e:
+            # Don't let a failure of any kind stop us
+            self.log_error("Failed to process message: %s" % (e,))
 
 
+
+
     def outbound(self, organizer, attendee, calendar, language='en'):
         # create token, send email
         token = self.db.getToken(organizer, attendee)
         if token is None:
             token = self.db.createToken(organizer, attendee)
-            self.log_info("Mail gateway created token %s for %s (organizer) and %s (attendee)" % (token, organizer, attendee))
+            self.log_debug("Mail gateway created token %s for %s (organizer) and %s (attendee)" % (token, organizer, attendee))
         else:
-            self.log_info("Mail gateway reusing token %s for %s (organizer) and %s (attendee)" % (token, organizer, attendee))
+            self.log_debug("Mail gateway reusing token %s for %s (organizer) and %s (attendee)" % (token, organizer, attendee))
 
         settings = config.Scheduling['iMIP']['Sending']
         fullServerAddress = settings['Address']
@@ -891,7 +900,6 @@
 
             htmlText = htmlTemplate % details
 
-        self.log_info(htmlText)
         msgHtml = MIMEText(htmlText.encode("UTF-8"), "html", "UTF-8")
         msgHtmlRelated.attach(msgHtml)
 
@@ -1043,6 +1051,7 @@
             from twisted.internet import reactor
         self.reactor = reactor
         self.nextPoll = None
+        self.noisy = False
 
     def retry(self, connector=None):
         # TODO: if connector is None:
@@ -1218,6 +1227,7 @@
         if reactor is None:
             from twisted.internet import reactor
         self.reactor = reactor
+        self.noisy = False
 
 
     def handleMessage(self, message):
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20081031/1da7ed25/attachment-0001.html>


More information about the calendarserver-changes mailing list