From 77fea85c7e1eb62fabf27ab5f69d96f4c876af5d Mon Sep 17 00:00:00 2001 From: mtredinnick Date: Sat, 19 Jul 2008 22:26:32 +0000 Subject: [PATCH] Reverted [7986]. It turns out that we need to treat filename creation/display (in particular, the upload_to path) differently depending upon whether the value is out of the database or provided by other code and there's no reliable way to determine that at the moment (although some later proposed changes might alter that). So calling get_FIELD_filename on an unsaved model with a changed file attribute will not necessarily return the same result as after the save(). Refs #5619. Fixed #7843. git-svn-id: http://code.djangoproject.com/svn/django/trunk@7998 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/db/models/base.py | 4 ++-- tests/modeltests/model_forms/models.py | 26 +++----------------------- 2 files changed, 5 insertions(+), 25 deletions(-) diff --git a/django/db/models/base.py b/django/db/models/base.py index 6bd45676..590aab97 100644 --- a/django/db/models/base.py +++ b/django/db/models/base.py @@ -459,13 +459,13 @@ class Model(object): 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, field.get_filename(getattr(self, field.attname)))) + return os.path.normpath(os.path.join(settings.MEDIA_ROOT, 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, field.get_filename(getattr(self, field.attname))).replace('\\', '/') + return urlparse.urljoin(settings.MEDIA_URL, getattr(self, field.attname)).replace('\\', '/') return '' def _get_FIELD_size(self, field): diff --git a/tests/modeltests/model_forms/models.py b/tests/modeltests/model_forms/models.py index 39297740..cc9efd0f 100644 --- a/tests/modeltests/model_forms/models.py +++ b/tests/modeltests/model_forms/models.py @@ -12,8 +12,6 @@ import tempfile from django.db import models -TEMP_DIR = tempfile.gettempdir() - ARTICLE_STATUS = ( (1, 'Draft'), (2, 'Pending'), @@ -62,7 +60,7 @@ class PhoneNumber(models.Model): class TextFile(models.Model): description = models.CharField(max_length=20) - file = models.FileField(upload_to=TEMP_DIR) + file = models.FileField(upload_to=tempfile.gettempdir()) def __unicode__(self): return self.description @@ -73,9 +71,9 @@ class ImageFile(models.Model): # If PIL is available, try testing PIL. # Otherwise, it's equivalent to TextFile above. import Image - image = models.ImageField(upload_to=TEMP_DIR) + image = models.ImageField(upload_to=tempfile.gettempdir()) except ImportError: - image = models.FileField(upload_to=TEMP_DIR) + image = models.FileField(upload_to=tempfile.gettempdir()) def __unicode__(self): return self.description @@ -786,24 +784,6 @@ u'Assistance' # 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 -- 2.11.4.GIT