def rename_package(self, old, new):
''' Rename a package. Relies on cascaded updates.
'''
cursor = self.get_cursor()
date = time.strftime('%Y-%m-%d %H:%M:%S', time.gmtime())
safe_execute(cursor, '''update packages set name=%s where name=%s''',
(new, old))
safe_execute(cursor, '''update journals set name=%s where name=%s''',
(new, old))
# move all files on disk
sql = '''select id, blake2_256_digest, filename, path
from release_files where name=%s'''
safe_execute(cursor, sql, (new,))
for fid, digest, filename, path in cursor.fetchall():
assert digest is not None, "Cannot Move a file without a blake2 digest"
oldname = path
newname = self.gen_file_path(digest, filename)
safe_execute(
cursor,
"update release_files set path=%s where id=%s",
(newname, fid),
)
self.package_bucket.copy_key(
os.path.join("packages", newname),
self.package_bucket.name,
os.path.join("packages", oldname),
)
self._deleted_files.add(oldname)
self.add_journal_entry(new, None, "rename from %s" % old, date,
self.username, self.userip)
self._add_invalidation(new)
self._add_invalidation(old)
self._add_invalidation(None)
评论列表
文章目录