Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow plugins to create their custom error code #9300

Merged
merged 12 commits into from Mar 22, 2022
Merged

Conversation

LeOndaz
Copy link
Contributor

@LeOndaz LeOndaz commented Mar 4, 2022

Plugins which expose graphql playgrounds using their webhooks couldn't create their own error codes because of this check.

Note that plugins can create graphql playgrounds since #8665

@LeOndaz
Copy link
Contributor Author

LeOndaz commented Mar 4, 2022

This is tested

Please tell me what you think guys: @patrys @maarcingebala @korycins

Thank you.

@db-queries
Copy link

db-queries bot commented Mar 6, 2022

Here is the report for 3642744 (LeOndaz:main)
Base comparison is 3697e0c.

No differences were found.

# saleor.graphql.accountbenchmark account
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  addresses for federation query count                                    	          9	          9	              2
  customers query                                                         	         48	         48	              0
  delete staff members                                                    	         35	         35	              0
  query staff user                                                        	         18	         18	              3
  staff create                                                            	         23	         23	              3
  staff update groups and permissions                                     	         35	         35	              5
  users for federation query count                                        	          8	          8	              3

# saleor.graphql.accountbenchmark permission group
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  groups for federation query count                                       	          5	          5	              2
  permission group create                                                 	         21	         21	              2
  permission group delete                                                 	         22	         22	              3
  permission group query                                                  	          7	          7	              0
  permission group update                                                 	         35	         35	              1
  permission group update remove users with manage staff                  	         29	         29	              3

# saleor.graphql.appbenchmarks app extensions
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  app extensions                                                          	         15	         15	              0
  app extensions with filter[filter0]                                     	         14	         14	              0
  app extensions with filter[filter1]                                     	         10	         10	              0
  app extensions with filter[filter2]                                     	         14	         14	              0
  app extensions with filter[filter3]                                     	         10	         10	              0

# saleor.graphql.appbenchmarks apps
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  apps for federation query count                                         	          9	          9	              3

# saleor.graphql.attributebenchmark attribute
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  attribute translation                                                   	          6	          6	              0
  attribute value translation                                             	         26	         26	              0
  query attribute                                                         	          6	          6	              0
  query attributes                                                        	          8	          8	              0

# saleor.graphql.checkoutbenchmark checkout mutations
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  add billing address to checkout                                         	         46	         46	              4
  add checkout lines                                                      	         56	         56	              4
  add checkout lines with external shipping                               	         95	         95	             15
  add checkout lines with reservations                                    	        120	        120	             38
  add delivery to checkout                                                	         60	         60	              8
  add shipping to checkout                                                	         63	         63	              8
  checkout email update                                                   	         26	         26	              0
  checkout payment charge                                                 	         40	         40	             15
  checkout shipping address update                                        	         65	         65	             12
  checkout voucher code                                                   	         67	         67	             10
  complete checkout                                                       	        138	        138	             23
  complete checkout preorder                                              	        156	        156	             35
  complete checkout with digital line                                     	        198	        198	             49
  complete checkout with out of stock webhook                             	        140	        140	             23
  complete checkout with single line                                      	        140	        140	             23
  create checkout                                                         	         69	         69	             10
  create checkout for cc                                                  	         64	         64	              8
  create checkout with reservations                                       	        117	        117	             20
  customer complete checkout                                              	        153	        153	             27
  customer complete checkout for cc                                       	        156	        156	             30
  update checkout lines                                                   	         49	         49	              4
  update checkout lines with reservations                                 	        124	        124	             49

# saleor.graphql.checkoutbenchmark homepage
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  user checkout details                                                   	         36	         36	              2

# saleor.graphql.discountbenchmark sales
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  sales query with channel slug                                           	         19	         19	              0
  sales query withot channel slug                                         	         18	         18	              0

# saleor.graphql.discountbenchmark vouchers
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  vouchers query with channel slug                                        	         19	         19	              0
  vouchers query withot channel slug                                      	         18	         18	              0

# saleor.graphql.giftcardbenchmark gift card mutations
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  create never expiry gift card                                           	         28	         28	              4
  gift card bulk activate by staff                                        	         15	         15	              3
  update gift card                                                        	         36	         36	              4

