]> git.pld-linux.org Git - projects/pld-builder.new.git/blobdiff - PLD_Builder/bqueue.py
Fix outdated syntax
[projects/pld-builder.new.git] / PLD_Builder / bqueue.py
index cbe22e4387b66b7cd8b42e9cff9454e5dc12f93b..395e32fa7e0e10d44ee4da1d1e0092f91731038d 100644 (file)
@@ -3,10 +3,15 @@
 import re
 import gzip
 import time
-import StringIO
+import sys
+if sys.version_info[0] == 2:
+    import StringIO
+else:
+    from io import StringIO
 import os
 import fcntl
 import string
+import tempfile
 
 # PLD_Builder:
 import gpg
@@ -20,28 +25,50 @@ class B_Queue:
         self.requests = []
         self.fd = None
 
-    def dump(self, f):
+    def dump(self, fname):
+        (fdno, tmpfname) = tempfile.mkstemp(dir=os.path.dirname(fname))
+        f = os.fdopen(fdno, "w")
         self.requests.reverse()
         for r in self.requests:
             r.dump(f)
         self.requests.reverse()
-    
-    def dump_html(self, f):
+        f.flush()
+        os.fsync(f.fileno())
+        f.close()
+        os.chmod(tmpfname, 0644)
+        os.rename(tmpfname, fname)
+
+    def dump_html(self, fname):
+        (fdno, tmpfname) = tempfile.mkstemp(dir=os.path.dirname(fname))
+        f = os.fdopen(fdno, "w")
         f.write("""
 <html>
     <head>
-    <link rel="Shortcut Icon" href="http://www.pld-linux.org/favicon.ico"/>
+    <link rel="Shortcut Icon" href="//www.pld-linux.org/favicon.ico"/>
         <title>PLD builder queue</title>
         <link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="style.css">
+        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
+        <script src="//cdnjs.cloudflare.com/ajax/libs/jquery-timeago/1.4.3/jquery.timeago.min.js"></script>
+        <script type="text/javascript" src="script.js"></script>
     </head>
-<body>\n"""
+<body>
+<div id="header">
+    <div id="requesters-filter">Filter by requesters:<br></div>
+</div>
+<div id="content">
+"""
         )
         self.requests.reverse()
         for r in self.requests:
             r.dump_html(f)
         self.requests.reverse()
-        f.write("</body></html>\n")
-    
+        f.write("</div></body></html>\n")
+        f.flush()
+        os.fsync(f.fileno())
+        f.close()
+        os.chmod(tmpfname, 0644)
+        os.rename(tmpfname, fname)
+
     # read possibly compressed, signed queue
     def read_signed(self):
         if re.search(r"\.gz$", self.name):
@@ -58,7 +85,7 @@ class B_Queue:
                 self.fd = open(self.name, "r+")
             else:
                 self.fd = open(self.name, "w+")
-        
+
     def read(self):
         self._open()
         self.signers = []
@@ -69,7 +96,7 @@ class B_Queue:
             return
         try:
             self.requests = request.parse_requests(body)
-        except Exception, e:
+        except Exception as e:
             log.panic("error parsing %s: %s" % (self.name, e))
             pass
 
@@ -96,7 +123,7 @@ class B_Queue:
             return 1
         except IOError:
             return 0
-    
+
     def unlock(self):
         fcntl.flock(self.fd, fcntl.LOCK_UN)
 
@@ -105,14 +132,20 @@ class B_Queue:
         self._write_to(sio)
         sio.seek(0)
         sio.write(gpg.sign(sio.read()))
-        if os.access(name, os.F_OK): os.unlink(name)
+        sio.seek(0)
+        (fdno, tmpname) = tempfile.mkstemp(dir=os.path.dirname(name))
+        f = os.fdopen(fdno, "w")
         if re.search(r"\.gz$", name):
-            f = gzip.open(name, "w", 6)
+            fgz = gzip.GzipFile(filename=name, mode="w", compresslevel=6, fileobj=f)
+            util.sendfile(sio, fgz)
+            fgz.close()
         else:
-            f = open(name, "w")
-        sio.seek(0)
-        util.sendfile(sio, f)
+            util.sendfile(sio, f)
+        f.flush()
+        os.fsync(f.fileno())
         f.close()
+        os.chmod(tmpname, 0644)
+        os.rename(tmpname, name)
 
     def add(self, req):
         self.requests.append(req)
This page took 0.073236 seconds and 4 git commands to generate.