def _getFirstFileByHash(self, algo, hash, user=None): """ Return the first file that the user has access to given its hash and its associated hashsum algorithm name. :param algo: Algorithm the given hash is encoded with. :param hash: Hash of the file to find. :param user: User to test access against. Default (none) is the current user. :return: A file document. """ self._validateAlgo(algo) query = {algo: hash} fileModel = FileModel() cursor = fileModel.find(query) if not user: user = self.getCurrentUser() for file in cursor: if fileModel.hasAccess(file, user, AccessType.READ): return file return None
def getByHash(self, algo, hash): self._validateAlgo(algo) model = FileModel() user = self.getCurrentUser() cursor = model.find({algo: hash}) return [file for file in cursor if model.hasAccess(file, user, AccessType.READ)]