# saleor.graphql.giftcardbenchmark gift card queries
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  filter gift cards by products                                           	         14	         14	              3
  filter gift cards by tags                                               	         12	         12	              3
  filter gift cards by used by user                                       	         13	         13	              3
  query gift card details                                                 	         13	         13	              3
  query gift cards                                                        	         12	         12	              3

# saleor.graphql.orderbenchmark fulfillment refund and return products
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  fulfillment refund products order lines                                 	         55	         55	              2
  fulfillment return products order lines                                 	        107	        107	             14

# saleor.graphql.orderbenchmark order
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  staff multiple draft orders                                             	        539	        539	            445
  staff multiple orders                                                   	        159	        159	             86
  staff order details                                                     	         45	         45	              8
  user order details                                                      	         43	         43	              9

# saleor.graphql.orderbenchmark order fulfill
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  order fulfill                                                           	         19	         19	              3
  order fulfill with gift cards                                           	         19	         19	              3

# saleor.graphql.pagebenchmark page type
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  page types for federation query count                                   	          3	          3	              0
  query page type                                                         	         19	         19	              7
  query page types                                                        	         25	         25	             12

# saleor.graphql.productbenchmark category
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  categories children                                                     	          3	          3	              0
  categories for federation query count                                   	          3	          3	              0
  category delete                                                         	         85	         85	             16
  category view                                                           	         26	         26	              1

# saleor.graphql.productbenchmark collection
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  collection add products                                                 	         36	         36	              6
  collection bulk delete                                                  	         47	         47	              8
  collection view                                                         	          6	          6	              0
  collections for federation query count                                  	          7	          7	              2
  create collection                                                       	         36	         36	              5
  delete collection                                                       	         39	         39	              7
  remove products from collection                                         	         33	         33	              6
  retrieve collection channel listings                                    	          5	          5	              0

# saleor.graphql.productbenchmark homepage
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  report product sales                                                    	         10	         10	              3
  retrieve product list                                                   	          4	          4	              0

# saleor.graphql.productbenchmark product
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  filter products by attributes                                           	          9	          9	              0
  filter products by boolean attributes                                   	         19	         19	              0
  filter products by gift card                                            	         11	         11	              1
  filter products by numeric attributes                                   	         18	         18	              0
  product create                                                          	         73	         73	              8
  product details                                                         	         33	         33	              0
  product translations                                                    	          5	          5	              0
  products for federation query count                                     	          6	          6	              2
  products media for federation query count                               	          3	          3	              0
  products types for federation query count                               	          2	          2	              0
  retrieve channel listings                                               	         17	         17	              0
  retrieve product attributes                                             	          9	          9	              0
  retrieve product images                                                 	          4	          4	              0
  retrieve product media                                                  	          4	          4	              0
  retrive products with product types and attributes                      	          7	          7	              0
  update product                                                          	         51	         51	             11

# saleor.graphql.productbenchmark product variant channel listing update
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  variant channel listing update                                          	         45	         45	              3

# saleor.graphql.productbenchmark variant
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  product variant bulk create                                             	         66	         66	              3
  product variant create                                                  	         80	         80	              5
  products variants for federation query count                            	          6	          6	              2
  retrieve variant list                                                   	         28	         28	              2
  update product variant                                                  	         78	         78	              9

# saleor.graphql.productbenchmark variant stocks
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  product variants stocks create                                          	         27	         27	              5
  product variants stocks create with single webhook called               	         25	         25	              5
  product variants stocks delete                                          	         27	         27	              5
  product variants stocks delete with out of stock webhook many calls     	         23	         23	              3
  product variants stocks update                                          	         29	         29	              5
  query product variants stocks                                           	         10	         10	              0

# saleor.graphql.producttest product sorting attributes
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  sort product not having attribute data                                  	         23	         23	              0

# saleor.graphql.shippingbenchmark shipping methods
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  vouchers query with channel slug                                        	          9	          9	              0
  vouchers query without channel slug                                     	          9	          9	              0

# saleor.graphql.shopbenchmark homepage
  test name                                                               	left count 	right count	duplicate count
  ------------------------------------------------------------------------	-----------	-----------	---------------
  retrieve shop                                                           	          4	          4	              0

@codecov
Copy link

codecov bot commented Mar 6, 2022

Codecov Report

Merging #9300 (3642744) into main (3697e0c) will decrease coverage by 0.00%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main    #9300      +/-   ##
==========================================
- Coverage   93.37%   93.36%   -0.01%     
==========================================
  Files         540      540              
  Lines       42415    42390      -25     
  Branches     7122     7119       -3     
