aboutsummaryrefslogtreecommitdiff
path: root/backend/cgi-bin
diff options
context:
space:
mode:
authorTerry Truong <terry06890@gmail.com>2022-07-01 20:07:51 +1000
committerTerry Truong <terry06890@gmail.com>2022-07-01 20:12:54 +1000
commitf2978efe205c509d79ced5b52d7fc311b1552e24 (patch)
tree695389b5ca85f1e2bf60a771c03a9bda7c4a7c25 /backend/cgi-bin
parent551fbe163b90cc1f318612c167fbdfe738dd7132 (diff)
Account for compound-node info-lookup sub-name-denoted node absence
Return a null entry in such cases, and have client indicate this with tile-info message.
Diffstat (limited to 'backend/cgi-bin')
-rwxr-xr-xbackend/cgi-bin/data.py15
1 files changed, 6 insertions, 9 deletions
diff --git a/backend/cgi-bin/data.py b/backend/cgi-bin/data.py
index 3815715..3579a18 100755
--- a/backend/cgi-bin/data.py
+++ b/backend/cgi-bin/data.py
@@ -78,9 +78,9 @@ class NodeInfo:
self.imgInfo = imgInfo # null | ImgInfo
class InfoResponse:
" Sent as responses to 'info' requests "
- def __init__(self, nodeInfo, subNodesInfo = None):
+ def __init__(self, nodeInfo, subNodesInfo):
self.nodeInfo = nodeInfo # NodeInfo
- self.subNodesInfo = subNodesInfo # [] | [NodeInfo, NodeInfo]
+ self.subNodesInfo = subNodesInfo # [] | [NodeInfo | null, NodeInfo | null]
# For data lookup
def lookupNodes(names, tree, dbCur):
@@ -138,7 +138,6 @@ def lookupNodes(names, tree, dbCur):
return nameToNodes
def lookupSuggs(searchStr, suggLimit, tree, dbCur):
" For a search string, returns a SearchSuggResponse describing search suggestions "
- time1 = time.time()
results = []
hasMore = False
# Get node names and alt-names
@@ -178,7 +177,6 @@ def lookupSuggs(searchStr, suggLimit, tree, dbCur):
if len(suggs) > suggLimit:
hasMore = True
#
- print(time.time() - time1, file=sys.stderr)
return SearchSuggResponse(results, hasMore)
def lookupInfo(name, tree, dbCur):
" For a node name, returns an InfoResponse, or None "
@@ -192,11 +190,10 @@ def lookupInfo(name, tree, dbCur):
subNames = [match.group(1), match.group(2)] if match != None else []
if len(subNames) > 0:
nameToSubNodes = lookupNodes(subNames, tree, dbCur)
- if len(nameToSubNodes) < 2:
- print(f"ERROR: Unable to find sub-names entries for {name}", file=sys.stderr)
- return None
+ if len(nameToSubNodes) < 2: # Possible when a subname-denoted node has been trimmed away
+ subNames = [n if n in nameToSubNodes else None for n in subNames]
nameToNodes.update(nameToSubNodes)
- namesToLookup = [name] if len(subNames) == 0 else subNames
+ namesToLookup = [name] if len(subNames) == 0 else [n for n in subNames if n != None]
# Get desc info
nameToDescInfo = {}
query = "SELECT name, desc, wiki_id, redirected, from_dbp FROM" \
@@ -220,7 +217,7 @@ def lookupInfo(name, tree, dbCur):
nameToNodes[n],
nameToDescInfo[n] if n in nameToDescInfo else None,
nameToImgInfo[n] if n in nameToImgInfo else None
- ) for n in [name] + subNames
+ ) if n != None else None for n in [name] + subNames
]
return InfoResponse(nodeInfoObjs[0], nodeInfoObjs[1:])