fixed minify caching problem, thanks Niphlod

This commit is contained in:
mdipierro
2012-09-12 09:55:56 -05:00
parent e3a9044164
commit ad6ed03f0d
3 changed files with 14 additions and 7 deletions
+1 -1
View File
@@ -1 +1 @@
Version 2.0.8 (2012-09-11 17:32:41) stable Version 2.0.8 (2012-09-12 09:55:52) stable
+1 -1
View File
@@ -20,7 +20,7 @@ try:
have_git = True have_git = True
except ImportError: except ImportError:
have_git = False have_git = False
GIT_MISSING = 'requires python-git module, but not installed or incompatible version' GIT_MISSING = 'requires gitpython module, but not installed or incompatible version'
from gluon.languages import (read_possible_languages, read_dict, write_dict, from gluon.languages import (read_possible_languages, read_dict, write_dict,
read_plural_dict, write_plural_dict) read_plural_dict, write_plural_dict)
+11 -4
View File
@@ -11,6 +11,7 @@ Modified by: Massimo Di Pierro <massimo.dipierro@gmail.com>
import cssmin import cssmin
import jsmin import jsmin
import os import os
import hashlib
def read_binary_file(filename): def read_binary_file(filename):
f = open(filename,'rb') f = open(filename,'rb')
@@ -56,6 +57,7 @@ def minify(files, path_info, folder, optimize_css, optimize_js,
new_files = [] new_files = []
css = [] css = []
js = [] js = []
processed = []
for k,filename in enumerate(files): for k,filename in enumerate(files):
if not filename.startswith('/') or \ if not filename.startswith('/') or \
any(filename.endswith(x) for x in ignore_concat): any(filename.endswith(x) for x in ignore_concat):
@@ -66,6 +68,7 @@ def minify(files, path_info, folder, optimize_css, optimize_js,
filename[len(static_path)+1:]) filename[len(static_path)+1:])
if filename.lower().endswith('.css'): if filename.lower().endswith('.css'):
processed.append(filename)
if concat_css: if concat_css:
contents = read_binary_file(abs_filename) contents = read_binary_file(abs_filename)
if minify_css: if minify_css:
@@ -75,6 +78,7 @@ def minify(files, path_info, folder, optimize_css, optimize_js,
else: else:
css.append(filename) css.append(filename)
elif filename.lower().endswith('.js'): elif filename.lower().endswith('.js'):
processed.append(filename)
if concat_js: if concat_js:
contents = read_binary_file(abs_filename) contents = read_binary_file(abs_filename)
if minify_js and not filename.endswith('.min.js') and \ if minify_js and not filename.endswith('.min.js') and \
@@ -84,6 +88,7 @@ def minify(files, path_info, folder, optimize_css, optimize_js,
js.append(contents) js.append(contents)
else: else:
js.append(filename) js.append(filename)
dest_key = hashlib.md5(repr(processed)).hexdigest()
if css and concat_css: if css and concat_css:
css = '\n\n'.join(contents for contents in css) css = '\n\n'.join(contents for contents in css)
if inline_css: if inline_css:
@@ -91,9 +96,10 @@ def minify(files, path_info, folder, optimize_css, optimize_js,
else: else:
temppath = os.path.join(folder,'static',temp) temppath = os.path.join(folder,'static',temp)
if not os.path.exists(temppath): os.mkdir(temppath) if not os.path.exists(temppath): os.mkdir(temppath)
tempfile = os.path.join(temppath,'compressed.css') dest = "compressed_%s.css" % dest_key
tempfile = os.path.join(temppath, dest)
write_binary_file(tempfile,css) write_binary_file(tempfile,css)
css = path_info+'/compressed.css' css = path_info+'/%s' % dest
new_files.append(css) new_files.append(css)
else: else:
new_files += css new_files += css
@@ -104,9 +110,10 @@ def minify(files, path_info, folder, optimize_css, optimize_js,
else: else:
temppath = os.path.join(folder,'static',temp) temppath = os.path.join(folder,'static',temp)
if not os.path.exists(temppath): os.mkdir(temppath) if not os.path.exists(temppath): os.mkdir(temppath)
tempfile = os.path.join(folder,'static',temp,'compressed.js') dest = "compressed_%s.js" % dest_key
tempfile = os.path.join(folder,'static',temp,dest)
write_binary_file(tempfile,js) write_binary_file(tempfile,js)
js = path_info+'/compressed.js' js = path_info+'/%s' % dest
new_files.append(js) new_files.append(js)
else: else:
new_files += js new_files += js