Esempio n. 1
0
 def get_resource(self, path):
     domain = os.environ['SERVER_NAME']
     resource = Resource.find(path=path, generation=self.settings.version, domain=domain)
     if resource is None:
         content = self.fetch_resource_content(path)
         created_on = self.fetch_file_timestamp(path)
         resource = Resource(path=path, content=content, generation=self.settings.version)
         if created_on is not None:
             resource.created_on = created_on
         try:
             length = len(resource.content)
         except:
             length = 0
         if length>0:
             log_event("Caching resource <code>%s</code> (%d bytes)" % (path, length))
         logging.debug("VFS: caching resource %s (%d bytes) for %s", path, length, domain)
         resource.domain = domain
         if content!=None:
             basename, extension = os.path.splitext(path)
             optimizations = Optimizations.all().filter("domain =", os.environ['SERVER_NAME']).get()
             logging.info('optimizations: '+str(optimizations))
             if extension=='.js' and optimizations and optimizations.minify_js:
                 logging.info('Deferring to minify')
                 logging.debug(str(path)+' '+str(self.settings.version)+' '+str(domain))
                 deferred.defer(minify_js, path, self.settings.version, domain)
             elif extension=='.css' and optimizations and optimizations.minify_css:
                 from drydrop.lib.slimmer import css_slimmer
                 resource.content=css_slimmer(resource.content)
             elif (extension=='.html' or (extension==None and path[-1]=='/')) and optimizations and optimizations.minify_html:
                 from drydrop.lib.slimmer import html_slimmer
                 resource.content=html_slimmer(resource.content)
             elif (extension=='.png' or extension=='.jpg' or extension=='.jpeg') and optimizations and optimizations.minify_css:
                 logging.info('Deferring to smush')
                 logging.debug(str(path)+' '+str(self.settings.version)+' '+str(domain))
                 deferred.defer(smush, path, self.settings.version, domain)
             resource.save()
     try:
         length = len(resource.content)
     except:
         length = 0
     logging.debug("VFS: serving resource %s (%d bytes) for %s", path, length, domain)
     return resource