diff --git a/controller/Notebooks.py b/controller/Notebooks.py index cfbe7ec..87aaa8a 100644 --- a/controller/Notebooks.py +++ b/controller/Notebooks.py @@ -488,6 +488,9 @@ class Notebooks( object ): raise Access_error() note = self.__database.load( Note, note_id ) + if note is None or note.notebook_id != notebook_id: + raise Access_error() + items = [] for match in self.LINK_PATTERN.finditer( note.contents ): @@ -495,7 +498,7 @@ class Notebooks( object ): # if it has a link target, it's a link to an external web site if target: - items.append( Note_tree_area.make_item( title, attributes, u"note_tree_external_link", target = u"_new" ) ) + items.append( Note_tree_area.make_item( title, attributes, u"note_tree_external_link" ) ) continue # if it has '/files/' in its path, it's an uploaded file link diff --git a/controller/test/Test_notebooks.py b/controller/test/Test_notebooks.py index 6995c14..5054eed 100644 --- a/controller/test/Test_notebooks.py +++ b/controller/test/Test_notebooks.py @@ -1002,6 +1002,200 @@ class Test_notebooks( Test_controller ): assert revisions[ 0 ].user_id == self.user.object_id assert revisions[ 0 ].username == self.username + def test_load_note_links( self ): + self.login() + + result = self.http_post( "/notebooks/load_note_links/", dict( + notebook_id = self.notebook.object_id, + note_id = self.note.object_id, + ), session_id = self.session_id ) + + html = result.get( "tree_html" ) + assert u"link' + self.note.contents = u"

blah

this is a %s" % ( link % "" ) + self.database.save( self.note ) + + result = self.http_post( "/notebooks/load_note_links/", dict( + notebook_id = self.notebook.object_id, + note_id = self.note.object_id, + ), session_id = self.session_id ) + + html = result.get( "tree_html" ) + assert u"link to file' + self.note.contents = u"

blah

this is a %s" % ( link % "" ) + self.database.save( self.note ) + + result = self.http_post( "/notebooks/load_note_links/", dict( + notebook_id = self.notebook.object_id, + note_id = self.note.object_id, + ), session_id = self.session_id ) + + html = result.get( "tree_html" ) + assert u"link to note2' + self.note.contents = u"

blah

this is a %s" % ( link % "" ) + self.database.save( self.note ) + + result = self.http_post( "/notebooks/load_note_links/", dict( + notebook_id = self.notebook.object_id, + note_id = self.note.object_id, + ), session_id = self.session_id ) + + html = result.get( "tree_html" ) + assert u"link to note2' + self.note.contents = u"

blah

this is a %s" % ( link % "" ) + self.database.save( self.note ) + + result = self.http_post( "/notebooks/load_note_links/", dict( + notebook_id = self.notebook.object_id, + note_id = self.note.object_id, + ), session_id = self.session_id ) + + html = result.get( "tree_html" ) + assert u"link to note2' + assert link % u' class="note_tree_link"' in html + assert u"tree_expander_empty" in html + + def test_load_note_links_with_note_link_to_unknown_note_id( self ): + self.login() + + link = u'link to note2' + self.note.contents = u"

blah

this is a %s" % ( link % "" ) + self.database.save( self.note ) + + result = self.http_post( "/notebooks/load_note_links/", dict( + notebook_id = self.notebook.object_id, + note_id = self.note.object_id, + ), session_id = self.session_id ) + + html = result.get( "tree_html" ) + assert u"link to note2' + self.note.contents = u"

blah

this is a %s" % ( link % "" ) + self.database.save( self.note ) + + link2 = u'link back to note' + self.note2.contents = u"

blah

this is a %s" % ( link % "" ) + self.database.save( self.note2 ) + + result = self.http_post( "/notebooks/load_note_links/", dict( + notebook_id = self.notebook.object_id, + note_id = self.note.object_id, + ), session_id = self.session_id ) + + html = result.get( "tree_html" ) + assert u"link to note2' + link2 = u'link to self' + external_link = u'link' + file_link = u'link to file' + self.note.contents = u"

blah

%s and %s and %s and %s as well" % ( + link % "", link2 % "", external_link % "", file_link % "", + ) + self.database.save( self.note ) + + result = self.http_post( "/notebooks/load_note_links/", dict( + notebook_id = self.notebook.object_id, + note_id = self.note.object_id, + ), session_id = self.session_id ) + + html = result.get( "tree_html" ) + assert u"%s" % ( + u'%s' % ( link_attributes, root_note_id and u' id="%s_link_%s"' % ( base_name, root_note_id ) or "", target and u' target="%s"' % target or "",