示例#1
0
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]
示例#2
0
    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
示例#3
0
文件: put.py 项目: thinkle/gdcmdtools
    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
示例#4
0
    # 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)
示例#5
0
文件: put.py 项目: thinkle/gdcmdtools
            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()