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 = '
%s
' %\ (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 = """
%s
' - return html + header = "Menu" + html = """
%s +
+ ' + 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)