def download_data_review_stats()

in sql/moz-fx-data-shared-prod/telemetry_dev_cycle_external/data_review_stats_v1/query.py [0:0]


def download_data_review_stats(url, params):
    """Download bugs with data-review from Bugzilla API and parse the data."""
    bugzilla_response = get_api_response(url, params)
    bugs = bugzilla_response["bugs"]

    data_review_rows = []
    for bug in bugs:
        bug_id = bug["id"]
        update_counter = 0
        for changeset in bug["history"]:
            update_datetime = changeset["when"][:-1]
            who = changeset["who"]
            update_counter += 1
            for change in changeset["changes"]:
                if change["field_name"] != "flagtypes.name":
                    continue
                if "data-review+" in change["added"]:
                    data_review_rows.append(
                        {
                            "steward": who,
                            "action": "approval",
                            "bug_id": bug_id,
                            "update_datetime": update_datetime,
                            "attachment_id": change.get("attachment_id"),
                            "update_counter": update_counter,
                        }
                    )
                if "data-review+" in change["removed"]:
                    data_review_rows.append(
                        {
                            "steward": who,
                            "action": "revoke approval",
                            "bug_id": bug_id,
                            "update_datetime": update_datetime,
                            "attachment_id": change.get("attachment_id"),
                            "update_counter": update_counter,
                        }
                    )
                if "data-review-" in change["added"]:
                    data_review_rows.append(
                        {
                            "steward": who,
                            "action": "rejection",
                            "bug_id": bug_id,
                            "update_datetime": update_datetime,
                            "attachment_id": change.get("attachment_id"),
                            "update_counter": update_counter,
                        }
                    )
                if "data-review-" in change["removed"]:
                    data_review_rows.append(
                        {
                            "steward": who,
                            "action": "revoke rejection",
                            "bug_id": bug_id,
                            "update_datetime": update_datetime,
                            "attachment_id": change.get("attachment_id"),
                            "update_counter": update_counter,
                        }
                    )
                if "data-review?" in change["added"]:
                    stewards = re.findall(r"data-review\?\(([^)]+)\)", change["added"])
                    for steward in stewards:
                        data_review_rows.append(
                            {
                                "steward": steward,
                                "requestor": who,
                                "action": "request",
                                "bug_id": bug_id,
                                "update_datetime": update_datetime,
                                "attachment_id": change.get("attachment_id"),
                                "update_counter": update_counter,
                            }
                        )
                if "data-review?" in change["removed"]:
                    stewards = re.findall(
                        r"data-review\?\(([^)]+)\)", change["removed"]
                    )
                    for steward in stewards:
                        data_review_rows.append(
                            {
                                "steward": steward,
                                "requestor": who,
                                "action": "remove request",
                                "bug_id": bug_id,
                                "update_datetime": update_datetime,
                                "attachment_id": change.get("attachment_id"),
                                "update_counter": update_counter,
                            }
                        )
    return data_review_rows