From 358ec48d8a371c0cb50fb212db07bd08057f65d1 Mon Sep 17 00:00:00 2001 From: mdipierro Date: Thu, 20 Sep 2012 11:19:11 -0500 Subject: [PATCH] better zip_static_files.py, thanks Niphlod --- VERSION | 2 +- scripts/zip_static_files.py | 65 ++++++++++++++++++++++--------------- 2 files changed, 40 insertions(+), 27 deletions(-) diff --git a/VERSION b/VERSION index 51358869..4dcb1e68 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -Version 2.0.9 (2012-09-20 11:16:45) stable +Version 2.0.9 (2012-09-20 11:19:07) stable diff --git a/scripts/zip_static_files.py b/scripts/zip_static_files.py index 10497b7a..67d342f0 100644 --- a/scripts/zip_static_files.py +++ b/scripts/zip_static_files.py @@ -3,32 +3,45 @@ ## launch with python web2py.py -S myapp -R scripts/zip_static_files.py -ALLOWED_EXTS = ['.css', '.js'] + import os import gzip -static_path = os.path.abspath(os.path.join(request.folder, 'static')) -filelist = [] -for root, dir, files in os.walk(static_path): - for file in files: - filelist.append(os.path.join(root, file)) -tsave = 0 -for fi in filelist: - extension = os.path.splitext(fi) - extension = len(extension) > 1 and extension[1] or None - if not extension or extension not in ALLOWED_EXTS: - print 'skipping %s' % os.path.basename(fi) - continue - fstats = os.stat(fi) - atime, mtime = fstats.st_atime, fstats.st_mtime - gfi = fi + '.gz' - print 'gzipping %s to %s' % (os.path.basename(fi), os.path.basename(gfi)) - f_in = open(fi, 'rb') - f_out = gzip.open(gfi, 'wb') - f_out.writelines(f_in) - f_out.close() - f_in.close() - os.utime(gfi, (atime,mtime)) - saved = fstats.st_size - os.stat(gfi).st_size - tsave+= saved -print 'saved %s KB' % (int(tsave)/1000.0) +def zip_static(filelist=[]): + tsave = 0 + for fi in filelist: + extension = os.path.splitext(fi) + extension = len(extension) > 1 and extension[1] or None + if not extension or extension not in ALLOWED_EXTS: + print 'skipping %s' % os.path.basename(fi) + continue + fstats = os.stat(fi) + atime, mtime = fstats.st_atime, fstats.st_mtime + gfi = fi + '.gz' + if os.path.isfile(gfi): + zstats = os.stat(gfi) + zatime, zmtime = zstats.st_atime, zstats.st_mtime + if zatime == atime and zmtime == mtime: + print 'skipping %s, already gzipped to the latest version' % os.path.basename(fi) + continue + print 'gzipping %s to %s' % (os.path.basename(fi), os.path.basename(gfi)) + f_in = open(fi, 'rb') + f_out = gzip.open(gfi, 'wb') + f_out.writelines(f_in) + f_out.close() + f_in.close() + os.utime(gfi, (atime,mtime)) + saved = fstats.st_size - os.stat(gfi).st_size + tsave+= saved + + print 'saved %s KB' % (int(tsave)/1000.0) + +if __name__ == '__main__': + ALLOWED_EXTS = ['.css', '.js'] + static_path = os.path.abspath(os.path.join(request.folder, 'static')) + filelist = [] + for root, dir, files in os.walk(static_path): + for file in files: + filelist.append(os.path.join(root, file)) + + zip_static(filelist)