def render(self, context): js_name = template.Variable(self.name).resolve(context) try: js = settings.COMPRESS_JS[js_name] except KeyError: return '' # fail silently, do not return anything if an invalid group is specified if 'external_urls' in js: r = '' for url in js['external_urls']: r += render_js(js, url) return r if settings.COMPRESS: version = None if settings.COMPRESS_AUTO: u, version = needs_update(js['output_filename'], js['source_filenames']) if u: filter_js(js) else: filename_base, filename = os.path.split(js['output_filename']) path_name = static_root(filename_base) version = get_version_from_file(path_name, filename) return render_js(js, js['output_filename'], version) else: # output source files r = '' for source_file in js['source_filenames']: r += render_js(js, source_file) return r
def get_version(self, source_files): # Return the modification time for the newest source file return str(max([int(os.stat(static_root(f)).st_mtime) for f in source_files]))
def needs_update(self, output_file, source_files, version): output_file_name = get_output_filename(output_file, version) compressed_file_full = static_root(output_file_name) return (int(os.stat(compressed_file_full).st_mtime) < int(version)), version