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
Conversation
This is tested Please tell me what you think guys: @patrys @maarcingebala @korycins Thank you. |
Here is the report for 3642744 (LeOndaz:main) 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 Report
@@ 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
Continue to review full report at Codecov.
|
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. |
if code not in saleor_error_codes: | ||
return "invalid" |
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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"
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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
There was a problem hiding this comment.
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
It seems we have a broken import in Vatlayer:
It's importing |
@maarcingebala yes I'm currently aware of this and trying to see anything that imports from error_codes atm |
Okay I think we don't have anything other than that, I ran |
@LeOndaz Black fails in CI, can you reformat files once again? Also, I upgraded Black to the newest version yesterday. |
saleor/plugins/vatlayer/plugin.py
Outdated
from ...product.models import (Collection, Product, ProductVariant, | ||
ProductVariantChannelListing) |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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 @jakubkuc can I get this merged? |
@LeOndaz Something is still failing in CI. |
@LeOndaz We could merge this one but need to fix the linters first, would you be able to handle this? |
@maarcingebala Done, sorry for being late |
Thank you for contributing to Saleor @LeOndaz 🥇 |
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