Skip to content

Commit

Permalink
refactored parsing node strings to MacrogenesisInfo
Browse files Browse the repository at this point in the history
  • Loading branch information
thvitt committed Mar 27, 2019
1 parent 58363c2 commit af83e02
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 14 deletions.
16 changes: 2 additions & 14 deletions graphviewer/graphviewer.py
Expand Up @@ -3,7 +3,6 @@

from flask import Flask, render_template, request, Response
from markupsafe import Markup
from werkzeug.contrib.cache import SimpleCache

from macrogen import MacrogenesisInfo, write_dot
from macrogen.graphutils import remove_edges, simplify_timeline
Expand All @@ -17,23 +16,12 @@ class NoNodes(ValueError):
pass


def parse_nodes(node_str):
nodes = []
if node_str:
for node_spec in node_str.split(','):
try:
nodes.append(info.node(node_spec.strip()))
except KeyError:
... # flash("Knoten »%s« nicht gefunden", node_spec.strip())
return nodes


def prepare_agraph():
node_str = request.args.get('nodes')
nodes = parse_nodes(node_str)
nodes = info.nodes(node_str)
context = request.args.get('context', False)
abs_dates = request.args.get('abs_dates', False)
extra = parse_nodes(request.args.get('extra', ''))
extra = info.nodes(request.args.get('extra', ''))
induced_edges = request.args.get('induced_edges', False)
ignored_edges = request.args.get('ignored_edges', False)
direct_assertions = request.args.get('assertions', False)
Expand Down
27 changes: 27 additions & 0 deletions src/macrogen/graph.py
Expand Up @@ -357,6 +357,33 @@ def first(iterable):
except StopIteration:
raise KeyError("No node matching {!r} in the base graph.".format(spec))

def nodes(self, node_str: str, check: bool = False) -> List[Node]:
"""
Find nodes for a comma-separated list of node strings.
Args:
node_str:
check: if true, raise exception when a node has not been found
See also:
MacrogenesisInfo.node
Returns:
"""
nodes = []
if node_str:
for node_spec in node_str.split(','):
try:
stripped = node_spec.strip()
nodes.append(self.node(stripped))
except KeyError:
if check:
raise
else:
logger.warning('Requested node %s not found in the graph', stripped)
return nodes

def add_path(self, graph: nx.MultiDiGraph, source: Node, target: Node, weight='iweight', method='dijkstra',
must_exist=False, edges_from: Optional[nx.MultiDiGraph] = None):
"""
Expand Down

0 comments on commit af83e02

Please sign in to comment.