From 9d504ac00935493e5dc6e13b70ccfc07a2677d6c Mon Sep 17 00:00:00 2001 From: Diego Fuentes Palacios <43205584+Dfupa@users.noreply.github.com> Date: Mon, 7 Sep 2020 15:36:25 +0200 Subject: [PATCH 1/2] Fixing webapp.py Python3 encoding incompatibility Fixing Python3 encoding incompatibilities. --- ete3/webplugin/webapp.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ete3/webplugin/webapp.py b/ete3/webplugin/webapp.py index 385122850..178da5183 100755 --- a/ete3/webplugin/webapp.py +++ b/ete3/webplugin/webapp.py @@ -314,7 +314,7 @@ def __call__(self, environ, start_response): html += """
  • %s
  • """ %\ (treeid, nodeid, i, aname) html += '' - return html + return [html.encode('utf-8')] elif method == "action": if not self._load_tree(treeid): @@ -322,16 +322,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 [self._get_tree_img(treeid=treeid).encode('utf-8')] return "Bad guy" elif self._external_app_handler: From 3801893f36700dc4c71b997044061c37f7a7dc01 Mon Sep 17 00:00:00 2001 From: Diego Fuentes Palacios <43205584+Dfupa@users.noreply.github.com> Date: Thu, 1 Oct 2020 11:47:45 +0200 Subject: [PATCH 2/2] Update webapp.py Reorganizing a bit of the code as well as fix some minor errors --- ete3/webplugin/webapp.py | 57 ++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 31 deletions(-) diff --git a/ete3/webplugin/webapp.py b/ete3/webplugin/webapp.py index 178da5183..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,28 +287,29 @@ 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] - else: - node = None - - if textface: - header = str(textface).strip() + html = "get_menu: Cannot load the tree: %s" %treeid else: - header = "Menu" - html = """
    %s
    ' + node = None + if textface: + header = str(textface).strip() + else: + header = "Menu" + html = """
    %s +
    + ' return [html.encode('utf-8')] elif method == "action": @@ -325,14 +321,13 @@ def __call__(self, environ, start_response): 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]]).encode('utf-8')] elif target in set(["search"]): 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).encode('utf-8')] - return "Bad guy" + return str.encode("Bad guy") elif self._external_app_handler: return self._external_app_handler(environ, start_response, self.queries)