|
@@ 519-548 (lines=30) @@
|
| 516 |
|
bundle.obj.set_attrs(bundle.data['properties']) |
| 517 |
|
return self.save(bundle) |
| 518 |
|
|
| 519 |
|
def patch_detail(self, request, **kwargs): |
| 520 |
|
""" |
| 521 |
|
Updates a resource in-place. We could also override obj_update, which is |
| 522 |
|
the Tastypie intended-way of having a custom PATCH implementation, but this |
| 523 |
|
method gets a full updated object bundle that is expected to be directly written |
| 524 |
|
to the object. In this method, we still have access to what actually really |
| 525 |
|
comes as part of the update payload. |
| 526 |
|
|
| 527 |
|
If the resource is updated, return ``HttpAccepted`` (202 Accepted). |
| 528 |
|
If the resource did not exist, return ``HttpNotFound`` (404 Not Found). |
| 529 |
|
""" |
| 530 |
|
try: |
| 531 |
|
# Fetch relevant node object as Tastypie does it |
| 532 |
|
basic_bundle = self.build_bundle(request=request) |
| 533 |
|
obj = self.cached_obj_get( |
| 534 |
|
bundle=basic_bundle, |
| 535 |
|
**self.remove_api_resource_names(kwargs)) |
| 536 |
|
except ObjectDoesNotExist: |
| 537 |
|
return HttpNotFound() |
| 538 |
|
except MultipleObjectsReturned: |
| 539 |
|
return HttpMultipleChoices( |
| 540 |
|
"More than one resource is found at this URI.") |
| 541 |
|
|
| 542 |
|
# Deserialize incoming update payload JSON from request |
| 543 |
|
deserialized = self.deserialize(request, request.body, |
| 544 |
|
format=request.META.get('CONTENT_TYPE', 'application/json')) |
| 545 |
|
if 'properties' in deserialized: |
| 546 |
|
obj.set_attrs(deserialized['properties']) |
| 547 |
|
# return the updated edge object |
| 548 |
|
return HttpResponse(obj.to_json(), 'application/json', status=202) |
| 549 |
|
|
| 550 |
|
|
| 551 |
|
class ProjectResource(common.ProjectResource): |
|
@@ 278-307 (lines=30) @@
|
| 275 |
|
bundle.obj.set_attrs(bundle.data['properties']) |
| 276 |
|
return self.save(bundle) |
| 277 |
|
|
| 278 |
|
def patch_detail(self, request, **kwargs): |
| 279 |
|
""" |
| 280 |
|
Updates a resource in-place. We could also override obj_update, which is |
| 281 |
|
the Tastypie intended-way of having a custom PATCH implementation, but this |
| 282 |
|
method gets a full updated object bundle that is expected to be directly written |
| 283 |
|
to the object. In this method, we still have access to what actually really |
| 284 |
|
comes as part of the update payload. |
| 285 |
|
|
| 286 |
|
If the resource is updated, return ``HttpAccepted`` (202 Accepted). |
| 287 |
|
If the resource did not exist, return ``HttpNotFound`` (404 Not Found). |
| 288 |
|
""" |
| 289 |
|
try: |
| 290 |
|
# Fetch relevant node object as Tastypie does it |
| 291 |
|
basic_bundle = self.build_bundle(request=request) |
| 292 |
|
obj = self.cached_obj_get( |
| 293 |
|
bundle=basic_bundle, |
| 294 |
|
**self.remove_api_resource_names(kwargs)) |
| 295 |
|
except ObjectDoesNotExist: |
| 296 |
|
return HttpNotFound() |
| 297 |
|
except MultipleObjectsReturned: |
| 298 |
|
return HttpMultipleChoices( |
| 299 |
|
"More than one resource is found at this URI.") |
| 300 |
|
|
| 301 |
|
# Deserialize incoming update payload JSON from request |
| 302 |
|
deserialized = self.deserialize(request, request.body, |
| 303 |
|
format=request.META.get('CONTENT_TYPE', 'application/json')) |
| 304 |
|
if 'properties' in deserialized: |
| 305 |
|
obj.set_attrs(deserialized['properties']) |
| 306 |
|
# return the updated node object |
| 307 |
|
return HttpResponse(obj.to_json(), 'application/json', status=202) |
| 308 |
|
|
| 309 |
|
|
| 310 |
|
class NodeGroupSerializer(Serializer): |