2012-07-18 11:30:54 +02:00
|
|
|
import os
|
|
|
|
import hashlib
|
|
|
|
from xml.dom import *
|
|
|
|
|
2012-07-15 18:21:26 +02:00
|
|
|
class DynastieGenerator:
|
|
|
|
|
2012-07-18 11:30:54 +02:00
|
|
|
URI = "http://indefero.soutade.fr/p/dynastie"
|
|
|
|
report = ''
|
|
|
|
|
|
|
|
def addReport(self, string, color=''):
|
|
|
|
if color != '':
|
|
|
|
self.report = self.report + '<span style="color:' + color + '">'
|
|
|
|
self.report = self.report + '<b>' + self.__class__.__name__ + '</b> : '
|
|
|
|
self.report = self.report + string
|
|
|
|
if color != '':
|
|
|
|
self.report = self.report + '</span>'
|
|
|
|
self.report = self.report + '<br/>\n'
|
|
|
|
|
|
|
|
def addWarning(self, string):
|
|
|
|
self.addReport(string, 'yellow')
|
|
|
|
|
|
|
|
def addError(self, string):
|
|
|
|
self.addReport(string, 'red')
|
|
|
|
|
2012-07-15 18:21:26 +02:00
|
|
|
def generate(self, blog, src, output):
|
|
|
|
return
|
|
|
|
|
2012-07-18 11:30:54 +02:00
|
|
|
def writeIfNotTheSame(self, filename, content):
|
|
|
|
if os.path.exists(filename):
|
|
|
|
src_md5 = hashlib.md5()
|
|
|
|
f = open(filename,'rb')
|
|
|
|
src_md5.update(f.read())
|
|
|
|
f.close()
|
|
|
|
|
|
|
|
dst_md5 = hashlib.md5()
|
|
|
|
dst_md5.update(content)
|
|
|
|
|
|
|
|
if src_md5.digest() == dst_md5.digest():
|
|
|
|
self.addReport(filename + ' regenerated with the same content, skipping...')
|
|
|
|
return
|
|
|
|
os.unlink(filename)
|
|
|
|
|
|
|
|
self.addReport('Write ' + filename)
|
|
|
|
f = open(filename,'wb')
|
|
|
|
f.write(content)
|
|
|
|
f.close()
|
|
|
|
|
|
|
|
|
|
|
|
def createElement(self, dom, name, content):
|
|
|
|
div = dom.createElement('div')
|
|
|
|
div.setAttribute('class', name)
|
|
|
|
div.appendChild(dom.createTextNode(content))
|
|
|
|
|
|
|
|
return div
|
2012-07-15 18:21:26 +02:00
|
|
|
|
2012-07-18 11:30:54 +02:00
|
|
|
def simpleTransform(self, values, dom, elem, root):
|
|
|
|
for node in root.childNodes:
|
|
|
|
if node.prefix == 'dyn':
|
|
|
|
if node.localName in values:
|
|
|
|
new_elem = self.createElement(dom, node.localName, values[node.localName])
|
|
|
|
elem.appendChild(new_elem)
|
|
|
|
else:
|
|
|
|
elem.appendChild(node.cloneNode(True))
|
|
|
|
|
|
|
|
|