Guest User

Untitled

a guest
Oct 2nd, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.49 KB | None | 0 0
  1. class TempResource(Resource):
  2. class Meta:
  3. resource_name = 'temp_resource'
  4. object_class = temp_resource.delay
  5. authorization = Authorization()
  6. allowed_methods = ['post', 'get']
  7. always_return_data = True
  8.  
  9. def get_resource_uri(self, bundle_or_obj):
  10. """
  11. We use the celery task id in the uri
  12. """
  13. kwargs = {
  14. 'resource_name': self._meta.resource_name,
  15. }
  16.  
  17. if isinstance(bundle_or_obj, Bundle):
  18. kwargs['pk'] = bundle_or_obj.obj.task_id
  19. else:
  20. kwargs['pk'] = bundle_or_obj.task_id
  21.  
  22. if self._meta.api_name is not None:
  23. kwargs['api_name'] = self._meta.api_name
  24.  
  25. return self._build_reverse_url("api_dispatch_detail", kwargs=kwargs)
  26.  
  27. def obj_get_list(self, request=None, **kwargs):
  28. # Filtering disabled for brevity...
  29. return self.get_object_list(request)
  30.  
  31. def obj_get(self, request=None, **kwargs):
  32. result = temp_resource.AsyncResult(kwargs['pk'])
  33. return result
  34.  
  35. def obj_create(self, bundle, request=None, **kwargs):
  36. bundle.obj = temp_resource.delay(kwargs['foo'], kwargs['bar'])
  37. return bundle
  38.  
  39. def full_dehydrate(self, bundle):
  40. """
  41. Add fields from temp_resource during dehydration
  42. """
  43. temp_resource_info = bundle.obj.get()
  44. for field, value in temp_resource_info.items():
  45. bundle.data[field] = value
  46. return super(TempResource, self).full_dehydrate(bundle)
Add Comment
Please, Sign In to add comment