Code

Opened 5 years ago

Closed 5 years ago

Last modified 3 years ago

#9446 closed (fixed)

Apparent discrepancy between online documentation and how the code works for custom File Storage system

Reported by: xhad Owned by: jacob
Component: Documentation Version: master
Severity: Keywords: file storage, documentation
Cc: Triage Stage: Accepted
Has patch: no Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: UI/UX:

Description

The online documentation for writing custom File Storage systems says that the _save method must be overridden and "No return value is expected." (http://docs.djangoproject.com/en/dev/howto/custom-file-storage/#save-name-content).

However, the inherited save method in django/core/files/storage.py contains these lines (45-48):

name = self._save(name, content)

# Store filenames with forward slashes, even on Windows
return force_unicode(name.replace('\\', '/'))

The obvious problem is that returning nothing from the _save method causes the last line to throw an error like this:

AttributeError: 'NoneType' object has no attribute 'replace'

From what I can tell, the documentation should state that the _save method should be implemented so that it returns the name of the file that was written to in the end. This seems to be consistent with how the code is really implemented and how the FileSystemStorage class is implemented in the same file.

Attachments (0)

Change History (5)

comment:1 Changed 5 years ago by anonymous

  • milestone post-1.0 deleted

Milestone post-1.0 deleted

comment:2 Changed 5 years ago by jacob

  • milestone set to 1.1
  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset
  • Triage Stage changed from Unreviewed to Accepted

comment:3 Changed 5 years ago by jacob

  • Owner changed from nobody to jacob
  • Status changed from new to assigned

comment:4 Changed 5 years ago by jacob

  • Resolution set to fixed
  • Status changed from assigned to closed

(In [10371]) Fixed a whole bunch of small docs typos, errors, and ommissions.

Fixes #8358, #8396, #8724, #9043, #9128, #9247, #9267, #9267, #9375, #9409, #9414, #9416, #9446, #9454, #9464, #9503, #9518, #9533, #9657, #9658, #9683, #9733, #9771, #9835, #9836, #9837, #9897, #9906, #9912, #9945, #9986, #9992, #10055, #10084, #10091, #10145, #10245, #10257, #10309, #10358, #10359, #10424, #10426, #10508, #10531, #10551, #10635, #10637, #10656, #10658, #10690, #10699, #19528.

Thanks to all the respective authors of those tickets.

comment:18 Changed 3 years ago by jacob

  • milestone 1.1 deleted

Milestone 1.1 deleted

Add Comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
as The resolution will be set. Next status will be 'closed'
The resolution will be deleted. Next status will be 'new'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.