Author: mtredinnick
Date: 2008-07-19 13:35:11 -0500 (Sat, 19 Jul 2008)
New Revision: 7986

Modified:
   django/trunk/django/db/models/base.py
   django/trunk/tests/modeltests/model_forms/models.py
Log:
Fixed #5619 -- Return the same path in get_FOO_filename() before and after a
model is saved (i.e. make sure the upload prefix is prepended in both cases).

Patch from [EMAIL PROTECTED] Tests from Leah Culver.


Modified: django/trunk/django/db/models/base.py
===================================================================
--- django/trunk/django/db/models/base.py       2008-07-19 18:05:22 UTC (rev 
7985)
+++ django/trunk/django/db/models/base.py       2008-07-19 18:35:11 UTC (rev 
7986)
@@ -459,13 +459,13 @@
 
     def _get_FIELD_filename(self, field):
         if getattr(self, field.attname): # Value is not blank.
-            return os.path.normpath(os.path.join(settings.MEDIA_ROOT, 
getattr(self, field.attname)))
+            return os.path.normpath(os.path.join(settings.MEDIA_ROOT, 
field.get_filename(getattr(self, field.attname))))
         return ''
 
     def _get_FIELD_url(self, field):
         if getattr(self, field.attname): # Value is not blank.
             import urlparse
-            return urlparse.urljoin(settings.MEDIA_URL, getattr(self, 
field.attname)).replace('\\', '/')
+            return urlparse.urljoin(settings.MEDIA_URL, 
field.get_filename(getattr(self, field.attname))).replace('\\', '/')
         return ''
 
     def _get_FIELD_size(self, field):
@@ -494,7 +494,7 @@
         elif isinstance(raw_field, basestring):
             import warnings
             warnings.warn(
-                message = "Representing uploaded files as dictionaries is 
deprecated. Use django.core.files.uploadedfile.SimpleUploadedFile instead.",
+                message = "Representing uploaded files as strings is 
deprecated. Use django.core.files.uploadedfile.SimpleUploadedFile instead.",
                 category = DeprecationWarning,
                 stacklevel = 2
             )

Modified: django/trunk/tests/modeltests/model_forms/models.py
===================================================================
--- django/trunk/tests/modeltests/model_forms/models.py 2008-07-19 18:05:22 UTC 
(rev 7985)
+++ django/trunk/tests/modeltests/model_forms/models.py 2008-07-19 18:35:11 UTC 
(rev 7986)
@@ -12,6 +12,8 @@
 
 from django.db import models
 
+TEMP_DIR = tempfile.gettempdir()
+
 ARTICLE_STATUS = (
     (1, 'Draft'),
     (2, 'Pending'),
@@ -60,7 +62,7 @@
 
 class TextFile(models.Model):
     description = models.CharField(max_length=20)
-    file = models.FileField(upload_to=tempfile.gettempdir())
+    file = models.FileField(upload_to=TEMP_DIR)
 
     def __unicode__(self):
         return self.description
@@ -71,9 +73,9 @@
         # If PIL is available, try testing PIL.
         # Otherwise, it's equivalent to TextFile above.
         import Image
-        image = models.ImageField(upload_to=tempfile.gettempdir())
+        image = models.ImageField(upload_to=TEMP_DIR)
     except ImportError:
-        image = models.FileField(upload_to=tempfile.gettempdir())
+        image = models.FileField(upload_to=TEMP_DIR)
 
     def __unicode__(self):
         return self.description
@@ -784,6 +786,24 @@
 
 # FileField ###################################################################
 
+# File instance methods. Tests fix for #5619.
+
+>>> instance = TextFile(description='nothing', file='name')
+>>> expected = '%s/name' % TEMP_DIR
+>>> instance.get_file_filename() == expected
+True
+>>> instance.get_file_url() == expected
+True
+>>> instance.save_file_file(instance.file, SimpleUploadedFile(instance.file, 
'some text'))
+>>> instance.get_file_filename() == expected
+True
+>>> instance.get_file_url() == expected
+True
+
+>>> os.unlink(instance.get_file_filename())
+
+# File forms.
+
 >>> class TextFileForm(ModelForm):
 ...     class Meta:
 ...         model = TextFile


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to