in bot/tools/fix_missing.py [0:0]
def list_pushes(known_revisions, updates, min_date, max_date):
params = {
# 'full': 'true',
"count": 10,
"author": "reviewbot",
"push_timestamp__lte": timestamp(max_date),
}
while True:
resp = requests.get(TREEHERDER_PUSH_URL, params, headers=GetAppUserAgent())
resp.raise_for_status()
data = resp.json()
for job in data["results"]:
rev = job["revision"]
date = datetime.fromtimestamp(job["push_timestamp"])
if date < min_date:
return
# Check if that job has been processed
if rev in known_revisions:
print(f"Skipping {rev}: already in backend")
continue
# Check if that phabricator revision needs an update
match = REGEX_PHAB_ID.search(job["revisions"][0]["comments"])
if match is None:
print(f"No Phabricator revision found for {rev}")
phab_revision = int(match.group(1))
update = updates.get(phab_revision)
if update and update > date:
print(f"Skipping {rev}: revision already got a review")
continue
# Check if revision is still open
state = phab_state(phab_revision)
if state["closed"] is True:
print(
f"Skipping {rev}: revision is closed on Phabricator {phab_revision}"
)
continue
# Process job
yield job
# Go to next page
params["push_timestamp__lte"] = job["push_timestamp"] - 1