|
|
@@ -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 |