# HG changeset patch # User Aurelien Campeas # Date 1252073584 -7200 # Node ID b788903e77d548f7fb6f4849bc45e9962e7e2984 # Parent 8881e45f55e3ff198ffe35183e254a21dc338d11 be able to restore pre cw 3.4 database dumps #370595 diff -r 8881e45f55e3 -r b788903e77d5 server/migractions.py --- a/server/migractions.py Thu Sep 03 14:17:12 2009 +0200 +++ b/server/migractions.py Fri Sep 04 16:13:04 2009 +0200 @@ -166,14 +166,20 @@ % (self.config.appid, backupfile)): return # unpack backup - bkup = tarfile.open(backupfile, 'r|gz') - for name in bkup.getnames(): - if name[0] in '/.': - raise Exception('Security check failed, path starts with "/" or "."') - bkup.close() # XXX seek error if not close+open !?! - bkup = tarfile.open(backupfile, 'r|gz') tmpdir = tempfile.mkdtemp() - bkup.extractall(path=tmpdir) + try: + bkup = tarfile.open(backupfile, 'r|gz') + except tarfile.ReadError: + # assume restoring old backup + shutil.copy(backupfile, osp.join(tmpdir, 'system')) + else: + for name in bkup.getnames(): + if name[0] in '/.': + raise Exception('Security check failed, path starts with "/" or "."') + bkup.close() # XXX seek error if not close+open !?! + bkup = tarfile.open(backupfile, 'r|gz') + bkup.extractall(path=tmpdir) + bkup.close() self.config.open_connections_pools = False repo = self.repo_connect() @@ -186,7 +192,6 @@ print '-> error trying to restore [%s]' % exc if not self.confirm('Continue anyway?', default='n'): raise SystemExit(1) - bkup.close() shutil.rmtree(tmpdir) # call hooks repo.open_connections_pools()