예제 #1
0
    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")
예제 #2
0
    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"