1 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
19 def __init__(self, filename):
24 def dump(self, fname):
25 (f, tmpfname) = tempfile.mkstemp(dir=os.path.dirname(fname))
26 self.requests.reverse()
27 for r in self.requests:
29 self.requests.reverse()
33 os.chmod(tmpfname, 0644)
34 os.rename(tmpfname, fname)
36 def dump_html(self, fname):
37 (f, tmpfname) = tempfile.mkstemp(dir=os.path.dirname(fname))
41 <link rel="Shortcut Icon" href="http://www.pld-linux.org/favicon.ico"/>
42 <title>PLD builder queue</title>
43 <link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="style.css">
44 <script type="text/javascript" src="script.js"></script>
48 self.requests.reverse()
49 for r in self.requests:
51 self.requests.reverse()
52 f.write("</body></html>\n")
56 os.chmod(tmpfname, 0644)
57 os.rename(tmpfname, fname)
59 # read possibly compressed, signed queue
60 def read_signed(self):
61 if re.search(r"\.gz$", self.name):
62 f = gzip.open(self.name)
65 (signers, body) = gpg.verify_sig(f.read())
66 self.signers = signers
67 self.requests = request.parse_requests(body)
71 if os.access(self.name, os.F_OK):
72 self.fd = open(self.name, "r+")
74 self.fd = open(self.name, "w+")
80 if string.strip(body) == "":
81 # empty file, don't choke
85 self.requests = request.parse_requests(body)
87 log.panic("error parsing %s: %s" % (self.name, e))
90 def _write_to(self, f):
92 for r in self.requests:
100 self._write_to(self.fd)
103 def lock(self, no_block):
107 op = op + fcntl.LOCK_NB
109 fcntl.flock(self.fd, op)
115 fcntl.flock(self.fd, fcntl.LOCK_UN)
117 def write_signed(self, name):
118 sio = StringIO.StringIO()
121 sio.write(gpg.sign(sio.read()))
123 (f, tmpname) = tempfile.mkstemp(dir=os.path.dirname(name))
124 if re.search(r"\.gz$", name):
125 fgz = gzip.GzipFile(filename=name, mode="w", compresslevel=6, fileobj=f)
126 util.sendfile(sio, fgz)
129 util.sendfile(sio, f)
133 os.chmod(tmpname, 0644)
134 os.rename(tmpfname, name)
137 self.requests.append(req)