Fix torrent hash generation to work in mixed stacks
This commit is contained in:
parent
8bc8e2acc0
commit
8ab6c8a22d
3 changed files with 12 additions and 7 deletions
|
@ -809,8 +809,8 @@ class BlobUpload(BaseModel):
|
|||
chunk_count = IntegerField(default=0)
|
||||
uncompressed_byte_count = IntegerField(null=True)
|
||||
created = DateTimeField(default=datetime.now, index=True)
|
||||
piece_sha_state = ResumableSHA1Field(null=True, default=resumablehashlib.sha1)
|
||||
piece_hashes = Base64BinaryField(null=True, default='')
|
||||
piece_sha_state = ResumableSHA1Field(null=True)
|
||||
piece_hashes = Base64BinaryField(null=True)
|
||||
|
||||
class Meta:
|
||||
database = db
|
||||
|
|
|
@ -10,6 +10,9 @@ class _ResumableSHAField(TextField):
|
|||
raise NotImplementedError
|
||||
|
||||
def db_value(self, value):
|
||||
if value is None:
|
||||
return None
|
||||
|
||||
sha_state = value.state()
|
||||
|
||||
# One of the fields is a byte string, let's base64 encode it to make sure
|
||||
|
@ -19,14 +22,14 @@ class _ResumableSHAField(TextField):
|
|||
return json.dumps(sha_state)
|
||||
|
||||
def python_value(self, value):
|
||||
to_resume = self._create_sha()
|
||||
if value is None:
|
||||
return to_resume
|
||||
return None
|
||||
|
||||
sha_state = json.loads(value)
|
||||
|
||||
# We need to base64 decode the data bytestring.
|
||||
sha_state[3] = base64.b64decode(sha_state[3])
|
||||
to_resume = self._create_sha()
|
||||
to_resume.set_state(sha_state)
|
||||
return to_resume
|
||||
|
||||
|
|
Reference in a new issue