==========================================
- Hits        39603    39578      -25     
  Misses       1831     1831              
  Partials      981      981              
Impacted Files Coverage Δ
saleor/graphql/core/utils/error_codes.py 100.00% <100.00%> (ø)
saleor/plugins/vatlayer/plugin.py 80.83% <100.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update 3697e0c...3642744. Read the comment docs.

@LeOndaz
Copy link
Contributor Author

LeOndaz commented Mar 6, 2022

This is just to notify you about the existence of this PR: @patrys @maarcingebala @korycins or at least tell me about someone who's regularly active in here that I contact because I'm regularly active in the repo.

Thank you.

@maarcingebala maarcingebala requested a review from a team March 7, 2022 06:50
Comment on lines -103 to -104
if code not in saleor_error_codes:
return "invalid"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think the changes look good but I'm wondering if we need to remove this part. Can you provide an example of how you raise those custom errors in your plugin? I think if you used an enum to represent errors, the code would be handled in the previous condition and removing this one wouldn't be necessary? I mean for example this usage:

code=AccountErrorCode.DELETE_OWN_ACCOUNT

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@maarcingebala A plugin exposes a playground at /plugins/plugin-id/ and has a ModelMutation with an error_type_class of a custom error created with a custom enum created, always says "expected a value of type error_type_class_here, received invalid"

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This part restricts the codes to be from the internal saleor error codes, we want to add custom ones in this case

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The workaround currently is to use any random error code from saleor itself, but this does not help when extending the dashboard because you usually show a message depending on the code

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So yes, your example works perfectly, because AccountErrorCode is in saleor_error_codes but MyPluginErrorCode is not

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've checked and you're right. We can remove this part then, but in this case, we should also remove saleor_error_codes and SALEOR_ERROR_CODE_ENUMS which won't be needed anymore.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Great then, I haven't seen if they were used elsewhere, I'll check and if so, I'll remove them in a few minutes

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've currently pushed the commit, if it passes, you're good to go

@maarcingebala
Copy link
Member

It seems we have a broken import in Vatlayer:

File "/__w/saleor/saleor/saleor/plugins/vatlayer/plugin.py", line [21](https://github.com/saleor/saleor/runs/5445815716?check_suite_focus=true#step:7:21), in <module>
    from ...graphql.core.utils.error_codes import PluginErrorCode
ImportError: cannot import name 'PluginErrorCode' from 'saleor.graphql.core.utils.error_codes' (/__w/saleor/saleor/saleor/graphql/core/utils/error_codes.py)

It's importing PluginErrorCode from the wrong file.

@LeOndaz
Copy link
Contributor Author

LeOndaz commented Mar 7, 2022

@maarcingebala yes I'm currently aware of this and trying to see anything that imports from error_codes atm

@LeOndaz
Copy link
Contributor Author

LeOndaz commented Mar 7, 2022

Okay I think we don't have anything other than that, I ran pre-commit and it went fine

@maarcingebala
Copy link
Member

@LeOndaz Black fails in CI, can you reformat files once again? Also, I upgraded Black to the newest version yesterday.

@maarcingebala maarcingebala requested a review from a team March 8, 2022 07:50
Comment on lines 35 to 36
from ...product.models import (Collection, Product, ProductVariant,
ProductVariantChannelListing)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this formatting is incorrect now.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@LeOndaz Black fails in CI, can you reformat files once again? Also, I upgraded Black to the newest version yesterday.

Thanks, this is probably why my black is not working correctly

@maarcingebala maarcingebala requested a review from a team March 8, 2022 07:52
@LeOndaz
Copy link
Contributor Author

LeOndaz commented Mar 9, 2022

@maarcingebala @jakubkuc can I get this merged?

@maarcingebala
Copy link
Member

maarcingebala commented Mar 9, 2022

@LeOndaz Something is still failing in CI.

@maarcingebala
Copy link
Member

@LeOndaz We could merge this one but need to fix the linters first, would you be able to handle this?

@LeOndaz
Copy link
Contributor Author

LeOndaz commented Mar 21, 2022

@maarcingebala Done, sorry for being late

@maarcingebala maarcingebala merged commit efd8758 into saleor:main Mar 22, 2022
@maarcingebala
Copy link
Member

Thank you for contributing to Saleor @LeOndaz 🥇

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants