Skip to content

Commit 5fcf673

Browse files
davidweteringsmvantellingen
authored andcommitted
Regenerate types (5ebb3153) with custom-objects /container endpoint fix
From the RAML definition we cannot determine it's actually a special query endpoint.
1 parent 0c242e6 commit 5fcf673

File tree

11 files changed

+289
-16
lines changed

11 files changed

+289
-16
lines changed

codegen/service_processor.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ def _parse_service(self, path, source, parent=None):
139139
domain.add_method(method)
140140
else:
141141
for method in self._get_resource_methods(
142-
domain, endpoint, endpoint_data
142+
domain, endpoint, endpoint_data, source
143143
):
144144
domain.add_method(method)
145145
return domain
@@ -209,7 +209,7 @@ def _get_action_method(self, service_domain, path, data, parent_path, path_param
209209
)
210210
return self._add_metadata(method, endpoint_data, data)
211211

212-
def _get_resource_methods(self, service_domain, path, data):
212+
def _get_resource_methods(self, service_domain, path, data, parent_data):
213213
params = list(service_domain.path_parameters)
214214
params.extend(self._get_parameters(data))
215215
method_name = "_%s" % snakeit(data["(methodName)"])
@@ -237,17 +237,29 @@ def _get_resource_methods(self, service_domain, path, data):
237237
yield self._add_metadata(method, endpoint_data, data)
238238

239239
elif endpoint_path == "get":
240+
service_type = "get"
241+
service_name = name_prefix + "get" + method_name
242+
service_resource_type = service_domain.resource_type
243+
pdata = data
244+
245+
# Workaround custom object container query method
246+
if service_domain.context_name == "CustomObject" and path == "/{container}":
247+
service_type = "query"
248+
service_name = "query_by_container"
249+
service_resource_type = service_domain.resource_querytype
250+
pdata = parent_data
251+
240252
method = ServiceMethod(
241-
name=name_prefix + "get" + method_name,
253+
name=service_name,
242254
path=service_domain.path + path,
243255
path_params=list(params),
244-
type="get",
256+
type=service_type,
245257
method="get",
246258
returns=_get_return_type(
247-
endpoint_data, service_domain.resource_type
259+
endpoint_data, service_resource_type,
248260
),
249261
)
250-
yield self._add_metadata(method, endpoint_data, data)
262+
yield self._add_metadata(method, endpoint_data, pdata)
251263

