Shopify / Shopify/shopify_python_api

Error reporting POST to Product error

Đang mở
#209 0 bình luận 0 reaction 0 người được giao Xem trên GitHub

Chưa có ai nhận issue này.

feature request
Ngôn ngữ chính
Python
Star
1.4k
Fork
388
Merge trung bình
5 giờ 39 phút
Pull request đã merge (30 ngày)
1

Mô tả

When there is an error in the product or variants that are sent via post to the Product endpoint, the error message is structured in a way that the underlying pyactiveresource.connection.ResourceInvalid object cannot decode it properly, which leads to a very un-informative error.
Please see stacktrace below:

Traceback (most recent call last):
  File "C:\Users\user\Dropbox\virtualenvs\lighting\lib\site-packages\pyactiveresource\connection.py", line 286, in _open
    http_response = self._handle_error(self._urlopen(request))
  File "C:\Users\user\Dropbox\virtualenvs\lighting\lib\site-packages\pyactiveresource\connection.py", line 318, in _urlopen
    return urllib.request.urlopen(request)
  File "C:\Python34\lib\urllib\request.py", line 161, in urlopen
    return opener.open(url, data, timeout)
  File "C:\Python34\lib\urllib\request.py", line 469, in open
    response = meth(req, response)
  File "C:\Python34\lib\urllib\request.py", line 579, in http_response
    'http', request, response, code, msg, hdrs)
  File "C:\Python34\lib\urllib\request.py", line 507, in error
    return self._call_chain(*args)
  File "C:\Python34\lib\urllib\request.py", line 441, in _call_chain
    result = func(*args)
  File "C:\Python34\lib\urllib\request.py", line 587, in http_error_default
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
urllib.error.HTTPError: HTTP Error 422: Unprocessable Entity

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\user\Dropbox\virtualenvs\lighting\lib\site-packages\pyactiveresource\activeresource.py", line 824, in save
    data=self.encode())
  File "C:\Users\user\Dropbox\virtualenvs\lighting\lib\site-packages\pyactiveresource\connection.py", line 364, in post
    return self._open('POST', path, headers=headers, data=data)
  File "C:\Users\user\Dropbox\virtualenvs\lighting\lib\site-packages\shopify\base.py", line 23, in _open
    self.response = super(ShopifyConnection, self)._open(*args, **kwargs)
  File "C:\Users\user\Dropbox\virtualenvs\lighting\lib\site-packages\pyactiveresource\connection.py", line 288, in _open
    http_response = self._handle_error(err)
  File "C:\Users\user\Dropbox\virtualenvs\lighting\lib\site-packages\pyactiveresource\connection.py", line 414, in _handle_error
    raise ResourceInvalid(err)
pyactiveresource.connection.ResourceInvalid: Response(code=422, body="b'{"errors":{"base":["The variant \'Antique Bronze \\/ Ice pattern\' already exists. Please change at least one option value."]}}'", headers={'X-XSS-Protection': '1; mode=block; report=/xss-report?source%5Baction%5D=create&source%', 'X-Frame-Options': 'DENY', 'X-Stats-UserId': '0', 'X-Content-Type-Options': 'nosniff', , 'Date': 'Wed, 06 Sep 2017 17:17:23 GMT', 'Strict-Transport-Security': 'max-age=7776000', 'X-Stats-ApiPermissionId': '42905249', 'X-Sorting-Hat-PodId-Cached': '0', 'Content-Security-Policy': "default-src 'self' data: blob: 'unsafe-inline' 'unsafe-eval' https://* shopify-pos://*; block-all-mixed-content; child-src 'self' https://* shopify-pos://*; connect-src 'self' wss://* https://*; script-src https://cdn.shopify.com https://checkout.shopifycs.com https://js-agent.newrelic.com https://bam.nr-data.net https://dme0ih8comzn4.cloudfront.net https://api.stripe.com https://mpsnare.iesnare.com https://appcenter.intuit.com https://www.paypal.com https://maps.googleapis.com https://stats.g.doubleclick.net https://www.google-analytics.com https://visitors.shopify.com https://v.shopify.com https://widget.intercom.io https://js.intercomcdn.com 'self' 'unsafe-inline' 'unsafe-eval'; upgrade-insecure-requests; report-uri /csp-report?source%5Baction%5D=create&source%5Bapp%5D=Shopify&source%5Bcontroller%5D=admin%2Fproducts&source%5Bsection%5D=admin_api&source%5Buuid%5D=5e3df701-e2e3-4b70-bda3-b7d15592a0f5", 'X-Sorting-Hat-ShopId-Cached': '0', 'Connection': 'close', 'Referrer-Policy': 'origin-when-cross-origin', 'X-Request-Id': '5e3df701-e2e3-4b70-bda3-b7d15592a0f5', 'X-Shopify-Shop-Api-Call-Limit': '1/40', 'Content-Type': 'application/json; charset=utf-8', 'Server': 'nginx', 'X-ShardId': '15', 'X-Dc': 'ash', 'Transfer-Encoding': 'chunked', 'X-Download-Options': 'noopen', 'X-Permitted-Cross-Domain-Policies': 'none', 'HTTP_X_SHOPIFY_SHOP_API_CALL_LIMIT': '1/40', 'X-Sorting-Hat-PodId': '15', 'X-Sorting-Hat-Section': 'pod'}, msg="Unprocessable Entity")

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\user\Dropbox\virtualenvs\lighting\xologic_connection\product.py", line 692, in create_on_shopify
    success = new_product.save()
  File "C:\Users\user\Dropbox\virtualenvs\lighting\lib\site-packages\pyactiveresource\activeresource.py", line 832, in save
    self.errors.from_json(err.response.body)
AttributeError: 'list' object has no attribute 'from_json'
```
The relevant error is 
`body="b'{"errors":{"base":["The variant \'Antique Bronze \\/ Ice pattern\' already exists. Please change at least one option value."]}}'", `

It would be nice to get just that.

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Bắt đầu từ đâu

  1. Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
  2. Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
  3. Fork repository và làm thay đổi trên một nhánh.
  4. Mở pull request có tham chiếu số hiệu của issue.

Hướng nghiên cứu

Bắt đầu tại xologic_connection/product.py dòng 692 và lần theo luồng lưu cũng như xử lý lỗi qua ngăn xếp pyactiveresource được nêu trong báo cáo. Tái hiện phản hồi 422 đối với một product không hợp lệ hoặc variant trùng lặp, sau đó xác minh rằng thông báo xác thực bên dưới của Shopify được hiển thị thay vì AttributeError.

Do mô hình lập chỉ mục viết ra từ nội dung của issue.

Đánh giá

Công nghệ
python
Lĩnh vực
api, backend
Loại issue
Lỗi
Độ khó
3/5
Thời gian dự kiến
1-2 ngày
Mức độ hoạt động
Đình trệ
Độ rõ ràng
Khá rõ ràng
Mức phù hợp với người mới
35/100

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.