in crashclouseau/models.py [0:0]
def get_by_uuid(uuid):
uuid_info = UUID.get_bid_chan_by_uuid(uuid)
if not uuid_info:
return {}, {}
uuidid = uuid_info["id"]
repo_url = Mercurial.get_repo_url(uuid_info["channel"])
is_java = uuid_info["java"]
iframes = (
db.session.query(
CrashStack.stackpos,
Node.node,
Node.backedout,
Node.pushdate,
Node.bug,
Node.id,
Score.score,
)
.select_from(CrashStack)
.join(Score)
.join(Changeset)
.join(Node)
)
iframes = iframes.filter(
CrashStack.uuidid == uuidid, CrashStack.java.is_(is_java)
).order_by(CrashStack.stackpos, Node.id.desc())
frames = (
db.session.query(CrashStack)
.filter(CrashStack.uuidid == uuidid, CrashStack.java.is_(is_java))
.order_by(CrashStack.stackpos)
)
stack = []
res = {"frames": stack}
for frame in frames:
url, filename = utils.get_file_url(
repo_url, frame.filename, frame.node, frame.line, frame.original
)
stack.append(
{
"stackpos": frame.stackpos,
"filename": filename,
"function": frame.function,
"changesets": OrderedDict(),
"line": frame.line,
"node": frame.node,
"original": frame.original,
"internal": frame.internal,
"url": url,
}
)
for stackpos, node, bout, pdate, bugid, nodeid, score in iframes:
stack[stackpos]["changesets"][node] = {
"score": score,
"backedout": bout,
"pushdate": pdate,
"bugid": bugid,
}
return res, uuid_info