def calculate_file_checksum(file_id): logger.info("Calculate file checksum for file:%s", file_id) try: f = File.objects.get(id=file_id) except File.DoesNotExist: return None else: try: checksum = sha1(f.path) f.checksum = checksum f.save(update_fields=['checksum']) except FailedToCalculateChecksum as e: logger.info("Failed to calculate checksum. Error:%s", f.path) return []
def calculate_checksum(file_id, path): try: checksum = sha1(path) except FailedToCalculateChecksum as e: logger.info("Failed to calculate checksum for file: %s: %s", file_id, path) raise FailedToCalculateChecksum("Failed to calculate checksum. Error: File %s not found", file_id) try: f = File.objects.get(id=file_id) f.checksum = checksum f.save(update_fields=["checksum"]) except File.DoesNotExist: logger.info("Failed to calculate checksum. Error: File %s not found", file_id) raise FailedToCalculateChecksum("Failed to calculate checksum. Error: File %s not found", file_id) return []
def populate_file_checksums(): logger.info("Calculating file checksum") files = File.objects.all() for f in files: logger.info("Processing file:%s checksum" % str(f.id)) if not f.checksum: logger.debug("Calculating file:%s checksum" % str(f.id)) try: checksum = sha1(f.path) f.checksum = checksum f.save() except FailedToCalculateChecksum as e: logger.info("Failed to calculate checksum. Error:%s", f.path) sleep(1) return []