Пример #1
0
 def stream_binary_file(self, filename, progress_bar=True):
     binary_file = file_(filename, "rb")
     file_size = path_getsize(filename)
     buffer = binary_file.read(self.BUFFER_SIZE)
     if progress_bar:
         self.ui.set_progress_range(file_size)
         self.ui.set_progress_update_interval(file_size/50)
         self.ui.increase_progress(len(buffer))
     while buffer:
         yield buffer
         buffer = binary_file.read(self.BUFFER_SIZE)
         if progress_bar:
             self.ui.increase_progress(len(buffer))
     if progress_bar:
         self.ui.set_progress_value(file_size)
Пример #2
0
 def stream_binary_file(self, filename, progress_bar=True):
     binary_file = file_(filename, "rb")
     file_size = path_getsize(filename)
     buffer = binary_file.read(self.BUFFER_SIZE)
     if progress_bar:
         self.ui.set_progress_range(file_size)
         self.ui.set_progress_update_interval(file_size / 50)
         self.ui.increase_progress(len(buffer))
     while buffer:
         yield buffer
         buffer = binary_file.read(self.BUFFER_SIZE)
         if progress_bar:
             self.ui.increase_progress(len(buffer))
     if progress_bar:
         self.ui.set_progress_value(file_size)
Пример #3
0
 def put_client_binary_files(self, filenames, total_size):   
     # Filenames are relative to the data_dir.
     self.ui.set_progress_range(total_size)
     self.ui.set_progress_update_interval(total_size/50)
     for filename in filenames:
         self.request_connection()
         self.con.putrequest("PUT",
             self.url("/client_binary_file?session_token=%s&filename=%s" \
             % (self.server_info["session_token"],
             urllib.quote(filename.encode("utf-8"), ""))))
         full_path = path_join(self.database.data_dir(), filename)
         file_size = path_getsize(full_path)
         self.con.putheader("content-length", file_size)
         self.con.endheaders()
         for buffer in self.stream_binary_file(full_path, progress_bar=False):
             self.con.send(buffer)
             self.ui.increase_progress(len(buffer))
         self._check_response_for_errors(self.con.getresponse())
     self.ui.set_progress_value(total_size)
Пример #4
0
 def put_client_media_files(self, reupload_all=False):
     self.ui.set_progress_text("Sending media files...")
     # Get list of filenames in the format <mediadir>/<filename>, i.e.
     # relative to the data_dir. Note we always use / internally. 
     subdir = os.path.basename(self.database.media_dir())
     if reupload_all:
         filenames = [subdir + "/" + filename for filename in \
                      self.database.all_media_filenames()]
     else:
         filenames = [subdir + "/" + filename for filename in \
                      self.database.media_filenames_to_sync_for(\
                      self.server_info["machine_id"])]
     # Calculate file size and upload.
     total_size = 0
     for filename in filenames:
         total_size += path_getsize(os.path.join(\
             self.database.data_dir(), filename))
     self.put_client_binary_files(filenames, total_size)
     self.ui.close_progress()
Пример #5
0
 def put_client_media_files(self, reupload_all=False):
     self.ui.set_progress_text("Sending media files...")
     # Get list of filenames in the format <mediadir>/<filename>, i.e.
     # relative to the data_dir. Note we always use / internally.
     subdir = os.path.basename(self.database.media_dir())
     if reupload_all:
         filenames = [subdir + "/" + filename for filename in \
                      self.database.all_media_filenames()]
     else:
         filenames = [subdir + "/" + filename for filename in \
                      self.database.media_filenames_to_sync_for(\
                      self.server_info["machine_id"])]
     # Calculate file size and upload.
     total_size = 0
     for filename in filenames:
         total_size += path_getsize(os.path.join(\
             self.database.data_dir(), filename))
     self.put_client_binary_files(filenames, total_size)
     self.ui.close_progress()
Пример #6
0
 def put_client_binary_files(self, filenames, total_size):
     # Filenames are relative to the data_dir.
     self.ui.set_progress_range(total_size)
     self.ui.set_progress_update_interval(total_size / 50)
     for filename in filenames:
         self.request_connection()
         self.con.putrequest("PUT",
             self.url("/client_binary_file?session_token=%s&filename=%s" \
             % (self.server_info["session_token"],
             urllib.quote(filename.encode("utf-8"), ""))))
         full_path = path_join(self.database.data_dir(), filename)
         file_size = path_getsize(full_path)
         self.con.putheader("content-length", file_size)
         self.con.endheaders()
         for buffer in self.stream_binary_file(full_path,
                                               progress_bar=False):
             self.con.send(buffer)
             self.ui.increase_progress(len(buffer))
         self._check_response_for_errors(self.con.getresponse())
     self.ui.set_progress_value(total_size)