Force iframe end tag </iframe> to be wrote (optimized by xml parser)
This commit is contained in:
parent
1b0c92e45a
commit
4ece9e9079
|
@ -22,6 +22,7 @@ import hashlib
|
||||||
import gzip
|
import gzip
|
||||||
import math
|
import math
|
||||||
import codecs
|
import codecs
|
||||||
|
import re
|
||||||
from xml.dom import *
|
from xml.dom import *
|
||||||
from xml.dom.minidom import parse
|
from xml.dom.minidom import parse
|
||||||
from xml.parsers.expat import *
|
from xml.parsers.expat import *
|
||||||
|
@ -64,7 +65,8 @@ class DynastieGenerator:
|
||||||
self.hash_posts = hash_posts
|
self.hash_posts = hash_posts
|
||||||
self.hash_posts_content = hash_posts_content
|
self.hash_posts_content = hash_posts_content
|
||||||
self.user = request and request.user or None
|
self.user = request and request.user or None
|
||||||
|
self.iframe_re = re.compile(r'(<iframe.*)/>')
|
||||||
|
|
||||||
def addReport(self, string, color=''):
|
def addReport(self, string, color=''):
|
||||||
if string in self.report: return
|
if string in self.report: return
|
||||||
if color:
|
if color:
|
||||||
|
@ -94,8 +96,10 @@ class DynastieGenerator:
|
||||||
|
|
||||||
writer = StrictUTF8Writer()
|
writer = StrictUTF8Writer()
|
||||||
node.writexml(writer)
|
node.writexml(writer)
|
||||||
content = writer.getvalue()
|
content = writer.getvalue().decode('utf-8')
|
||||||
|
# iframe tag must be like <iframe ... ></iframe>, not optimized <iframe ... />
|
||||||
|
content = self.iframe_re.sub('\\1></iframe>', content).encode('utf-8')
|
||||||
|
|
||||||
dst_md5 = hashlib.md5()
|
dst_md5 = hashlib.md5()
|
||||||
dst_md5.update(content)
|
dst_md5.update(content)
|
||||||
|
|
||||||
|
@ -164,8 +168,8 @@ class DynastieGenerator:
|
||||||
for node in subtree.childNodes:
|
for node in subtree.childNodes:
|
||||||
div.appendChild(node.cloneNode(True))
|
div.appendChild(node.cloneNode(True))
|
||||||
|
|
||||||
def createElement(self, dom, name='', content='', subtree=None):
|
def createElement(self, dom, name='', content='', subtree=None, _type='div'):
|
||||||
div = dom.createElement('div')
|
div = dom.createElement(_type)
|
||||||
if name:
|
if name:
|
||||||
div.setAttribute('class', name)
|
div.setAttribute('class', name)
|
||||||
if content:
|
if content:
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
import datetime
|
import datetime
|
||||||
import os
|
import os
|
||||||
import xml
|
import xml
|
||||||
|
import re
|
||||||
from xml.dom.minidom import parse, parseString
|
from xml.dom.minidom import parse, parseString
|
||||||
from dynastie.generators.generator import DynastieGenerator, StrictUTF8Writer
|
from dynastie.generators.generator import DynastieGenerator, StrictUTF8Writer
|
||||||
from dynastie.generators.index import Index
|
from dynastie.generators.index import Index
|
||||||
|
@ -257,6 +258,7 @@ class Post(Index):
|
||||||
|
|
||||||
def preview(self, request, src, values):
|
def preview(self, request, src, values):
|
||||||
from dynastie.models import Blog
|
from dynastie.models import Blog
|
||||||
|
iframe_re = re.compile(r'(<iframe.*)/>')
|
||||||
|
|
||||||
self.user = request.user
|
self.user = request.user
|
||||||
|
|
||||||
|
@ -286,4 +288,8 @@ class Post(Index):
|
||||||
writer = StrictUTF8Writer()
|
writer = StrictUTF8Writer()
|
||||||
nodes[0].writexml(writer)
|
nodes[0].writexml(writer)
|
||||||
|
|
||||||
return writer.getvalue().decode('utf-8')
|
content = writer.getvalue().decode('utf-8')
|
||||||
|
# iframe tag must be like <iframe ... ></iframe>, not optimized <iframe ... />
|
||||||
|
content = self.iframe_re.sub('\\1></iframe>', content)
|
||||||
|
|
||||||
|
return content
|
||||||
|
|
Loading…
Reference in New Issue
Block a user