创建后无法发布资产或将资产处理为有争议的内容

时间:2020-06-02 12:38:57

标签: python contentful contentful-management

我正在将Python客户端用于Contentful Content Management API,目前无法处理或发布资产。在每种情况下,API都会返回:

contentful_management.errors. NotFoundError: HTTP status code: 404 Message: The resource could not be found. Details: The requested Asset could not be found.

创建资产后,我可以访问其ID,因此假设那时我应该能够处理和发布。我的代码如下。有人知道我可能在做错什么吗?

"""
Creating an asset requires three steps and API calls:

1. Create an asset.
2. Process an asset.
3. Publish an asset.
"""

def create_asset(self, path):
    p = os.path.abspath(path)
    return self.authorised_user.uploads(self.test_space_id).create(p)

def process_asset(self, asset_id):
    asset = self.authorised_user.assets(self.test_space_id, self.test_environment_id).find(asset_id)
    asset.process()

def publish_asset(self, asset_id):
    asset = self.authorised_user.assets(self.test_space_id, self.test_environment_id).find(asset_id)
    asset.publish()

1 个答案:

答案 0 :(得分:0)

您正在上传文件,但没有在create_asset函数中创建资产。这是执行所有步骤的代码:

import os
import time
from contentful_management import Client

client = Client(os.environ['CMA_TOKEN'])
space_id = 'space_id'
environment_id = 'master'
title = 'Title'
file_to_upload = '/path/to/file/image.jpeg'
fileName = os.path.basename
contentType = 'image/jpeg'

new_upload = client.uploads(space_id).create(file_to_upload)

file_attributes = {
    'fields': {
        'title': {
            'en-US': title
        },
        'file': {
            'en-US': {
                'fileName': fileName,
                'contentType': contentType,
                'uploadFrom': new_upload.to_link().to_json()
            }
        }
    }
}

new_asset = client.assets(space_id, environment_id).create(
   None, # change this to a string if you want to specify the asset ID
   file_attributes
 )

new_asset.process()

# it might take a few seconds for the asset processing to complete
while new_asset.url is None:
    time.sleep(1)
    new_asset.reload()

new_asset.publish()