8
8
from flask_rest_jsonapi .constants import DEFAULT_PAGE_SIZE
9
9
from flask_rest_jsonapi .data_layers .base import BaseDataLayer
10
10
from flask_rest_jsonapi .exceptions import RelationNotFound , RelatedObjectNotFound , JsonApiException ,\
11
- InvalidSort
11
+ InvalidSort , ObjectNotFound
12
12
from flask_rest_jsonapi .data_layers .filtering .alchemy import create_filters
13
13
from flask_rest_jsonapi .schema import get_relationships
14
14
@@ -110,6 +110,12 @@ def update_object(self, obj, data, view_kwargs):
110
110
:param dict view_kwargs: kwargs from the resource view
111
111
:return boolean: True if object have changed else False
112
112
"""
113
+ if obj is None :
114
+ url_field = getattr (self , 'url_field' , 'id' )
115
+ filter_value = view_kwargs [url_field ]
116
+ raise ObjectNotFound ({'parameter' : url_field },
117
+ '{}: {} not found' .format (self .model .__class__ .__name__ , filter_value ))
118
+
113
119
self .before_update_object (obj , data , view_kwargs )
114
120
115
121
relationship_fields = get_relationships (self .resource .schema )
@@ -133,6 +139,12 @@ def delete_object(self, obj, view_kwargs):
133
139
:param DeclarativeMeta item: an item from sqlalchemy
134
140
:param dict view_kwargs: kwargs from the resource view
135
141
"""
142
+ if obj is None :
143
+ url_field = getattr (self , 'url_field' , 'id' )
144
+ filter_value = view_kwargs [url_field ]
145
+ raise ObjectNotFound ({'parameter' : url_field },
146
+ '{}: {} not found' .format (self .model .__class__ .__name__ , filter_value ))
147
+
136
148
self .before_delete_object (obj , view_kwargs )
137
149
138
150
self .session .delete (obj )
@@ -157,6 +169,12 @@ def create_relationship(self, json_data, relationship_field, related_id_field, v
157
169
158
170
obj = self .get_object (view_kwargs )
159
171
172
+ if obj is None :
173
+ url_field = getattr (self , 'url_field' , 'id' )
174
+ filter_value = view_kwargs [url_field ]
175
+ raise ObjectNotFound ({'parameter' : url_field },
176
+ '{}: {} not found' .format (self .model .__class__ .__name__ , filter_value ))
177
+
160
178
if not hasattr (obj , relationship_field ):
161
179
raise RelationNotFound ('' , "{} has no attribute {}" .format (obj .__class__ .__name__ , relationship_field ))
162
180
@@ -207,6 +225,12 @@ def get_relationship(self, relationship_field, related_type_, related_id_field,
207
225
208
226
obj = self .get_object (view_kwargs )
209
227
228
+ if obj is None :
229
+ url_field = getattr (self , 'url_field' , 'id' )
230
+ filter_value = view_kwargs [url_field ]
231
+ raise ObjectNotFound ({'parameter' : url_field },
232
+ '{}: {} not found' .format (self .model .__class__ .__name__ , filter_value ))
233
+
210
234
if not hasattr (obj , relationship_field ):
211
235
raise RelationNotFound ('' , "{} has no attribute {}" .format (obj .__class__ .__name__ , relationship_field ))
212
236
@@ -237,6 +261,12 @@ def update_relationship(self, json_data, relationship_field, related_id_field, v
237
261
238
262
obj = self .get_object (view_kwargs )
239
263
264
+ if obj is None :
265
+ url_field = getattr (self , 'url_field' , 'id' )
266
+ filter_value = view_kwargs [url_field ]
267
+ raise ObjectNotFound ({'parameter' : url_field },
268
+ '{}: {} not found' .format (self .model .__class__ .__name__ , filter_value ))
269
+
240
270
if not hasattr (obj , relationship_field ):
241
271
raise RelationNotFound ('' , "{} has no attribute {}" .format (obj .__class__ .__name__ , relationship_field ))
242
272
@@ -290,6 +320,12 @@ def delete_relationship(self, json_data, relationship_field, related_id_field, v
290
320
291
321
obj = self .get_object (view_kwargs )
292
322
323
+ if obj is None :
324
+ url_field = getattr (self , 'url_field' , 'id' )
325
+ filter_value = view_kwargs [url_field ]
326
+ raise ObjectNotFound ({'parameter' : url_field },
327
+ '{}: {} not found' .format (self .model .__class__ .__name__ , filter_value ))
328
+
293
329
if not hasattr (obj , relationship_field ):
294
330
raise RelationNotFound ('' , "{} has no attribute {}" .format (obj .__class__ .__name__ , relationship_field ))
295
331
0 commit comments