X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=dak%2Fshow_deferred.py;h=8c13d677befdf1d6d4f56db80ed9cbdcb4f7c819;hb=ba77095c326cc03fc5ab18423b874ff06e6fcdba;hp=4ffa5e6ec021ca2cd591a5c6ac9b83e51a21f432;hpb=fe251f39e14ab78f06ad750fa0a24f9d7666e97b;p=dak.git diff --git a/dak/show_deferred.py b/dak/show_deferred.py index 4ffa5e6e..8c13d677 100755 --- a/dak/show_deferred.py +++ b/dak/show_deferred.py @@ -27,13 +27,20 @@ from debian_bundle import deb822 from daklib import database from daklib import queue from daklib import utils +from daklib.regexes import re_html_escaping, html_escaping + +################################################################################ +### work around bug #487902 in debian-python 0.1.10 +deb822.Changes._multivalued_fields = { + "files": [ "md5sum", "size", "section", "priority", "name" ], + "checksums-sha1": ["sha1", "size", "name"], + "checksums-sha256": ["sha256", "size", "name"], + } ################################################################################ row_number = 1 -html_escaping = {'"':'"', '&':'&', '<':'<', '>':'>'} -re_html_escaping = re.compile('|'.join(map(re.escape, html_escaping.keys()))) def html_escape(s): return re_html_escaping.sub(lambda x: html_escaping.get(x.group(0)), s) @@ -146,7 +153,7 @@ def get_upload_data(changesfn): if os.path.exists(qfn): os.symlink(qfn,lfn) os.chmod(qfn, 0644) - return (delaydays*24*60*60+remainingtime, changesname, delay, uploader, achanges.get('closes').split(),achanges) + return (max(delaydays-1,0)*24*60*60+remainingtime, changesname, delay, uploader, achanges.get('closes','').split(),achanges) def list_uploads(filelist): uploads = map(get_upload_data, filelist) @@ -166,13 +173,13 @@ def list_uploads(filelist): f = open(fn,"w") try: for u in uploads: - print >> f, """Changes: %s -Location: DEFERRED + print >> f, "Changes: %s"%u[1] + fields = """Location: DEFERRED Delayed-Until: %s -Delay-Remaining: %s"""%(u[1],time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(time.time()+u[0])),u[2]) - for k,v in u[5].items(): - if not k.startswith('Checksums-') and k != 'Files': - print >> f, "%s: %s"%(k,v) +Delay-Remaining: %s"""%(time.strftime("%Y-%m-%d %H:%M:%S", time.gmtime(time.time()+u[0])),u[2]) + print >> f, fields + print >> f, str(u[5]).rstrip() + open(os.path.join(Cnf["Show-Deferred::LinkPath"],u[1]),"w").write(str(u[5])+fields+'\n') print >> f f.close() os.rename(os.path.join(Cnf["Show-Deferred::LinkPath"],'.status.tmp'), @@ -231,7 +238,7 @@ def main(): # remove dead links for r,d,f in os.walk(Cnf["Show-Deferred::LinkPath"]): for af in f: - af = os.path.join(r,af) - if (not os.path.exists(af) or + afp = os.path.join(r,af) + if (not os.path.exists(afp) or (af.endswith('.changes') and af not in available_changes)): - os.unlink(af) + os.unlink(afp)