A Django 1.3 proposal. It is a pretty small feature/change in some ways, but needs some discussion.
= Motivation = This is intended to make it easier to cope with the distinction between user provided media and developer provided media. This is a significant pain point when it comes to source control/deployment/backup. For example, it would be much better when uploading my source if I could do 'rsync --delete', so that the files on the server are exactly what I expect - extra files can cause all kinds of bugs. But I can't do that, as it would delete all the user uploaded media (or at least the symlinks to it). Nor can I simply upload to a fresh directory - I would still need to mess around with symlinks or moving files to get user uploaded media where it is expected to be. Also, for security it would be good to have the whole source code directory (including templates, javascript etc) to be write protected from the point of the webserver. But user uploaded files mess that up. = Options = We could: 1) add 'STATIC_URL' and use it for widgets and all other media. 2) add 'USER_MEDIA_URL' and 'USER_MEDIA_ROOT' and use them for file storage. (using backwards compatible defaults either way). If 1), then, additionally, do we need 'STATIC_ROOT' as well? What for? It wouldn't be used anywhere in Django. I was going to go for 1), like the ticket suggests, but I now think that 2) is a much better idea. I strongly suspect that static media are far more common than user uploaded files, so doing 2) will require far fewer changes to existing apps. Also, I suspect that almost all direct use of MEDIA_URL in apps will be for static media: file fields provide a URL attribute which automatically includes MEDIA_URL, but it will be common to use MEDIA_URL for calculating URLs (e.g. in templates). Also, use of 'media' for static media is consistent with ADMIN_MEDIA_PREFIX, which is lost with option 1) If we go with 2), there is a good case for not adding USER_MEDIA_URL to the media context processor - I can't imagine know when it would be needed in the normal case. If you want to generate a URL to a file stored in a model, the only sensible way to do it is instance.somefile.url, which handles it for you. If we go for 1) we will need both STATIC_URL and MEDIA_URL in the media context processor for backwards compatibility. Are there any common uses cases I have not accounted for? Finally, once these things are sorted out, is this a small enough change that I should go ahead and commit it, or should I wait for voting on Django 1.3 features? Thanks, Luke -- "Oh, look. I appear to be lying at the bottom of a very deep, dark hole. That seems a familiar concept. What does it remind me of? Ah, I remember. Life." (Marvin the paranoid android) Luke Plant || http://lukeplant.me.uk/ -- You received this message because you are subscribed to the Google Groups "Django developers" group. To post to this group, send email to django-develop...@googlegroups.com. To unsubscribe from this group, send email to django-developers+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-developers?hl=en.