Browse Source

Server now generates on demand only if needed

main
Lakshmi Vyasarajan 14 years ago
parent
commit
eb706faf22
2 changed files with 26 additions and 17 deletions
  1. +1
    -1
      hyde/fs.py
  2. +25
    -16
      hyde/server.py

+ 1
- 1
hyde/fs.py View File

@@ -236,7 +236,7 @@ class File(FS):
determine age.

"""
return another_file.last_modified > self.last_modified
return File(str(another_file)).last_modified > self.last_modified

@staticmethod
def make_temp(text):


+ 25
- 16
hyde/server.py View File

@@ -61,19 +61,22 @@ class HydeRequestHandler(SimpleHTTPRequestHandler):
logger.info("Trying to load file based on request:[%s]" % result.path)
path = result.path.lstrip('/')
res = site.content.resource_from_relative_deploy_path(path)

if not res:

# Cannot find the source file using the given path.
# Check if the target file exists in the deploy folder.
deployed = File(site.config.deploy_root_path.child(path))
if deployed.exists:
# this file is probably being generated by a plugin.
# lets not try too hard, just regenerate
self.server.regenerate()
return deployed.path
else:
logger.info("Cannot load file:[%s]" % path)
raise Exception("Cannot load file: [%s]" % path)

# this file is probably new or being generated by a plugin.
# lets not try too hard, just regenerate
logger.info("Attempting regeneration for:[%s]" % path)
self.server.regenerate()
res = site.content.resource_from_relative_deploy_path(path)
if not res:
# Nothing much we can do.
logger.error("Cannot load file:[%s]" % path)

return site.config.deploy_root_path.child(path)
else:
self.server.generate_resource(res)
new_path = site.config.deploy_root_path.child(
@@ -105,6 +108,7 @@ class HydeWebServer(HTTPServer):
HydeRequestHandler)

def __reinit__(self):
self.site.load()
self.generator = Generator(self.site)
self.regenerate()

@@ -115,6 +119,7 @@ class HydeWebServer(HTTPServer):
try:
logger.info('Regenerating the entire site')
self.generator.generate_all()
self.exception_count = 0
except Exception, exception:
self.exception_count += 1
logger.error('Error occured when regenerating the site [%s]'
@@ -125,12 +130,16 @@ class HydeWebServer(HTTPServer):

def generate_resource(self, resource):
"""
Regenerates the entire site.
Regenerates the given resource.
"""
try:
logger.info('Generating resource [%s]' % resource)
self.generator.generate_resource(resource)
except Exception, exception:
logger.error('Error [%s] occured when generating the resource [%s]'
target = self.site.config.deploy_root_path.child(
resource.relative_deploy_path)
if File(target).older_than(resource.source_file):
try:
logger.info('Generating resource [%s]' % resource)
self.generator.generate_resource(resource)
self.exception_count = 0
except Exception, exception:
logger.error(
'Error [%s] occured when generating the resource [%s]'
% (repr(exception), resource))
raise

Loading…
Cancel
Save