Mercurial > p > roundup > code
view roundup/scripts/roundup_gettext.py @ 3808:36eb9e8faf30
Real handling of network errors.
Fix for correctly ignoring net errors: It seems that (at least in
my installed Debian version of python2.4) socket.error does not have an
errno attribute but is simply a tuple of (errno, strerror). So we now
try to get errno first and if this fails we try to use err [0]. This
works for a simple test-script to which I can connect with telnet on
port 4711 -- it will correctly detect errno.EPIPE if I terminate the
telnet session:
#!/usr/bin/python2.4
import socket
import errno
from SocketServer import TCPServer, BaseRequestHandler
class Server (BaseRequestHandler) :
def handle (self) :
self.file = self.request.makefile ()
try :
while True :
print >> self.file, "Testing..."
except socket.error, err :
print getattr (err, 'errno', "Has no errno")
print err [0]
print err [0] == errno.EPIPE
raise
# end def handle
# end class Server
server_address = ('', 4711)
s = TCPServer (server_address, Server)
s.serve_forever ()
Sorry for the verbose log-message but I hope to document my debugging
activities
| author | Ralf Schlatterbeck <schlatterbeck@users.sourceforge.net> |
|---|---|
| date | Tue, 16 Jan 2007 10:16:08 +0000 |
| parents | a7b755646ffd |
| children | 6e3e4f24c753 |
line wrap: on
line source
#! /usr/bin/env python # # Copyright 2004 Richard Jones (richard@mechanicalcat.net) # # $Id: roundup_gettext.py,v 1.1 2004-10-20 10:25:23 a1s Exp $ """Extract translatable strings from tracker templates""" import os import sys from roundup.i18n import _ from roundup.cgi.TAL import talgettext # name of message template file. # i don't think this will ever need to be changed, but still... TEMPLATE_FILE = "messages.pot" def run(): # return unless command line arguments contain single directory path if (len(sys.argv) != 2) or (sys.argv[1] in ("-h", "--help")): print _("Usage: %(program)s <tracker home>") % {"program": sys.argv[0]} return # collect file paths of html templates home = os.path.abspath(sys.argv[1]) htmldir = os.path.join(home, "html") if os.path.isdir(htmldir): # glob is not used because i want to match file names # without case sensitivity, and that is easier done this way. htmlfiles = [filename for filename in os.listdir(htmldir) if os.path.isfile(os.path.join(htmldir, filename)) and filename.lower().endswith(".html")] else: htmlfiles = [] # return if no html files found if not htmlfiles: print _("No tracker templates found in directory %s") % home return # change to locale dir to have relative source references locale = os.path.join(home, "locale") if not os.path.isdir(locale): os.mkdir(locale) os.chdir(locale) # tweak sys.argv as this is the only way to tell talgettext what to do # Note: unix-style paths used instead of os.path.join deliberately sys.argv[1:] = ["-o", TEMPLATE_FILE] \ + ["../html/" + filename for filename in htmlfiles] # run talgettext.main() if __name__ == "__main__": run() # vim: set et sts=4 sw=4 :
