in hgext/firefoxreleases/__init__.py [0:0]
def changesetentry(orig, web, ctx):
"""Add metadata for an individual changeset in hgweb."""
d = orig(web, ctx)
d = pycompat.byteskwargs(d)
repo = web.repo
db = db_for_repo(repo)
if not db:
return pycompat.strkwargs(d)
releases = release_info_for_changeset(db, repo, ctx)
if releases[b"this"]:
d[b"firefox_releases_here"] = []
d[b"firefox_releases_first"] = []
for config, build in sorted(releases[b"this"].items()):
build[b"anchor"] = releasedb.build_anchor(build)
# Set links to previous and future releases.
if config in releases[b"previous"]:
build[b"previousnode"] = releases[b"previous"][config][b"revision"]
d[b"firefox_releases_here"].append(build)
d[b"firefox_releases_first"].append(build)
if releases[b"future"]:
d.setdefault(b"firefox_releases_first", [])
for config, build in sorted(releases[b"future"].items()):
build[b"anchor"] = releasedb.build_anchor(build)
if build not in d[b"firefox_releases_first"]:
d[b"firefox_releases_first"].append(build)
if releases[b"previous"]:
d[b"firefox_releases_last"] = []
for config, build in sorted(releases[b"previous"].items()):
build[b"anchor"] = releasedb.build_anchor(build)
d[b"firefox_releases_last"].append(build)
# Used so we don't display "first release with" and "last release without".
# We omit displaying in this scenario because we're not confident in the
# data and don't want to take chances with inaccurate data.
if b"firefox_releases_first" in d and b"firefox_releases_last" in d:
d[b"have_first_and_last_firefox_releases"] = True
# Do some template fixes
# TODO build via a generator
if b"firefox_releases_first" in d:
d[b"firefox_releases_first"] = templateutil.mappinglist(
d[b"firefox_releases_first"]
)
if b"firefox_releases_last" in d:
d[b"firefox_releases_last"] = templateutil.mappinglist(
d[b"firefox_releases_last"]
)
if b"firefox_releases_here" in d:
d[b"firefox_releases_here"] = templateutil.mappinglist(
d[b"firefox_releases_here"]
)
return pycompat.strkwargs(d)