Re: RFC: staticfiles "static" template tag and CachedStaticFilesStorage

2011-08-11 Thread Jannis Leidel
On 11.08.2011, at 12:00, Jonathan Slenders wrote:

> Also a utility function in staticfiles for reading the actual content
> on the server side, giving a relative path would be nice if such one
> does not yet exist.
> e.g.
> 
> from staticfiles.utils import staticfile_open
> filepointer = staticfile_open('my-relative-path...')

In the patch I've added a staticfiles_storage attribute to the
django.contrib.staticfiles.storage module which you can use to do that,
e.g.::

from django.contrib.staticfiles.storage import staticfiles_storage

filepointer = staticfiles_storage.open('my-relative-path')

Jannis

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@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.



Re: RFC: staticfiles "static" template tag and CachedStaticFilesStorage

2011-08-11 Thread Jonathan Slenders
Hi Jannis,

Thanks for your efford on staticfiles!


I guess the patch is okay, but I didn't review it in detail.

Also a utility function in staticfiles for reading the actual content
on the server side, giving a relative path would be nice if such one
does not yet exist.
e.g.

from staticfiles.utils import staticfile_open
filepointer = staticfile_open('my-relative-path...')


Thanks,
Jonathan



On 8 août, 12:17, Jannis Leidel  wrote:
> Hi all,
>
> I believe I'm getting close to a fix for #15252 which would add
> a bunch of new features to the staticfiles contrib app. I'd
> appreciated it if someone would review the latest patch at
>
>    https://code.djangoproject.com/ticket/15252
>
> ``static`` template tag
> ---
>
> The purpose of the template tag is to make it easier to refer
> to static files from templates while extending the possibilities
> at the same time. So instead of relying on a context variable
> named ``STATIC_URL`` you could alternatively use the new template
> tag with a relative path of a file you want the URL for, e.g.:
>
>     {% static "css/base.css" %}
>
> Behind the scenes it uses the configured storage backend that
> staticfiles uses when you run collectstatic (STATICFILES_STORAGE),
> which means it's also works with non-local storage backends,
> such as one that deploys to a private Amazon S3 bucket which
> requires using signed URLs to access a file.
>
> In other words, it allows a much richer API to building the URL
> of a static file by using the storage API that is already in place.
>
> CachedStaticFilesStorage
> 
>
> The second feature is an optional storage backend which hooks
> right into the new template tag and is a subclass of the default
> StaticFilesStorage (which is a subclass of FileSystemStorage).
> It basically adds "cache-busting" abilities to staticfiles.
>
> Specifically, when enabled and you run collectstatic it saves
> a second version of each file it finds, only with a MD5 hash
> appended to the filename, which is generated with its own content.
> So if a ``css/base.css`` would be collected, it would also deploy
> a ``css/base.27e20196a850.css``. Any CSS @import and url()
> statements are automatically replaced with the cached path in
> those cached files, too.
>
> Later, when the ``static`` template tag tries to create the URL
> for ``css/base.css``, it will use the same code path to return the
> URL to the cached file instead. To lower the burden of calculating
> the MD5 hash, the result is cached in an own cache backend named
> "staticfiles" (falls back to "default" if not specified in CACHES).
>
> I've written this functionality as a mixin (CachedFilesMixin), so it
> should be possible to use it with any storage backend that supports
> the common API (url(), open() and save()).
>
> I'd appreciate if you would test-drive the feature and let me know
> if you find any big issues since I plan to merge this very soon.
>
> Thanks!
>
> Jannis

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@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.



RFC: staticfiles "static" template tag and CachedStaticFilesStorage

2011-08-08 Thread Jannis Leidel
Hi all,

I believe I'm getting close to a fix for #15252 which would add
a bunch of new features to the staticfiles contrib app. I'd
appreciated it if someone would review the latest patch at

https://code.djangoproject.com/ticket/15252

``static`` template tag
---

The purpose of the template tag is to make it easier to refer
to static files from templates while extending the possibilities
at the same time. So instead of relying on a context variable
named ``STATIC_URL`` you could alternatively use the new template
tag with a relative path of a file you want the URL for, e.g.:

{% static "css/base.css" %}

Behind the scenes it uses the configured storage backend that
staticfiles uses when you run collectstatic (STATICFILES_STORAGE),
which means it's also works with non-local storage backends,
such as one that deploys to a private Amazon S3 bucket which
requires using signed URLs to access a file.

In other words, it allows a much richer API to building the URL
of a static file by using the storage API that is already in place.

CachedStaticFilesStorage


The second feature is an optional storage backend which hooks
right into the new template tag and is a subclass of the default
StaticFilesStorage (which is a subclass of FileSystemStorage).
It basically adds "cache-busting" abilities to staticfiles.

Specifically, when enabled and you run collectstatic it saves
a second version of each file it finds, only with a MD5 hash
appended to the filename, which is generated with its own content.
So if a ``css/base.css`` would be collected, it would also deploy
a ``css/base.27e20196a850.css``. Any CSS @import and url()
statements are automatically replaced with the cached path in
those cached files, too.

Later, when the ``static`` template tag tries to create the URL
for ``css/base.css``, it will use the same code path to return the
URL to the cached file instead. To lower the burden of calculating
the MD5 hash, the result is cached in an own cache backend named
"staticfiles" (falls back to "default" if not specified in CACHES).

I've written this functionality as a mixin (CachedFilesMixin), so it
should be possible to use it with any storage backend that supports
the common API (url(), open() and save()).

I'd appreciate if you would test-drive the feature and let me know
if you find any big issues since I plan to merge this very soon.

Thanks!

Jannis


-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-developers@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.