252264
elif endpoint_path == "delete":
253265
method = ServiceMethod(

src/commercetools/_schemas/_cart.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,7 @@
5555
"CartSetDeleteDaysAfterLastModificationActionSchema",
5656
"CartSetLineItemCustomFieldActionSchema",
5757
"CartSetLineItemCustomTypeActionSchema",
58+
"CartSetLineItemDistributionChannelActionSchema",
5859
"CartSetLineItemPriceActionSchema",
5960
"CartSetLineItemShippingDetailsActionSchema",
6061
"CartSetLineItemTaxAmountActionSchema",
@@ -516,6 +517,7 @@ class CartUpdateSchema(marshmallow.Schema):
516517
"setDeleteDaysAfterLastModification": "commercetools._schemas._cart.CartSetDeleteDaysAfterLastModificationActionSchema",
517518
"setLineItemCustomField": "commercetools._schemas._cart.CartSetLineItemCustomFieldActionSchema",
518519
"setLineItemCustomType": "commercetools._schemas._cart.CartSetLineItemCustomTypeActionSchema",
520+
"setLineItemDistributionChannel": "commercetools._schemas._cart.CartSetLineItemDistributionChannelActionSchema",
519521
"setLineItemPrice": "commercetools._schemas._cart.CartSetLineItemPriceActionSchema",
520522
"setLineItemShippingDetails": "commercetools._schemas._cart.CartSetLineItemShippingDetailsActionSchema",
521523
"setLineItemTaxAmount": "commercetools._schemas._cart.CartSetLineItemTaxAmountActionSchema",
@@ -2176,6 +2178,27 @@ def post_load(self, data, **kwargs):
21762178
return types.CartSetLineItemCustomTypeAction(**data)
21772179

21782180

2181+
class CartSetLineItemDistributionChannelActionSchema(CartUpdateActionSchema):
2182+
"""Marshmallow schema for :class:`commercetools.types.CartSetLineItemDistributionChannelAction`."""
2183+
2184+
line_item_id = marshmallow.fields.String(allow_none=True, data_key="lineItemId")
2185+
distribution_channel = helpers.LazyNestedField(
2186+
nested="commercetools._schemas._channel.ChannelResourceIdentifierSchema",
2187+
unknown=marshmallow.EXCLUDE,
2188+
allow_none=True,
2189+
missing=None,
2190+
data_key="distributionChannel",
2191+
)
2192+
2193+
class Meta:
2194+
unknown = marshmallow.EXCLUDE
2195+
2196+
@marshmallow.post_load
2197+
def post_load(self, data, **kwargs):
2198+
del data["action"]
2199+
return types.CartSetLineItemDistributionChannelAction(**data)
2200+
2201+
21792202
class CartSetLineItemPriceActionSchema(CartUpdateActionSchema):
21802203
"""Marshmallow schema for :class:`commercetools.types.CartSetLineItemPriceAction`."""
21812204

src/commercetools/_schemas/_error.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
"OutOfStockErrorSchema",
4040
"PriceChangedErrorSchema",
4141
"ReferenceExistsErrorSchema",
42+
"ReferencedResourceNotFoundErrorSchema",
4243
"RequiredFieldErrorSchema",
4344
"ResourceNotFoundErrorSchema",
4445
"ShippingMethodDoesNotMatchCartErrorSchema",
@@ -116,6 +117,7 @@ class ErrorResponseSchema(marshmallow.Schema):
116117
"OutOfStock": "commercetools._schemas._error.OutOfStockErrorSchema",
117118
"PriceChanged": "commercetools._schemas._error.PriceChangedErrorSchema",
118119
"ReferenceExists": "commercetools._schemas._error.ReferenceExistsErrorSchema",
120+
"ReferencedResourceNotFound": "commercetools._schemas._error.ReferencedResourceNotFoundErrorSchema",
119121
"RequiredField": "commercetools._schemas._error.RequiredFieldErrorSchema",
120122
"ResourceNotFound": "commercetools._schemas._error.ResourceNotFoundErrorSchema",
121123
"ShippingMethodDoesNotMatchCart": "commercetools._schemas._error.ShippingMethodDoesNotMatchCartErrorSchema",
@@ -729,6 +731,24 @@ def post_load(self, data, **kwargs):
729731
return types.ReferenceExistsError(**data)
730732

731733

734+
class ReferencedResourceNotFoundErrorSchema(ErrorObjectSchema):
735+
"""Marshmallow schema for :class:`commercetools.types.ReferencedResourceNotFoundError`."""
736+
737+
type_id = marshmallow_enum.EnumField(
738+
types.ReferenceTypeId, by_value=True, data_key="typeId"
739+
)
740+
id = marshmallow.fields.String(allow_none=True, missing=None)
741+
key = marshmallow.fields.String(allow_none=True, missing=None)
742+
743+
class Meta:
744+
unknown = marshmallow.EXCLUDE
745+
746+
@marshmallow.post_load
747+
def post_load(self, data, **kwargs):
748+
del data["code"]
749+
return types.ReferencedResourceNotFoundError(**data)
750+
751+
732752
class RequiredFieldErrorSchema(ErrorObjectSchema):
733753
"""Marshmallow schema for :class:`commercetools.types.RequiredFieldError`."""
734754

src/commercetools/_schemas/_me.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
"MyCartSetDeleteDaysAfterLastModificationActionSchema",
3030
"MyCartSetLineItemCustomFieldActionSchema",
3131
"MyCartSetLineItemCustomTypeActionSchema",
32+
"MyCartSetLineItemDistributionChannelActionSchema",
3233
"MyCartSetLineItemShippingDetailsActionSchema",
3334
"MyCartSetLocaleActionSchema",
3435
"MyCartSetShippingAddressActionSchema",
@@ -1530,6 +1531,27 @@ def post_load(self, data, **kwargs):
15301531
return types.MyCartSetLineItemCustomTypeAction(**data)
15311532

15321533

1534+
class MyCartSetLineItemDistributionChannelActionSchema(MyCartUpdateActionSchema):
1535+
"""Marshmallow schema for :class:`commercetools.types.MyCartSetLineItemDistributionChannelAction`."""
1536+
1537+
line_item_id = marshmallow.fields.String(allow_none=True, data_key="lineItemId")
1538+
distribution_channel = helpers.LazyNestedField(
1539+
nested="commercetools._schemas._channel.ChannelResourceIdentifierSchema",
1540+
unknown=marshmallow.EXCLUDE,
1541+
allow_none=True,
1542+
missing=None,
1543+
data_key="distributionChannel",
1544+
)
1545+
1546+
class Meta:
1547+
unknown = marshmallow.EXCLUDE
1548+
1549+
@marshmallow.post_load
1550+
def post_load(self, data, **kwargs):
1551+
del data["action"]
1552+
return types.MyCartSetLineItemDistributionChannelAction(**data)
1553+
1554+
15331555
class MyCartSetLineItemShippingDetailsActionSchema(MyCartUpdateActionSchema):
15341556
"""Marshmallow schema for :class:`commercetools.types.MyCartSetLineItemShippingDetailsAction`."""
15351557

src/commercetools/_schemas/_order_edit.py

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@
7878
"StagedOrderSetDeliveryItemsActionSchema",
7979
"StagedOrderSetLineItemCustomFieldActionSchema",
8080
"StagedOrderSetLineItemCustomTypeActionSchema",
81+
"StagedOrderSetLineItemDistributionChannelActionSchema",
8182
"StagedOrderSetLineItemPriceActionSchema",
8283
"StagedOrderSetLineItemShippingDetailsActionSchema",
8384
"StagedOrderSetLineItemTaxAmountActionSchema",
@@ -179,6 +180,7 @@ class OrderEditDraftSchema(marshmallow.Schema):
179180
"setDeliveryItems": "commercetools._schemas._order_edit.StagedOrderSetDeliveryItemsActionSchema",
180181
"setLineItemCustomField": "commercetools._schemas._order_edit.StagedOrderSetLineItemCustomFieldActionSchema",
181182
"setLineItemCustomType": "commercetools._schemas._order_edit.StagedOrderSetLineItemCustomTypeActionSchema",
183+
"setLineItemDistributionChannel": "commercetools._schemas._order_edit.StagedOrderSetLineItemDistributionChannelActionSchema",
182184
"setLineItemPrice": "commercetools._schemas._order_edit.StagedOrderSetLineItemPriceActionSchema",
183185
"setLineItemShippingDetails": "commercetools._schemas._order_edit.StagedOrderSetLineItemShippingDetailsActionSchema",
184186
"setLineItemTaxAmount": "commercetools._schemas._order_edit.StagedOrderSetLineItemTaxAmountActionSchema",
@@ -372,6 +374,7 @@ class OrderEditSchema(BaseResourceSchema):
372374
"setDeliveryItems": "commercetools._schemas._order_edit.StagedOrderSetDeliveryItemsActionSchema",
373375
"setLineItemCustomField": "commercetools._schemas._order_edit.StagedOrderSetLineItemCustomFieldActionSchema",
374376
"setLineItemCustomType": "commercetools._schemas._order_edit.StagedOrderSetLineItemCustomTypeActionSchema",
377+
"setLineItemDistributionChannel": "commercetools._schemas._order_edit.StagedOrderSetLineItemDistributionChannelActionSchema",
375378
"setLineItemPrice": "commercetools._schemas._order_edit.StagedOrderSetLineItemPriceActionSchema",
376379
"setLineItemShippingDetails": "commercetools._schemas._order_edit.StagedOrderSetLineItemShippingDetailsActionSchema",
377380
"setLineItemTaxAmount": "commercetools._schemas._order_edit.StagedOrderSetLineItemTaxAmountActionSchema",
@@ -1485,6 +1488,29 @@ def post_load(self, data, **kwargs):
14851488
return types.StagedOrderSetLineItemCustomTypeAction(**data)
14861489

14871490

1491+
class StagedOrderSetLineItemDistributionChannelActionSchema(
1492+
StagedOrderUpdateActionSchema
1493+
):
1494+
"""Marshmallow schema for :class:`commercetools.types.StagedOrderSetLineItemDistributionChannelAction`."""
1495+
1496+
line_item_id = marshmallow.fields.String(allow_none=True, data_key="lineItemId")
1497+
distribution_channel = helpers.LazyNestedField(
1498+
nested="commercetools._schemas._channel.ChannelResourceIdentifierSchema",
1499+
unknown=marshmallow.EXCLUDE,
1500+
allow_none=True,
1501+
missing=None,
1502+
data_key="distributionChannel",
1503+
)
1504+
1505+
class Meta:
1506+
unknown = marshmallow.EXCLUDE
1507+
1508+
@marshmallow.post_load
1509+
def post_load(self, data, **kwargs):
1510+
del data["action"]
1511+
return types.StagedOrderSetLineItemDistributionChannelAction(**data)
1512+
1513+
14881514
class StagedOrderSetLineItemPriceActionSchema(StagedOrderUpdateActionSchema):
14891515
"""Marshmallow schema for :class:`commercetools.types.StagedOrderSetLineItemPriceAction`."""
14901516

@@ -2104,6 +2130,7 @@ class OrderEditAddStagedActionActionSchema(OrderEditUpdateActionSchema):
21042130
"setDeliveryItems": "commercetools._schemas._order_edit.StagedOrderSetDeliveryItemsActionSchema",
21052131
"setLineItemCustomField": "commercetools._schemas._order_edit.StagedOrderSetLineItemCustomFieldActionSchema",
21062132
"setLineItemCustomType": "commercetools._schemas._order_edit.StagedOrderSetLineItemCustomTypeActionSchema",
2133+
"setLineItemDistributionChannel": "commercetools._schemas._order_edit.StagedOrderSetLineItemDistributionChannelActionSchema",
21072134
"setLineItemPrice": "commercetools._schemas._order_edit.StagedOrderSetLineItemPriceActionSchema",
21082135
"setLineItemShippingDetails": "commercetools._schemas._order_edit.StagedOrderSetLineItemShippingDetailsActionSchema",
21092136
"setLineItemTaxAmount": "commercetools._schemas._order_edit.StagedOrderSetLineItemTaxAmountActionSchema",
@@ -2219,6 +2246,7 @@ class OrderEditPreviewFailureSchema(OrderEditResultSchema):
22192246
"OutOfStock": "commercetools._schemas._error.OutOfStockErrorSchema",
22202247
"PriceChanged": "commercetools._schemas._error.PriceChangedErrorSchema",
22212248
"ReferenceExists": "commercetools._schemas._error.ReferenceExistsErrorSchema",
2249+
"ReferencedResourceNotFound": "commercetools._schemas._error.ReferencedResourceNotFoundErrorSchema",
22222250
"RequiredField": "commercetools._schemas._error.RequiredFieldErrorSchema",
22232251
"ResourceNotFound": "commercetools._schemas._error.ResourceNotFoundErrorSchema",
22242252
"ShippingMethodDoesNotMatchCart": "commercetools._schemas._error.ShippingMethodDoesNotMatchCartErrorSchema",
@@ -2450,6 +2478,7 @@ class OrderEditSetStagedActionsActionSchema(OrderEditUpdateActionSchema):
24502478
"setDeliveryItems": "commercetools._schemas._order_edit.StagedOrderSetDeliveryItemsActionSchema",
24512479
"setLineItemCustomField": "commercetools._schemas._order_edit.StagedOrderSetLineItemCustomFieldActionSchema",
24522480
"setLineItemCustomType": "commercetools._schemas._order_edit.StagedOrderSetLineItemCustomTypeActionSchema",
2481+
"setLineItemDistributionChannel": "commercetools._schemas._order_edit.StagedOrderSetLineItemDistributionChannelActionSchema",
24532482
"setLineItemPrice": "commercetools._schemas._order_edit.StagedOrderSetLineItemPriceActionSchema",
24542483
"setLineItemShippingDetails": "commercetools._schemas._order_edit.StagedOrderSetLineItemShippingDetailsActionSchema",
24552484
"setLineItemTaxAmount": "commercetools._schemas._order_edit.StagedOrderSetLineItemTaxAmountActionSchema",

src/commercetools/services/custom_objects.py

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -37,16 +37,6 @@ class _CustomObjectDeleteSchema(
3737
class CustomObjectService(abstract.AbstractService):
3838
"""Store custom JSON values."""
3939

40-
def get_by_container(
41-
self, container: str, *, expand: OptionalListStr = None
42-
) -> CustomObject:
43-
params = self._serialize_params({"expand": expand}, traits.ExpandableSchema)
44-
return self._client._get(
45-
endpoint=f"custom-objects/{container}",
46-
params=params,
47-
schema_cls=CustomObjectSchema,
48-
)
49-
5040
def get_by_container_and_key(
5141
self, container, key, *, expand: OptionalListStr = None
5242
) -> CustomObject:
@@ -94,6 +84,38 @@ def query(
9484
schema_cls=CustomObjectPagedQueryResponseSchema,
9585
)
9686

87+
def query_by_container(
88+
self,
89+
container: str,
90+
*,
91+
expand: OptionalListStr = None,
92+
sort: OptionalListStr = None,
93+
limit: int = None,
94+
offset: int = None,
95+
with_total: bool = None,
96+
where: OptionalListStr = None,
97+
predicate_var: typing.Dict[str, str] = None,
98+
) -> CustomObjectPagedQueryResponse:
99+
"""Store custom JSON values.
100+
"""
101+
params = self._serialize_params(
102+
{
103+
"expand": expand,
104+
"sort": sort,
105+
"limit": limit,
106+
"offset": offset,
107+
"with_total": with_total,
108+
"where": where,
109+
"predicate_var": predicate_var,
110+
},
111+
_CustomObjectQuerySchema,
112+
)
113+
return self._client._get(
114+
endpoint=f"custom-objects/{container}",
115+
params=params,
116+
schema_cls=CustomObjectPagedQueryResponseSchema,
117+
)
118+
97119
def create_or_update(
98120
self, draft: CustomObjectDraft, *, expand: OptionalListStr = None
99121
) -> CustomObject:

src/commercetools/services/states.py

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,12 @@ def get_by_id(self, id: str, *, expand: OptionalListStr = None) -> State:
5151
endpoint=f"states/{id}", params=params, schema_cls=StateSchema
5252
)
5353

54+
def get_by_key(self, key: str, *, expand: OptionalListStr = None) -> State:
55+
params = self._serialize_params({"expand": expand}, traits.ExpandableSchema)
56+
return self._client._get(
57+
endpoint=f"states/key={key}", params=params, schema_cls=StateSchema
58+
)
59+
5460
def query(
5561
self,
5662
*,
@@ -118,6 +124,26 @@ def update_by_id(
118124
force_update=force_update,
119125
)
120126

127+
def update_by_key(
128+
self,
129+
key: str,
130+
version: int,
131+
actions: typing.List[StateUpdateAction],
132+
*,
133+
expand: OptionalListStr = None,
134+
force_update: bool = False,
135+
) -> State:
136+
params = self._serialize_params({"expand": expand}, _StateUpdateSchema)
137+
update_action = StateUpdate(version=version, actions=actions)
138+
return self._client._post(
139+
endpoint=f"states/key={key}",
140+
params=params,
141+
data_object=update_action,
142+
request_schema_cls=StateUpdateSchema,
143+
response_schema_cls=StateSchema,
144+
force_update=force_update,
145+
)
146+
121147
def delete_by_id(
122148
self,
123149
id: str,
@@ -135,3 +161,21 @@ def delete_by_id(
135161
response_schema_cls=StateSchema,
136162
force_delete=force_delete,
137163
)
164+
165+
def delete_by_key(
166+
self,
167+
key: str,
168+
version: int,
169+
*,
170+
expand: OptionalListStr = None,
171+
force_delete: bool = False,
172+
) -> State:
173+
params = self._serialize_params(
174+
{"version": version, "expand": expand}, _StateDeleteSchema
175+
)
176+
return self._client._delete(
177+
endpoint=f"states/key={key}",
178+
params=params,
179+
response_schema_cls=StateSchema,
180+
force_delete=force_delete,
181+
)

0 commit comments

Comments
 (0)