#8912: File storage and save/commit=False
---------------------------------------------+------------------------------
          Reporter:  shadfc                  |         Owner:  shadfc
            Status:  assigned                |     Milestone:        
         Component:  File uploads/storage    |       Version:  1.0   
        Resolution:                          |      Keywords:        
             Stage:  Design decision needed  |     Has_patch:  1     
        Needs_docs:  0                       |   Needs_tests:  1     
Needs_better_patch:  0                       |  
---------------------------------------------+------------------------------
Changes (by shadfc):

  * status:  new => assigned
  * needs_tests:  0 => 1
  * summary:  Filestorage backend doesn't get "save" argument => File
              storage and save/commit=False
  * owner:  nobody => shadfc
  * has_patch:  0 => 1
  * stage:  Unreviewed => Design decision needed

Comment:

 The attached patch basically just propagates the save argument in
 FieldFile.save() into storage.save() and then into storage._save().  This
 gives the custom backend designer control of the behavior.

 Looking at what happens in storage.save() raised a few questions as to my
 approach. The call to storage.save() in FieldFile.save() expects the name
 of the saved file to be returned.  So, if the backend gets a save=False
 argument and doesn't actually save the file, what should it return? It
 could just generate the expected filename -- the name it would have saved
 the content to, but that has no guarantee that when it really does save to
 the backend that that name is still available.

 Should a save=False on FieldFile.save() just not call the stoarge.save()
 and set the FieldFile's name to something non-definite ('unsaved file')?

 Also, I was just looking at FieldFile.delete() and saw that it has the
 same problem -- the storage.delete() call is not dependent on save=True
 and will always happen.

 Input from people smarter than me would be welcome on whether I am wrong
 about all of this.

-- 
Ticket URL: <http://code.djangoproject.com/ticket/8912#comment:3>
Django Code <http://code.djangoproject.com/>
The web framework for perfectionists with deadlines
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to django-updates@googlegroups.com
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