      def _get_size(self):
          if not hasattr(self, '_size'):
              if hasattr(self.file, 'size'):
                  self._size = self.file.size
              elif os.path.exists(self.file.name):
                  self._size = os.path.getsize(self.file.name)
              else:
                  raise AttributeError("Unable to determine the file's size.")
          return self._size
  
 
</s> remove         while counter > 0:
            yield self.read(chunk_size)
            counter -= chunk_size
 </s> add         while True:
            data = self.read(chunk_size)
            if not data:
                break
            yield data </s> remove         # Assume the pointer is at zero...
        counter = self.size
 </s> add  </s> remove     def test_content_file_custome_name(self):
 </s> add     def test_content_file_custom_name(self):
            elif hasattr(self.file, 'name') and os.path.exists(self.file.name):
      def _get_size(self):
          if not hasattr(self, '_size'):
              if hasattr(self.file, 'size'):
                  self._size = self.file.size
            elif hasattr(self.file, 'name') and os.path.exists(self.file.name):
                  self._size = os.path.getsize(self.file.name)
              else:
                  raise AttributeError("Unable to determine the file's size.")
          return self._size
  
keep keep keep keep replace keep keep keep keep keep
 Fixed #15644 -- Improved Django File wrapper to support more file-like objects. Thanks nickname123 and Michael Palumbo for working on the patch.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@17871 bcc190cf-cafb-0310-a4f2-bffc1f526a37 
django/core/files/base.py