diff --git a/ete3/webplugin/webapp.py b/ete3/webplugin/webapp.py
index 385122850..b1a96886f 100755
--- a/ete3/webplugin/webapp.py
+++ b/ete3/webplugin/webapp.py
@@ -166,16 +166,15 @@ def _load_tree(self, treeid, tree=None, cache_file=None):
# if no tree is given, and not in memmory, it tries to loaded
# from previous sessions
if treeid not in self._treeid2tree:
- self._load_tree_from_path(self._treeid2cache[treeid])
+ self._load_tree_from_path(self._treeid2cache[treeid], treeid)
# Returns True if tree and indexes are loaded
return (treeid in self._treeid2tree) and (treeid in self._treeid2index)
- def _load_tree_from_path(self, pkl_path):
+ def _load_tree_from_path(self, pkl_path, treeid):
tree_path = os.path.join(self.CONFIG["temp_dir"], pkl_path)
if os.path.exists(tree_path):
- print(six.moves.cPickle.load(open(tree_path)))
- t = self._treeid2tree[treeid] = six.moves.cPickle.load(open(tree_path))
+ t = self._treeid2tree[treeid] = six.moves.cPickle.load(open(tree_path, 'rb'))
self._load_tree_index(treeid)
return True
else:
@@ -216,7 +215,6 @@ def _get_tree_img(self, treeid, pre_drawing_action=None):
handler(t, arguments[0])
elif atype == "layout":
self._treeid2layout[treeid] = handler
-
layout_fn = self._treeid2layout.get(treeid, self._layout)
mapid = "img_map_"+str(time.time())
img_map = _render_tree(t, img_path, self.CONFIG["DISPLAY"], layout = layout_fn,
@@ -230,25 +228,22 @@ def _get_tree_img(self, treeid, pre_drawing_action=None):
if hasattr(n, "_QtItem_"):
n._QtItem_ = None
delattr(n, "_QtItem_")
-
tree_actions = []
for aindex, (action, target, handler, checker, html_generator) in enumerate(self.actions):
if target in self.TREE_TARGET_ACTIONS and (not checker or checker(t)):
tree_actions.append(aindex)
-
try:
version_tag = __version__
except NameError:
version_tag = "ete3"
-
self._dump_tree_to_file(t, treeid)
-
ete_publi = '
' %\
(version_tag)
img_html = """
""" %\
(treeid, img_url, mapid, treeid, ','.join(map(str, tree_actions)))
tree_div_id = "ETE_tree_"+str(treeid)
+
return html_map+ ''%tree_div_id + img_html + ete_publi + "
"
# WSGI web application
@@ -292,29 +287,30 @@ def __call__(self, environ, start_response):
elif method == "get_menu":
if not self._load_tree(treeid):
- return "get_menu: Cannot load the tree: %s" %treeid
-
- if nodeid:
- tree_index = self._treeid2index[treeid]
- node = tree_index[nodeid]
+ html = "get_menu: Cannot load the tree: %s" %treeid
else:
- node = None
-
- if textface:
- header = str(textface).strip()
- else:
- header = "Menu"
- html = """""" %\
- (header)
- for i in map(int, actions.split(",")):
- aname, target, handler, checker, html_generator = self.actions[i]
- if html_generator:
- html += html_generator(i, treeid, nodeid, textface, node)
+ if nodeid:
+ tree_index = self._treeid2index[treeid]
+ node = tree_index[nodeid]
+ else:
+ node = None
+ if textface:
+ header = str(textface).strip()
else:
- html += """- %s
""" %\
- (treeid, nodeid, i, aname)
- html += '
'
- return html
+ header = "Menu"
+ html = """
+ """ % (header)
+ for i in map(int, actions.split(",")):
+
+ aname, target, handler, checker, html_generator = self.actions[i]
+ if html_generator:
+ html += html_generator(i, treeid, nodeid, textface, node)
+ else:
+ html += """- %s
""" %\
+ (treeid, nodeid, i, aname)
+ html += '
'
+ return [html.encode('utf-8')]
elif method == "action":
if not self._load_tree(treeid):
@@ -322,17 +318,16 @@ def __call__(self, environ, start_response):
if aindex is None:
# just refresh tree
- return self._get_tree_img(treeid=treeid)
+ return [self._get_tree_img(treeid=treeid).encode('utf-8')]
else:
aname, target, handler, checker, html_generator = self.actions[int(aindex)]
-
if target in set(["node", "face", "layout"]):
- return self._get_tree_img(treeid=treeid, pre_drawing_action=[target, handler, [nodeid]])
+ return [self._get_tree_img(treeid=treeid, pre_drawing_action=[target, handler, [nodeid]]).encode('utf-8')]
elif target in set(["search"]):
- return self._get_tree_img(treeid=treeid, pre_drawing_action=[target, handler, [search_term]])
+ return [self._get_tree_img(treeid=treeid, pre_drawing_action=[target, handler, [search_term]]).encode('utf-8')]
elif target in set(["refresh"]):
- return self._get_tree_img(treeid=treeid)
- return "Bad guy"
+ return [self._get_tree_img(treeid=treeid).encode('utf-8')]
+ return str.encode("Bad guy")
elif self._external_app_handler:
return self._external_app_handler(environ, start_response, self.queries)