Add "dyn:meta" tag support
fix a bug (forgot self) disconnect now redirects in /
This commit is contained in:
parent
d07b3b645a
commit
fec7447d13
|
@ -122,6 +122,15 @@ class DynastieGenerator:
|
|||
|
||||
return div
|
||||
|
||||
def createMeta(self, dom, name='', content=''):
|
||||
div = dom.createElement('meta')
|
||||
if name != '':
|
||||
div.setAttribute('name', name)
|
||||
if content != '':
|
||||
div.setAttribute('content', content)
|
||||
|
||||
return div
|
||||
|
||||
def simpleTransform(self, values, dom, elem, root):
|
||||
for node in root.childNodes:
|
||||
if node.prefix == 'dyn':
|
||||
|
@ -159,23 +168,23 @@ class DynastieGenerator:
|
|||
return root
|
||||
|
||||
if len(bases) != 1:
|
||||
addError('More than one base defined')
|
||||
self.addError('More than one base defined')
|
||||
return root
|
||||
|
||||
base = bases[0]
|
||||
|
||||
if not base.hasAttribute('file'):
|
||||
addError('No \'file\' attribute defined')
|
||||
self.addError('No \'file\' attribute defined')
|
||||
return root
|
||||
filename = base.getAttribute('file')
|
||||
|
||||
if not base.hasAttribute('block'):
|
||||
addError('No \'block\' attribute defined')
|
||||
self.addError('No \'block\' attribute defined')
|
||||
return root
|
||||
target_block = base.getAttribute('block')
|
||||
|
||||
if not os.path.exists(src + '/' + filename):
|
||||
addError('Base ' + filename + ' doesn\'t exists')
|
||||
self.addError('Base ' + filename + ' doesn\'t exists')
|
||||
return root
|
||||
|
||||
dom2 = root
|
||||
|
@ -189,7 +198,7 @@ class DynastieGenerator:
|
|||
block_found = False
|
||||
for block in blocks:
|
||||
if not block.hasAttribute('name'):
|
||||
addError('block has no attribute \'name\' in ' + filename)
|
||||
self.addError('block has no attribute \'name\' in ' + filename)
|
||||
return root
|
||||
blockname = block.getAttribute('name')
|
||||
if blockname != target_block:
|
||||
|
@ -201,7 +210,7 @@ class DynastieGenerator:
|
|||
block_found = True
|
||||
|
||||
if not block_found:
|
||||
addError('Block ' + target_block + ' not found in ' + src + '/' + filename)
|
||||
self.addError('Block ' + target_block + ' not found in ' + src + '/' + filename)
|
||||
return root
|
||||
|
||||
root = dom2.firstChild
|
||||
|
|
|
@ -7,13 +7,34 @@ from django.db import models
|
|||
|
||||
class Post(Index):
|
||||
|
||||
def createMetas(self, post, dom, meta_elem, root):
|
||||
name = root.getAttribute('name')
|
||||
if name is None:
|
||||
self.addError('Missing name attribute in dyn:meta')
|
||||
return
|
||||
|
||||
new_elem = None
|
||||
if name == 'keywords':
|
||||
new_elem = self.createMeta(dom, name, post.keywords)
|
||||
elif name == 'title':
|
||||
new_elem = self.createMeta(dom, name, post.title)
|
||||
elif name == 'description':
|
||||
new_elem = self.createMeta(dom, name, post.description)
|
||||
elif name == 'author':
|
||||
new_elem = self.createMeta(dom, name, post.author.first_name + ' ' + post.author.last_name)
|
||||
|
||||
if not new_elem is None:
|
||||
root.parentNode.replaceChild(new_elem, root)
|
||||
else:
|
||||
self.addError('name attribute \'' + name + '\' unknown for dyn:meta' )
|
||||
|
||||
def _createPost(self, post, dom, post_elem, root):
|
||||
self.createPost(post, dom, post_elem, root)
|
||||
post_nodes = dom.getElementsByTagNameNS(self.URI, "post")
|
||||
post_nodes = dom.getElementsByTagNameNS(self.URI, 'post')
|
||||
post_elem = post_nodes[0]
|
||||
post_elem.parentNode.removeChild(post_elem)
|
||||
|
||||
title_nodes = dom.getElementsByTagName("title")
|
||||
title_nodes = dom.getElementsByTagName('title')
|
||||
|
||||
# Set title to be title's post
|
||||
for node in title_nodes:
|
||||
|
@ -24,7 +45,8 @@ class Post(Index):
|
|||
def generate(self, blog, src, output):
|
||||
from dynastie.models import Post, Blog
|
||||
|
||||
hooks = {'post' : self._createPost}
|
||||
hooks = {'post' : self._createPost,
|
||||
'meta' : self.createMetas}
|
||||
|
||||
if not os.path.exists(src + '/_post.html'):
|
||||
self.addError('No _post.html found, exiting')
|
||||
|
|
Loading…
Reference in New Issue
Block a user