]> git.ipfire.org Git - ipfire.org.git/commitdiff
Change manager to only apply differential changes to the database.
authorMichael Tremer <michael.tremer@ipfire.org>
Sat, 15 Jan 2011 19:59:43 +0000 (20:59 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Sat, 15 Jan 2011 19:59:43 +0000 (20:59 +0100)
www/webapp/backend/mirrors.py

index 5b289b9fb26d19740437f8d1028271a47d9f413c..1de463124f85da838bdbf530881963ec39d09f04 100644 (file)
@@ -207,11 +207,21 @@ class Mirror(object):
                        logging.debug("Error getting timestamp from %s" % self.hostname)
                        return
 
-               self.db.execute("DELETE FROM mirror_files WHERE mirror=%s", self.id)
+               files = self.filelist
 
                for file in response.body.splitlines():
+                       file = os.path.join(self.prefix, file)
+
+                       if file in files:
+                               files.remove(file)
+                               continue
+
                        self.db.execute("INSERT INTO mirror_files(mirror, filename) VALUES(%s, %s)",
-                                       self.id, os.path.join(self.prefix, file))
+                               self.id, file)
+
+               for file in files:
+                       self.db.execute("DELETE FROM mirror_files WHERE mirror=%s AND filename=%s",
+                               self.id, file)
 
                logging.info("Successfully updated mirror filelist from %s" % self.hostname)