Shopify / Shopify/shopify_python_api

Error reporting POST to Product error

Offen
#209 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

feature request
Vorherrschende Sprache
Python
Sterne
1.4k
Forks
388
Ø Merge
5 Std. 39 Min.
Gemergte PRs (30 T.)
1

Beschreibung

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.

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne bei xologic_connection/product.py Zeile 692 und verfolge den Save- und Fehlerbehandlungspfad durch den im Bericht gezeigten pyactiveresource-Stack. Reproduziere die 422-Antwort für ein ungültiges Produkt oder eine doppelte Variante und überprüfe anschließend, dass die zugrunde liegende Shopify-Validierungsmeldung statt des AttributeError offengelegt wird.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
api, backend
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.