From 573de11b233a85347456a4d7e50fd7345d13db03 Mon Sep 17 00:00:00 2001 From: Ludwig Kraatz Date: Tue, 13 Nov 2012 18:07:38 +0100 Subject: [PATCH] changed buggy response + code ploishing reponse didnt handle any headers at all. Accepts now a dict of headers and sets those properly --- rest_framework/mixins.py | 11 +++-------- rest_framework/response.py | 5 ++++- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/rest_framework/mixins.py b/rest_framework/mixins.py index f54b5b1f6..eddd8f49e 100644 --- a/rest_framework/mixins.py +++ b/rest_framework/mixins.py @@ -25,16 +25,11 @@ class CreateModelMixin(object): return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) def get_success_headers(self,serializer): - headers = [] - identity_field = identity_name = None + headers = {} for name,field in serializer.fields.iteritems(): if isinstance(field,HyperlinkedIdentityField): - identity_name, identity_field = name, field - if identity_field: - #identity_field.initialize(serializer,"url") - headers.append( - ("Location",identity_field.field_to_native(self.object,identity_name)) - ) + headers["Location"] = field.field_to_native(self.object,name) + break return headers def pre_save(self, obj): diff --git a/rest_framework/response.py b/rest_framework/response.py index 0de01204d..88f0019fc 100644 --- a/rest_framework/response.py +++ b/rest_framework/response.py @@ -20,9 +20,12 @@ class Response(SimpleTemplateResponse): """ super(Response, self).__init__(None, status=status) self.data = data - self.headers = headers and headers[:] or [] self.template_name = template_name self.exception = exception + + if headers: + for name,value in headers.iteritems(): + self[name] = value @property def rendered_content(self):