prestapyt无法上传新产品

时间:2016-09-07 21:30:08

标签: php python database prestashop

我试图创建一个脚本,通过Python将产品添加到prestashop。

我使用prestapyt库;我可以读取文件,我可以获取新文件的模板,但我无法上传新文件。这就是我所拥有的:

from prestapyt import PrestaShopWebServiceError
from prestapyt import PrestaShopWebService
from prestapyt import PrestaShopWebServiceDict

DEBUG = 'true'
PS_SHOP_PATH = MYPATH
PS_WS_AUTH_KEY = MYKEY

prestashop = PrestaShopWebServiceDict(PS_SHOP_PATH, PS_WS_AUTH_KEY, DEBUG)
myproducts = prestashop.search('products');
addNewProduct(prestashop)

,其中

def addNewProduct(prestashop):
    blank_product = prestashop.get('products', options={'schema': 'blank'});
    pprint(blank_product)
    blank_product.update({'active': '1',
                 'additional_shipping_cost': '',
                 'advanced_stock_management': '',
                 'description': {'language': {'attrs': {'id': '2'}, 'value': 'DESCRIPTION!!!'}},
                 'description_short': {'language': {'attrs': {'id': '2'},
                                                    'value': 'SHORT DESCRIPTION!!!'}},
                 'id': '23',
                 'id_category_default': '2',
                 'name': {'language': {'attrs': {'id': '2'}, 'value': 'NAME'}},
                 'new': '1',
                 'price': '23',
                 'reference': 'MYREF',
                 'show_price': '1',
                 'width': ''})
        prestashop.add('products', blank_product)

运行此脚本时,我得到以下内容:

  

执行url:MYPATH / api / products / method:POST响应代码:400

     

回复标题:

     

{' status':' 400',' psws-version':' 1.6.1.6',   ' x-powered-by':' PrestaShop Webservice',' transfer-encoding':   ' chunked',' set-cookie':   '的PrestaShop-a0d2999cb4d9d838ea9bbca3cf8a7a22 = gv2rmNYce013aHwM2TQ7718d8sl%2BCmTtT1hO7pqS6ItiGKUPTa%2FGUwpTprJh9pihDKJbQNq4DKb0N6SYqC5nxBM4Q%2F1AFCrubceV8yPEcMo%3D000079;   到期= 2016年9月27日星期二21:15:16 GMT;最大年龄= 1728000;   路径= mypath中;域=东西;仅Http&#39 ;,   '访问时间':' 1473282916','连接':'关闭','执行时间':   ' 0.008',' date':' Wed,07 Sep 2016 21:15:16 GMT',' server':' ;阿帕奇&#39 ;,   '内容类型':' text / xml; charset = utf-8'}

     

回应机构:            

     

' PrestaShop错误:400错误请求。内部错误。要查看此错误   请显示PHP错误。'

任何想法?

谢谢!

更新: 我添加了你的建议,这就是我得到的:

Traceback (most recent call last):
File "Script.py", line 24, in <module>
prestashop.edit('products', 1, address_data)

File "build/bdist.macosx-10.11-intel/egg/prestapyt/prestapyt.py", line 363, in edit
File "SAME", line 516,
in edit_with_url File "SAME", line 374,
in edit_with_url File "SAME", line 196,
in _execute File "SAME", line 127,
in _check_status_code

prestapyt.prestapyt.PrestaShopWebServiceError: 'PrestaShop error: 400 Bad Request. Internal error. To see this error please display the PHP errors.'

它在这里打破了:

address_data = prestashop.get('products', 1)
address_data['active'] = '0'
prestashop.edit('products', 1, address_data) -> THIS LINE

任何新想法?谢谢!

1 个答案:

答案 0 :(得分:0)

您应该blank_product['product'].update(...)代替blank_product.update(...),空白架构结构为:{product: {...}}

在使用edit()功能时的编辑中,您不必指定产品ID,而是从address_data字段(至少使用当前版本)收集它。但是,你必须再次以这种方式编辑字段:address_data['product]['active'] ='0'

希望这有帮助。