From 15e368eed6242a7ef35d7ae1c74f9c272b997aaf Mon Sep 17 00:00:00 2001 From: Adrian Holovaty Date: Tue, 11 Apr 2006 13:45:15 +0000 Subject: [PATCH] magic-removal: Merged to [2675] git-svn-id: http://code.djangoproject.com/svn/django/branches/magic-removal@2676 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/http/__init__.py | 21 +++++++++++++++------ docs/db-api.txt | 4 ++-- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/django/http/__init__.py b/django/http/__init__.py index c662f5f0a9..bb03ab8ea5 100644 --- a/django/http/__init__.py +++ b/django/http/__init__.py @@ -154,10 +154,10 @@ class HttpResponse(object): if not mimetype: mimetype = "%s; charset=%s" % (settings.DEFAULT_CONTENT_TYPE, settings.DEFAULT_CHARSET) if hasattr(content, '__iter__'): - self.iterator = content + self._iterator = content self._is_string = False else: - self.iterator = [content] + self._iterator = [content] self._is_string = True self.headers = {'Content-Type': mimetype} self.cookies = SimpleCookie() @@ -203,23 +203,32 @@ class HttpResponse(object): pass def _get_content(self): - content = ''.join(self.iterator) + content = ''.join(self._iterator) if isinstance(content, unicode): content = content.encode(self._charset) return content def _set_content(self, value): - self.iterator = [value] + self._iterator = [value] self._is_string = True content = property(_get_content, _set_content) + def _get_iterator(self): + "Output iterator. Converts data into client charset if necessary." + for chunk in self._iterator: + if isinstance(chunk, unicode): + chunk = chunk.encode(self._charset) + yield chunk + + iterator = property(_get_iterator) + # The remaining methods partially implement the file-like object interface. # See http://docs.python.org/lib/bltin-file-objects.html def write(self, content): if not self._is_string: raise Exception, "This %s instance is not writable" % self.__class__ - self.iterator.append(content) + self._iterator.append(content) def flush(self): pass @@ -227,7 +236,7 @@ class HttpResponse(object): def tell(self): if not self._is_string: raise Exception, "This %s instance cannot tell its position" % self.__class__ - return sum([len(chunk) for chunk in self.iterator]) + return sum([len(chunk) for chunk in self._iterator]) class HttpResponseRedirect(HttpResponse): def __init__(self, redirect_to): diff --git a/docs/db-api.txt b/docs/db-api.txt index 10beebb3d8..732997ba22 100644 --- a/docs/db-api.txt +++ b/docs/db-api.txt @@ -655,14 +655,14 @@ returns an empty string. get_FOO_size() -------------- -For every ``FileField``, the object will have a ``get_FOO_filename()`` method, +For every ``FileField``, the object will have a ``get_FOO_size()`` method, where ``FOO`` is the name of the field. This returns the size of the file, in bytes. (Behind the scenes, it uses ``os.path.getsize``.) save_FOO_file(filename, raw_contents) ------------------------------------- -For every ``FileField``, the object will have a ``get_FOO_filename()`` method, +For every ``FileField``, the object will have a ``save_FOO_file()`` method, where ``FOO`` is the name of the field. This saves the given file to the filesystem, using the given filename. If a file with the given filename already exists, Django adds an underscore to the end of the filename (but before the