88 CustomObjectPagedQueryResponseSchema ,
99 CustomObjectSchema ,
1010)
11- from commercetools .platform .models ._schemas .error import ErrorResponseSchema
1211from commercetools .testing .abstract import BaseModel , ServiceBackend
1312from commercetools .testing .utils import create_commercetools_response
1413
@@ -27,7 +26,7 @@ def add(self, draft, id=None):
2726 version matches. otherwise create a new item
2827 """
2928 new_obj = self ._create_from_draft (draft , id )
30- current_obj = self ._get_by_container_key (new_obj .container , new_obj .key )
29+ current_obj = self ._get_by_container_and_key (new_obj .container , new_obj .key )
3130
3231 if current_obj :
3332 if current_obj ["version" ] != new_obj .version :
@@ -55,7 +54,7 @@ def _create_from_draft(
5554 last_modified_at = datetime .datetime .now (datetime .timezone .utc ),
5655 )
5756
58- def _get_by_container_key (
57+ def _get_by_container_and_key (
5958 self , container : str , key : str
6059 ) -> typing .Optional [typing .Dict ]:
6160 return next (
@@ -78,7 +77,21 @@ def urls(self):
7877 return [
7978 ("^$" , "GET" , self .query ),
8079 ("^$" , "POST" , self .create ),
81- ("^(?P<container>[^/]+)/(?P<key>[^/]+)$" , "GET" , self .get_by_container_key ),
80+ (
81+ "^(?P<container>[^/]+)/(?P<key>[^/]+)$" ,
82+ "GET" ,
83+ self .get_by_container_and_key ,
84+ ),
85+ (
86+ "^(?P<container>[^/]+)/(?P<key>[^/]+)$" ,
87+ "POST" ,
88+ self .update_by_container_and_key ,
89+ ),
90+ (
91+ "^(?P<container>[^/]+)/(?P<key>[^/]+)$" ,
92+ "DELETE" ,
93+ self .delete_by_container_and_key ,
94+ ),
8295 ("^(?P<container>[^/]+)$" , "GET" , self .query_by_container ),
8396 ]
8497
@@ -91,9 +104,21 @@ def query_by_container(self, request, container: str):
91104
92105 return self .query (request )
93106
94- def get_by_container_key (self , request , container : str , key : str ):
95- item = self .model ._get_by_container_key (container , key )
107+ def get_by_container_and_key (self , request , container : str , key : str ):
108+ item = self .model ._get_by_container_and_key (container , key )
96109 if item :
97110 return create_commercetools_response (request , json = item )
98- else :
99- return create_commercetools_response (request , status_code = 404 )
111+
112+ return create_commercetools_response (request , status_code = 404 )
113+
114+ def update_by_container_and_key (self , request , container : str , key : str ):
115+ item = self .model ._get_by_container_and_key (container , key )
116+ return self ._update (request , item )
117+
118+ def delete_by_container_and_key (self , request , container : str , key : str ):
119+ item = self .model ._get_by_container_and_key (container , key )
120+ if item :
121+ obj = self .model .delete_by_container_and_key (container , key )
122+ return create_commercetools_response (request , json = obj )
123+
124+ return create_commercetools_response (request , status_code = 404 )
0 commit comments