Use utils for hashing/filechecking in client.py

This commit is contained in:
Etoh 2013-11-02 17:12:55 +00:00
parent 619304af81
commit 9517e1b305

View File

@ -305,22 +305,13 @@ class SyncplayClient(object):
self.sendFile() self.sendFile()
self._malUpdater.fileChangeHook(filename, duration) self._malUpdater.fileChangeHook(filename, duration)
def __stripfilename(self, filename):
return re.sub(constants.FILENAME_STRIP_REGEX,"",filename)
def __hashFilename(self, filename):
return hashlib.sha256(self.__stripfilename(filename)).hexdigest()[:12]
def __hashFilesize(self, size):
return hashlib.sha256(str(size)).hexdigest()[:12]
def __executePrivacySettings(self, filename, size): def __executePrivacySettings(self, filename, size):
if (self._config['filenamePrivacyMode'] == PRIVACY_SENDHASHED_MODE): if (self._config['filenamePrivacyMode'] == PRIVACY_SENDHASHED_MODE):
filename = self.__hashFilename(filename) filename = utils.hashFilename(filename)
elif (self._config['filenamePrivacyMode'] == PRIVACY_DONTSEND_MODE): elif (self._config['filenamePrivacyMode'] == PRIVACY_DONTSEND_MODE):
filename = PRIVACY_HIDDENFILENAME filename = PRIVACY_HIDDENFILENAME
if (self._config['filesizePrivacyMode'] == PRIVACY_SENDHASHED_MODE): if (self._config['filesizePrivacyMode'] == PRIVACY_SENDHASHED_MODE):
size = self.__hashFilesize(size) size = utils.hashFilesize(size)
elif (self._config['filesizePrivacyMode'] == PRIVACY_DONTSEND_MODE): elif (self._config['filesizePrivacyMode'] == PRIVACY_DONTSEND_MODE):
size = 0 size = 0
return filename, size return filename, size
@ -456,15 +447,12 @@ class SyncplayUser(object):
} }
self.file = file_ self.file = file_
def isFileSame(self, file_): def isFileSame(self, file_):
def stripfilename(filename): #TODO: Add proper Unicode support
return re.sub(constants.FILENAME_STRIP_REGEX,"",filename)
if(not self.file): if(not self.file):
return False return False
sameName = stripfilename(self.file['name']) == stripfilename(file_['name']) sameName = utils.sameFilename(self.file['name'], file_['name'])
sameSize = self.file['size'] == file_['size'] sameSize = utils.sameFilesize(self.file['size'], file_['size'])
sameDuration = abs(round(self.file['duration']) - round(file_['duration'])) < constants.DIFFFERENT_DURATION_THRESHOLD sameDuration = utils.sameFileduration(self.file['duration'], file_['duration'])
return sameName and sameSize and sameDuration return sameName and sameSize and sameDuration
def __lt__(self, other): def __lt__(self, other):
@ -540,11 +528,14 @@ class SyncplayUserlist(object):
message = getMessage("en", "file-different-notification").format(username) message = getMessage("en", "file-different-notification").format(username)
self.ui.showMessage(message) self.ui.showMessage(message)
differences = [] differences = []
if(self.currentUser.file['name'] <> file_['name']): differentName = not utils.sameFilename(self.currentUser.file['name'], file_['name'])
differentSize = not utils.sameFilesize(self.currentUser.file['size'], file_['size'])
differentDuration = not utils.sameFileduration(self.currentUser.file['duration'], file_['duration'])
if(differentName):
differences.append("filename") differences.append("filename")
if(self.currentUser.file['size'] <> file_['size']): if(differentSize):
differences.append("size") differences.append("size")
if(self.currentUser.file['duration'] <> file_['duration']): if(differentDuration):
differences.append("duration") differences.append("duration")
message = getMessage("en", "file-differences-notification") + ", ".join(differences) message = getMessage("en", "file-differences-notification") + ", ".join(differences)
self.ui.showMessage(message) self.ui.showMessage(message)