def test(): file_id = "https://drive.google.com/open?id=0B60IjoJ-xHK6YU1wZ2hsQVQ0SzA" permission_id = "02914492818163807046i" action1 = { 'name': 'update', 'param': [ permission_id, 'user', 'writer', '*****@*****.**']} action2 = { 'name': 'update', 'param': [ permission_id, 'user', 'reader', '*****@*****.**']} for action in [action1, action2]: perm = GDPerm(file_id, action) result = perm.run() pprint(result) assert result[u"role"] == action["param"][2]
def run(self): if self.parent_folderId is None: parents = [] else: parents = [{ "kind": "drive#fileLink", "id": self.parent_folderId}] body = { 'title': self.folder_name, 'description': self.target_description, 'mimeType': self.mime_type, 'parents': parents} try: response_insert = self.service.files().insert(body=body).execute() except Exception as e: logger.error(e) raise else: if (self.permission is not None) and response_insert.get('id') != None: try: param = { 'name': 'insert', 'param': self.permission} perm = GDPerm(response_insert['id'], param) response_perm = perm.run() except Exception as e: logger.error(e) raise return response_insert
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
# set debug devel logger.setLevel(getattr(logging, args.debug.upper())) action = {} valid_actions = [ "list", "get", "insert", "update", "delete", "get_by_user"] for a in valid_actions: action[a] = args.__dict__[a] # check which action is given by argument for act in action: if action[act] != mutex_group.get_default(act): pass_action = {"name": act, "param": action[act]} logger.debug("pass_action=%s" % pass_action) perm = GDPerm(args.file_id, pass_action) result = perm.run() pprint(result) if result is None: sys.exit(1) else: sys.exit(0) logger.error('unexpected error') sys.exit(1)
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()