Now ignoring even more unneeded HTML tags from an MS Word copy-and-paste: Specifically, "</o:p>" and similar.
This commit is contained in:
parent
a072564573
commit
16745f98dd
1
NEWS
1
NEWS
|
@ -1,4 +1,5 @@
|
||||||
1.6.5: February 12, 2009
|
1.6.5: February 12, 2009
|
||||||
|
* Now ignoring even more unneeded HTML tags from an MS Word copy-and-paste.
|
||||||
* Fixed a bug in Internet Explorer in which hiding a focused note could cause
|
* Fixed a bug in Internet Explorer in which hiding a focused note could cause
|
||||||
the next note to display incorrectly
|
the next note to display incorrectly
|
||||||
* Fixed a bug in Internet Explorer in which opening a note by following a link
|
* Fixed a bug in Internet Explorer in which opening a note by following a link
|
||||||
|
|
|
@ -215,6 +215,7 @@ class Html_cleaner(HTMLParser):
|
||||||
self.open_tags.insert(0, tag)
|
self.open_tags.insert(0, tag)
|
||||||
|
|
||||||
def handle_endtag(self, tag, attrs):
|
def handle_endtag(self, tag, attrs):
|
||||||
|
tag = tag.split( ":" )[ 0 ]
|
||||||
bracketed = "</%s>" % tag
|
bracketed = "</%s>" % tag
|
||||||
if tag not in self.permitted_tags:
|
if tag not in self.permitted_tags:
|
||||||
if tag not in self.stripped_tags:
|
if tag not in self.stripped_tags:
|
||||||
|
|
|
@ -3181,6 +3181,49 @@ class Test_notebooks( Test_controller ):
|
||||||
assert note.contents == expected_contents
|
assert note.contents == expected_contents
|
||||||
assert note.user_id == self.user.object_id
|
assert note.user_id == self.user.object_id
|
||||||
|
|
||||||
|
def test_save_new_note_with_disallowed_ms_word_tags( self ):
|
||||||
|
self.login()
|
||||||
|
|
||||||
|
# save a completely new note
|
||||||
|
title_with_tags = u"<h3>my funny title</h3>"
|
||||||
|
junk = u"foo<o:p>ms word!</o:p>"
|
||||||
|
more_junk = u"<m:wtf>blah</m><o>hm</o:isthis>"
|
||||||
|
new_note = Note.create( "55", title_with_tags + junk + more_junk )
|
||||||
|
previous_revision = new_note.revision
|
||||||
|
|
||||||
|
result = self.http_post( "/notebooks/save_note/", dict(
|
||||||
|
notebook_id = self.notebook.object_id,
|
||||||
|
note_id = new_note.object_id,
|
||||||
|
contents = new_note.contents,
|
||||||
|
startup = False,
|
||||||
|
previous_revision = None,
|
||||||
|
), session_id = self.session_id )
|
||||||
|
|
||||||
|
assert result[ "new_revision" ]
|
||||||
|
assert result[ "new_revision" ] != previous_revision
|
||||||
|
assert result[ "new_revision" ].user_id == self.user.object_id
|
||||||
|
assert result[ "new_revision" ].username == self.username
|
||||||
|
assert result[ "previous_revision" ] == None
|
||||||
|
user = self.database.load( User, self.user.object_id )
|
||||||
|
assert user.storage_bytes > 0
|
||||||
|
assert result[ "storage_bytes" ] == user.storage_bytes
|
||||||
|
assert result[ "rank" ] == 0.0
|
||||||
|
|
||||||
|
# make sure the new title is now loadable
|
||||||
|
result = self.http_post( "/notebooks/load_note_by_title/", dict(
|
||||||
|
notebook_id = self.notebook.object_id,
|
||||||
|
note_title = new_note.title,
|
||||||
|
), session_id = self.session_id )
|
||||||
|
|
||||||
|
note = result[ "note" ]
|
||||||
|
|
||||||
|
expected_contents = title_with_tags + u"fooms word!blahhm"
|
||||||
|
|
||||||
|
assert note.object_id == new_note.object_id
|
||||||
|
assert note.title == new_note.title
|
||||||
|
assert note.contents == expected_contents
|
||||||
|
assert note.user_id == self.user.object_id
|
||||||
|
|
||||||
def test_save_new_note_with_bad_characters( self ):
|
def test_save_new_note_with_bad_characters( self ):
|
||||||
self.login()
|
self.login()
|
||||||
|
|
||||||
|
|
Reference in New Issue