예제 #1
0
    def fetchFolderTree(self,
                        path='/content/dam',
                        csv_file='output/folder_tree.csv',
                        props=['jcr:path', 'jcr:content/jcr:title']):
        '''
        Fetches the folder structure under the given path and writes it to an output csv file 
        '''
        folder_data = []
        url = urls['fetchFolderTree'] + path
        url = url.replace('$props', ' '.join(props))

        logging.debug(url)

        response = self.conn.get(url)
        if response.success:
            folder_data.append(props)
            for folder in response.data[keys.assets_key]:
                folder_props = []
                for key in props:
                    folder_props.append(self._metaVal(folder, key))
                folder_data.append(folder_props)
            logging.debug("Writing folder list to : " + csv_file)
            dir, fname = dir_n_file(csv_file, 'csv')
            env = Env(dir)
            env.writeCSV(fname, data=folder_data)
        else:
            logging.error('Error fetching folder list')
            logging.error('Failed due to : ' + response.message)
            logging.error('Empty list returned')
        return folder_data
예제 #2
0
    def xprops(self,
               path='/content/dam',
               props=['jcr:path', 'jcr:content/metadata/dc:title'],
               csv_file='output/asset_props.csv'):
        '''
        Extracts the metadata properties of the assets under the given path and writes it to an output csv file 
        '''
        asset_data = []
        url = urls['xprops'] + path
        url = url.replace('$props', ' '.join(props))

        logging.debug(url)

        response = self.conn.get(url)
        if response.success:
            asset_data.append(props)
            for asset in response.data[keys.assets_key]:
                asset_props = []
                for key in props:
                    asset_props.append(self._metaVal(asset, key))
                asset_data.append(asset_props)
            logging.debug("Writing asset list of assets to : " + csv_file)
            dir, fname = dir_n_file(csv_file, 'csv')
            env = Env(dir)
            env.writeCSV(fname, data=asset_data)
            return True
        else:
            logging.error('Error extracting asset properties')
            logging.error('Failed due to : ' + response.message)
            logging.error('Empty list returned')
        return False
예제 #3
0
    def createFolderTree(self,
                         path='/content/dam',
                         srcDir=None,
                         srcList=None,
                         ignore_error=False):
        '''
        Creates the folder tree structure in DAM under the given path, reflecting the structure in local dir 
        '''
        dirList = []

        if srcList:
            if isinstance(srcList, list):
                dirList += cleanseDirList('', srcList, path)
            elif isinstance(srcList, str):
                headers, types, csv_data = self._csvRead(srcList, False, False)
                for row in csv_data:
                    dirList += cleanseDirList('', row, path)
            else:
                logging.error('Invalid input for srcList')

        if srcDir:
            env = Env(srcDir)
            dirList += cleanseDirList(srcDir, env.listDirs(), path)

        logging.debug('Creating Folders for - ' + str(dirList))
        overall_status = True
        for dir in dirList:
            logging.debug('Creating Folder - ' + dir)
            status = self.createFolder(dir)
            overall_status &= status
        return overall_status
예제 #4
0
    def list(self,
             path='/content/dam',
             csv_dump=False,
             csv_file='output/asset_list.csv'):
        '''
        Get the list of all assets under the path given as parameter and optionally write it to a CSV file
        '''

        asset_list = []
        url = urls['list'] + path

        logging.debug('URL : ' + url)

        response = self.conn.get(url)

        if response.success:
            for e in response.data[keys.assets_key]:
                asset_list.append(e[keys.path_key])
        else:
            logging.error('Error getting the assets list')
            logging.error('Failed due to : ' + response.message)
            logging.error('Empty list returned')
        if csv_dump or csv_file:
            logging.debug("Writing asset list of assets to : " + csv_file)
            dir, fname = dir_n_file(csv_file, 'csv')
            env = Env(dir)
            env.writeCSV(fname, list=asset_list)
        return asset_list
예제 #5
0
    def uploadFolder(self, dir='upload', path='/content/dam'):
        '''
        Upload all the assets under the dir parameter. 
        Folder structure under dir replicated onto DAM, under the path specified
        '''

        env = Env(dir)
        path_map = cleansePaths(dir, env.listFiles(), path)
        overall_status = True
        for file in path_map:
            logging.debug('Uploading file - ' + file)
            status = self.uploadAsset(file, path_map[file])
            overall_status &= status
        return overall_status
예제 #6
0
 def downloadFolder(self,
                    path='/content/dam',
                    dir='download',
                    retain_dam_path=True):
     '''
     Downlods all assets under the mentioned DAM path to the dir
     '''
     asset_list = self.list(path)
     logging.debug("Asset list : " + str(asset_list))
     overall_status = True
     if asset_list:
         env = Env(dir)
         for asset in asset_list:
             status = self._download(asset, env, retain_dam_path)
             overall_status &= status
     return overall_status
예제 #7
0
 def downloadAsset(self, asset_path, dir='download', retain_dam_path=False):
     '''
     Downlods the asset to the dir
     '''
     env = Env(dir)
     return self._download(asset_path, env, retain_dam_path)