Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class TempResource(Resource):
- class Meta:
- resource_name = 'temp_resource'
- object_class = temp_resource.delay
- authorization = Authorization()
- allowed_methods = ['post', 'get']
- always_return_data = True
- def get_resource_uri(self, bundle_or_obj):
- """
- We use the celery task id in the uri
- """
- kwargs = {
- 'resource_name': self._meta.resource_name,
- }
- if isinstance(bundle_or_obj, Bundle):
- kwargs['pk'] = bundle_or_obj.obj.task_id
- else:
- kwargs['pk'] = bundle_or_obj.task_id
- if self._meta.api_name is not None:
- kwargs['api_name'] = self._meta.api_name
- return self._build_reverse_url("api_dispatch_detail", kwargs=kwargs)
- def obj_get_list(self, request=None, **kwargs):
- # Filtering disabled for brevity...
- return self.get_object_list(request)
- def obj_get(self, request=None, **kwargs):
- result = temp_resource.AsyncResult(kwargs['pk'])
- return result
- def obj_create(self, bundle, request=None, **kwargs):
- bundle.obj = temp_resource.delay(kwargs['foo'], kwargs['bar'])
- return bundle
- def full_dehydrate(self, bundle):
- """
- Add fields from temp_resource during dehydration
- """
- temp_resource_info = bundle.obj.get()
- for field, value in temp_resource_info.items():
- bundle.data[field] = value
- return super(TempResource, self).full_dehydrate(bundle)
Add Comment
Please, Sign In to add comment