forked from adamm/git-importer
Implement a fileshash function for revision
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
from hashlib import md5
|
||||
|
||||
from lib.request import Request
|
||||
|
||||
|
||||
@@ -19,6 +21,7 @@ class DBRevision:
|
||||
self.request_id,
|
||||
) = row
|
||||
self.rev = int(self.rev)
|
||||
self._files = None
|
||||
|
||||
def __str__(self):
|
||||
return f"Rev {self.project}/{self.rev} Md5 {self.unexpanded_srcmd5} {self.commit_time} {self.userid} {self.request_number}"
|
||||
@@ -156,14 +159,31 @@ class DBRevision:
|
||||
),
|
||||
)
|
||||
|
||||
def fileshash(self, db):
|
||||
m = md5()
|
||||
for file_dict in self.files_list(db):
|
||||
m.update(
|
||||
(
|
||||
file_dict["name"]
|
||||
+ "/"
|
||||
+ file_dict["md5"]
|
||||
+ "/"
|
||||
+ str(file_dict["size"])
|
||||
).encode("utf-8")
|
||||
)
|
||||
return m.hexdigest()
|
||||
|
||||
def files_list(self, db):
|
||||
if self._files:
|
||||
return self._files
|
||||
cur = db.cursor()
|
||||
cur.execute("SELECT * from files where revision_id=%s", (self.dbid,))
|
||||
ret = []
|
||||
self._files = []
|
||||
for row in cur.fetchall():
|
||||
(_, _, name, md5, size, mtime) = row
|
||||
ret.append({"md5": md5, "size": size, "mtime": mtime, "name": name})
|
||||
return ret
|
||||
self._files.append({"md5": md5, "size": size, "mtime": mtime, "name": name})
|
||||
self._files.sort(key=lambda x: x["name"])
|
||||
return self._files
|
||||
|
||||
@staticmethod
|
||||
def requests_to_fetch(self, db, project, package):
|
||||
|
Reference in New Issue
Block a user