Browse Source

Added support getting resources by their deploy path

main
Lakshmi Vyasarajan 14 years ago
parent
commit
c526f4fab4
3 changed files with 34 additions and 5 deletions
  1. +4
    -4
      hyde/server.py
  2. +19
    -0
      hyde/site.py
  3. +11
    -1
      hyde/tests/test_site.py

+ 4
- 4
hyde/server.py View File

@@ -61,7 +61,7 @@ class HydeRequestHandler(SimpleHTTPRequestHandler):
result = urlparse.urlparse(self.path) result = urlparse.urlparse(self.path)
logger.info("Trying to load file based on request:[%s]" % result.path) logger.info("Trying to load file based on request:[%s]" % result.path)
path = result.path.lstrip('/') path = result.path.lstrip('/')
res = site.content.resource_from_relative_path(path)
res = site.content.resource_from_relative_deploy_path(path)
if not res: if not res:
# Cannot find the source file using the given path. # Cannot find the source file using the given path.
# Check if the target file exists in the deploy folder. # Check if the target file exists in the deploy folder.
@@ -132,9 +132,9 @@ class HydeWebServer(HTTPServer):
Regenerates the entire site. Regenerates the entire site.
""" """
try: try:
logger.info('Generating resource [%]' % resource)
logger.info('Generating resource [%s]' % resource)
self.generator.generate_resource(resource) self.generator.generate_resource(resource)
except Exception, exception: except Exception, exception:
logger.error('Error [%s] occured when generating the resource [%s]' logger.error('Error [%s] occured when generating the resource [%s]'
% (resource, repr(exception)))
self.__reinit__()
% (repr(exception), resource))
raise

+ 19
- 0
hyde/site.py View File

@@ -80,6 +80,7 @@ class Resource(Processable):
after its been processed. after its been processed.
""" """
self._relative_deploy_path = path self._relative_deploy_path = path
self.site.content.resource_deploy_path_changed(self)


relative_deploy_path = property(get_relative_deploy_path, set_relative_deploy_path) relative_deploy_path = property(get_relative_deploy_path, set_relative_deploy_path)


@@ -192,7 +193,9 @@ class RootNode(Node):
super(RootNode, self).__init__(source_folder) super(RootNode, self).__init__(source_folder)
self.site = site self.site = site
self.node_map = {} self.node_map = {}
self.node_deploy_map = {}
self.resource_map = {} self.resource_map = {}
self.resource_deploy_map = {}


def node_from_path(self, path): def node_from_path(self, path):
""" """
@@ -226,6 +229,22 @@ class RootNode(Node):
return self.resource_from_path( return self.resource_from_path(
self.source_folder.child(str(relative_path))) self.source_folder.child(str(relative_path)))


def resource_deploy_path_changed(self, resource):
"""
Handles the case where the relative deploy path of a
resource has changed.
"""
self.resource_deploy_map[str(resource.relative_deploy_path)] = resource

def resource_from_relative_deploy_path(self, relative_deploy_path):
"""
Gets the content resource whose deploy path maps to
the given relative path. If no match is found it returns None.
"""
if relative_deploy_path in self.resource_deploy_map:
return self.resource_deploy_map[relative_deploy_path]
return self.resource_from_relative_path(relative_deploy_path)

def add_node(self, a_folder): def add_node(self, a_folder):
""" """
Adds a new node to this folder's hierarchy. Adds a new node to this folder's hierarchy.


+ 11
- 1
hyde/tests/test_site.py View File

@@ -53,7 +53,7 @@ def test_node_url():
c = r.add_node(TEST_SITE_ROOT.child_folder('content/blog/2010/december')) c = r.add_node(TEST_SITE_ROOT.child_folder('content/blog/2010/december'))
assert c.url == '/' + c.relative_path assert c.url == '/' + c.relative_path
assert c.url == '/blog/2010/december' assert c.url == '/blog/2010/december'
def test_node_full_url(): def test_node_full_url():
s = Site(TEST_SITE_ROOT) s = Site(TEST_SITE_ROOT)
s.config.base_url = 'http://localhost' s.config.base_url = 'http://localhost'
@@ -118,6 +118,16 @@ def test_get_resource():
resource = node.get_resource('merry-christmas.html') resource = node.get_resource('merry-christmas.html')
assert resource == s.content.resource_from_relative_path(Folder(path).child('merry-christmas.html')) assert resource == s.content.resource_from_relative_path(Folder(path).child('merry-christmas.html'))


def test_get_resource_from_relative_deploy_path():
s = Site(TEST_SITE_ROOT)
s.load()
path = 'blog/2010/december'
node = s.content.node_from_relative_path(path)
resource = node.get_resource('merry-christmas.html')
assert resource == s.content.resource_from_relative_deploy_path(Folder(path).child('merry-christmas.html'))
resource.relative_deploy_path = Folder(path).child('merry-christmas.php')
assert resource == s.content.resource_from_relative_deploy_path(Folder(path).child('merry-christmas.php'))

def test_is_processable_default_true(): def test_is_processable_default_true():
s = Site(TEST_SITE_ROOT) s = Site(TEST_SITE_ROOT)
s.load() s.load()


Loading…
Cancel
Save