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
-~----------~----~----~----~------~----~------~--~---