def upload_new_files_into_archive(self, digipost_client): client = self.get_dropbox_client() for file in self.get_files_in_folder("arkiv"): f = client.get_file(file) file_name = os.path.splitext(file)[0] file_name = file_name.split(os.sep) file_name = file_name[len(file_name) - 1] data_from_response = f.read() file_hash = md5.new() file_hash.update(data_from_response) file_to_upload = open("file.pdf", "w+") file_to_upload.write(data_from_response) file_to_upload.close() file_to_upload = open("file.pdf", "rb") if not file_hash.hexdigest() in self.get_uploaded_files_hashes(): digipost_client.upload_file(file_to_upload, file_name) file_to_upload.close() os.remove("file.pdf")
def sync_digipost_dropbox(self): if not self.can_connect_to_dropbox(): return if not self.can_connect_to_digipost(): return client = self.get_dropbox_client() digipost_client = self.get_digipost_client() self.create_initial_dropbox_folders() # Upload new files in arkiv folder self.upload_new_files_into_archive(digipost_client) print "done uploading new files" for box in postboxes: print "performing %s" % box digipost_hash = self.get_digipost_hashes(digipost_client) for file in self.get_files_in_folder(box): f = client.get_file(file) file_hash = md5.new() file_hash.update(f.read()) # Finner filer som ligger i mapper de ikke ligger i digipost if not file_hash.hexdigest() in digipost_hash[box]: for b in postboxes: # Finner hvilken mappe filen egentlig tilhører (om den gjør det) if file_hash.hexdigest() in digipost_hash[b]: for digipost_file in digipost_client.get_files(b): f = digipost_file.get_content().read() file_hash_digipost_file = md5.new() file_hash_digipost_file.update(f) # Fant filens egentlige mappe, dvs, at den ikke er slettet men flyttet. if file_hash.hexdigest() == file_hash_digipost_file.hexdigest(): if box == u"arkiv": digipost_file.move_to_arkiv() else: digipost_file.move_to_kjokkenbenk() print "done check for moving files" digipost_hash = self.get_digipost_hashes(digipost_client) dropbox_hashes = [] for file in self.get_files_in_folder(box): f = client.get_file(file) file_hash = md5.new() file_hash.update(f.read()) if not file_hash.hexdigest() in digipost_hash[box]: client.file_delete(file.encode("utf-8")) dropbox_hashes.append(file_hash.hexdigest()) print "done remove deleted files" for file in digipost_client.get_files(box): f = file.get_content().read() file_hash = md5.new() file_hash.update(f) if file_hash.hexdigest() in digipost_hash[box] and file_hash.hexdigest() not in dropbox_hashes: client.put_file("/" + box + "/" + file.emne + ".pdf", f) DropboxUploadedFileHashes.objects.get_or_create(user=self, hash=file_hash.hexdigest()) print "done create new files"