def releases_index()

in bedrock/releasenotes/views.py [0:0]


def releases_index(request, product):
    releases = {}
    major_releases = []

    if product == "Firefox":
        major_releases = firefox_desktop.firefox_history_major_releases
        minor_releases = firefox_desktop.firefox_history_stability_releases

    for release in major_releases:
        major_version = float(re.findall(r"^\d+\.\d+", release)[0])
        # The version numbering scheme of Firefox changes sometimes. The second
        # number has not been used since Firefox 4, then reintroduced with
        # Firefox ESR 24 (Bug 870540). On this index page, 24.1.x should be
        # fallen under 24.0. This pattern is a tricky part.
        # The outlier is 33.1 which is in major_releases for some reason.
        major_pattern = r"^" + re.escape(
            f"{major_version:.0f}." if major_version > 4 and release not in ["33.0", "33.1"] else f"{major_version:.1f}."
        )
        releases[major_version] = {
            "major": release,
            "minor": sorted(
                [x for x in minor_releases if re.findall(major_pattern, x) if x not in major_releases], key=lambda x: [int(y) for y in x.split(".")]
            ),
        }

    return l10n_utils.render(request, f"{product.lower()}/releases/index.html", {"releases": sorted(releases.items(), reverse=True)})