def handle_request(self, request, **kwargs): ''' Called in every request made to Resource ''' try: if request.method not in self.routes: return to_http(request, status=404) method = self.routes[request.method] if not hasattr(self, method): return HttpResponse(status=405) return getattr(self, 'handle_'+method)(request, kwargs) except (ObjectDoesNotExist, IOError): # ObjectDoesNotExist: if return model instance does not exist # IOError: if return file not found return HttpResponse(status=404)
def handle_response(self, request, response, fields, parameters): ''' Proccess response into a JSON serializable object ''' current_fields = fields(kwargs) if callable(fields) else fields status = DEFAULT_STATUS_CODE if is_tuple(response): status, response = response if is_valuesset(response): response = self.handle_list_response( request, list(response), current_fields, parameters) elif is_queryset(response): response = self.select_related(response, current_fields) response = self.handle_queryset_response( request, response, current_fields, parameters) elif is_modelinstance(response): response = self.handle_model_response(response, current_fields) elif is_generator(response) or is_list(response): response = self.handle_list_response( request, response, current_fields, parameters) response = self.uglify_json(response) if self.uglify else response return to_http(request, response, status)
def to_http(self, content, basic): request = self.factory.get('/') return to_http( request, content, basic_serialization=basic )