################################################################################
-row_number = 0
+row_number = 1
html_escaping = {'"':'"', '&':'&', '<':'<', '>':'>'}
re_html_escaping = re.compile('|'.join(map(re.escape, html_escaping.keys())))
def table_row(changesname, delay, changed_by, closes):
global row_number
- res = '<tr class="%s">'%(['even','odd'][row_number %2])
+ res = '<tr class="%s">'%((row_number%2) and 'odd' or 'even')
res += (3*'<td valign="top">%s</td>')%tuple(map(html_escape,(changesname,delay,changed_by)))
res += ('<td valign="top">%s</td>' %
''.join(map(lambda close: '<a href="http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=%s">#%s</a><br>' % (close, close),closes)))
m = re.match(r'([0-9]+)-day', delay)
if m:
delaydays = int(m.group(1))
- remainingtime = max(0,24*60*60+os.stat(changesfn).st_mtime-time.time())
- delay = "%d days %02d:%02d" %(delaydays, int(remainingtime/3600),int(remainingtime/60)%60)
+ remainingtime = (delaydays>0)*max(0,24*60*60+os.stat(changesfn).st_mtime-time.time())
+ delay = "%d days %02d:%02d" %(max(delaydays-1,0), int(remainingtime/3600),int(remainingtime/60)%60)
else:
remainingtime = 0
#print dir(achanges)
#print achanges.keys()
uploader = achanges.get('changed-by')
- uploader = re.sub(r'\s+(\S.*)\s+<.*>',r'\1',uploader)
+ uploader = re.sub(r'^\s*(\S.*)\s+<.*>',r'\1',uploader)
return (delaydays*24*60*60+remainingtime, changesname, delay, uploader, achanges.get('closes').split())
def list_uploads(filelist):
print '<h1>Currently no deferred uploads to Debian</h1>'
print footer()
-list_uploads(sys.argv[1:])
+if len(sys.argv)!=2:
+ print >> sys.stderr, """Error! Invoke %s /path/to/DEFERRED"""%sys.argv[0]
+ sys.exit(1)
+
+filelist = []
+for r,d,f in os.walk(sys.argv[1]):
+ filelist += map (lambda x: os.path.join(r,x),
+ filter(lambda x: x.endswith('.changes'), f))
+
+list_uploads(filelist)