1 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
19 def __init__(self, filename):
24 def dump(self, fname):
25 (fdno, tmpfname) = tempfile.mkstemp(dir=os.path.dirname(fname))
26 f = os.fdopen(fdno, "w")
27 self.requests.reverse()
28 for r in self.requests:
30 self.requests.reverse()
34 os.chmod(tmpfname, 0644)
35 os.rename(tmpfname, fname)
37 def dump_html(self, fname):
38 (fdno, tmpfname) = tempfile.mkstemp(dir=os.path.dirname(fname))
39 f = os.fdopen(fdno, "w")
43 <link rel="Shortcut Icon" href="http://www.pld-linux.org/favicon.ico"/>
44 <title>PLD builder queue</title>
45 <link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="style.css">
46 <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
47 <script type="text/javascript" src="script.js"></script>
51 <div id="requesters-filter">Filter by requesters:<br></div>
56 self.requests.reverse()
57 for r in self.requests:
59 self.requests.reverse()
60 f.write("</div></body></html>\n")
64 os.chmod(tmpfname, 0644)
65 os.rename(tmpfname, fname)
67 # read possibly compressed, signed queue
68 def read_signed(self):
69 if re.search(r"\.gz$", self.name):
70 f = gzip.open(self.name)
73 (signers, body) = gpg.verify_sig(f.read())
74 self.signers = signers
75 self.requests = request.parse_requests(body)
79 if os.access(self.name, os.F_OK):
80 self.fd = open(self.name, "r+")
82 self.fd = open(self.name, "w+")
88 if string.strip(body) == "":
89 # empty file, don't choke
93 self.requests = request.parse_requests(body)
95 log.panic("error parsing %s: %s" % (self.name, e))
98 def _write_to(self, f):
100 for r in self.requests:
102 f.write("</queue>\n")
108 self._write_to(self.fd)
111 def lock(self, no_block):
115 op = op + fcntl.LOCK_NB
117 fcntl.flock(self.fd, op)
123 fcntl.flock(self.fd, fcntl.LOCK_UN)
125 def write_signed(self, name):
126 sio = StringIO.StringIO()
129 sio.write(gpg.sign(sio.read()))
131 (fdno, tmpname) = tempfile.mkstemp(dir=os.path.dirname(name))
132 f = os.fdopen(fdno, "w")
133 if re.search(r"\.gz$", name):
134 fgz = gzip.GzipFile(filename=name, mode="w", compresslevel=6, fileobj=f)
135 util.sendfile(sio, fgz)
138 util.sendfile(sio, f)
142 os.chmod(tmpname, 0644)
143 os.rename(tmpname, name)
146 self.requests.append(req)