def generic_put(self, if_convert, file_name=None): if( file_name ): self.source_file = file_name media_body = MediaFileUpload( self.source_file, mimetype=self.mime_type, resumable=True) if self.folder_id == None: parents = [] else: parents = [{ "kind":"drive#fileLink", "id":self.folder_id}] body = { 'title':self.title, 'description':self.description, 'mimeType':self.mime_type, 'parents':parents} # FIXME: should impliment both update and insert for gas and non-gas file if self.target_type == "gas": request = self.service.files().update(body=body, fileId=self.file_id, media_body=media_body, convert=if_convert) else: request = self.service.files().insert(body=body, media_body=media_body, convert=if_convert) service_response = None print "Uploading file: %s" % self.source_file while service_response is None: status, service_response = request.next_chunk(num_retries=10) if status: sys.stdout.write("\rCompleted: %.2f%%" % (status.progress() * 100)) sys.stdout.flush() else: sys.stdout.write("\rCompleted!%s\n" % (" "*10)) sys.stdout.flush() if self.permission != None: GDPerm.insert(self.service, service_response['id'], self.permission) return service_response
except apiclient.errors.HttpError, error: raise Exception('An error occurred: %s' % error) # remove from root folder try: self.service.parents().delete(fileId=table_id, parentId=self.root).execute() except apiclient.errors.HttpError, error: raise Exception('Atable_idn error occurred: %s' % error) if self.location_column and self.latlng_column: url = self.ft_put_body(table_id, target_file) else: url = self.ft_put_body(table_id, self.source_file) if self.permission != None: GDPerm.insert(self.service, service_response['tableId'], self.permission) ft_url = "https://www.google.com/fusiontables/data?docid=%s" % table_id return ft_url def ft_put_body(self, table_id, target_file): params = urllib.urlencode({'isStrict': "false"}) URI = "https://www.googleapis.com/upload/fusiontables/v1/tables/%s/import?%s" % (table_id, params) METHOD = "POST" with open(target_file) as ft_file: # get the rows #ft_file.next() rows = ft_file.read()