Skip to content

Commit c8b04de

Browse files
authored
Merge pull request #938 from googlefonts/project-board-update
traffic jam: Also update the Google Fonts board
2 parents 72be23d + 4222d6c commit c8b04de

File tree

2 files changed

+53
-4
lines changed

2 files changed

+53
-4
lines changed

Lib/gftools/push/servers.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,9 @@ def __init__(
9797

9898
@property
9999
def last_push(self):
100-
return datetime.fromtimestamp(self.family_versions_data["lastUpdate"]["seconds"])
100+
return datetime.fromtimestamp(
101+
self.family_versions_data["lastUpdate"]["seconds"]
102+
)
101103

102104
def compare_push_item(self, item: Items):
103105
server_item = self.find_item(item)

Lib/gftools/push/trafficjam.py

Lines changed: 50 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import logging
44
import os
55
from configparser import ConfigParser
6-
from dataclasses import dataclass
6+
from dataclasses import dataclass, field
77
from enum import Enum
88
from io import TextIOWrapper
99
from pathlib import Path
@@ -33,6 +33,13 @@
3333
TO_SANDBOX_ID = config["board_meta"]["to_sandbox_id"]
3434
TO_PRODUCTION_ID = config["board_meta"]["to_production_id"]
3535
BLOCKED_ID = config["board_meta"]["blocked_id"]
36+
37+
GF_BOARD_ID = config["gf_board_meta"]["board_id"]
38+
GF_BOARD_STATUS_FIELD_ID = config["gf_board_meta"]["board_id"]
39+
GF_BOARD_PR_GF_ID = config["gf_board_meta"]["pr_gf_id"]
40+
GF_BOARD_IN_DEV_ID = config["gf_board_meta"]["in_dev_id"]
41+
GF_BOARD_IN_SANDBOX_ID = config["gf_board_meta"]["in_sandbox_id"]
42+
GF_BOARD_LIVE_ID = config["gf_board_meta"]["live_id"]
3643
else:
3744
TRAFFIC_JAM_ID = os.environ.get("TRAFFIC_JAM_ID")
3845
STATUS_FIELD_ID = os.environ.get("STATUS_FIELD_ID")
@@ -45,6 +52,13 @@
4552
TO_PRODUCTION_ID = os.environ.get("TO_PRODUCTION_ID")
4653
BLOCKED_ID = os.environ.get("BLOCKED_ID")
4754

55+
GF_BOARD_ID = os.environ.get("GF_BOARD_ID")
56+
GF_BOARD_STATUS_FIELD_ID = os.environ.get("GF_BOARD_STATUS_FIELD_ID")
57+
GF_BOARD_PR_GF_ID = os.environ.get("GF_BOARD_PR_GF_ID")
58+
GF_BOARD_IN_DEV_ID = os.environ.get("GF_BOARD_IN_DEV_ID")
59+
GF_BOARD_IN_SANDBOX_ID = os.environ.get("GF_BOARD_IN_SANDBOX_ID")
60+
GF_BOARD_LIVE_ID = os.environ.get("GF_BOARD_LIVE_ID")
61+
4862

4963
class STATUS_OPTION_IDS(Enum):
5064
PR_GF = PR_GF_ID
@@ -53,6 +67,13 @@ class STATUS_OPTION_IDS(Enum):
5367
LIVE = LIVE_ID
5468

5569

70+
class GF_BOARD_STATUS_OPTION_IDS(Enum):
71+
PR_GF = GF_BOARD_PR_GF_ID
72+
IN_DEV = GF_BOARD_IN_DEV_ID
73+
IN_SANDBOX = GF_BOARD_IN_SANDBOX_ID
74+
LIVE = GF_BOARD_LIVE_ID
75+
76+
5677
class LIST_OPTION_IDS(Enum):
5778
TO_SANDBOX = TO_SANDBOX_ID
5879
TO_PRODUCTION = TO_PRODUCTION_ID
@@ -145,6 +166,16 @@ def from_string(string: str): # type: ignore[misc]
145166
name
146167
}
147168
}
169+
closingIssuesReferences(first: 10) {
170+
nodes {
171+
url
172+
projectItems(first: 10) {
173+
nodes {
174+
id
175+
}
176+
}
177+
}
178+
}
148179
merged
149180
closed
150181
}
@@ -181,6 +212,7 @@ class PushItem:
181212
push_list: Optional[PushList] = None
182213
merged: Optional[bool] = None
183214
id_: Optional[str] = None
215+
linked_issues: list = field(default_factory=lambda: [])
184216

185217
def __hash__(self) -> int:
186218
return hash(self.path)
@@ -227,7 +259,16 @@ def set_server(self, server: STATUS_OPTION_IDS):
227259
STATUS_FIELD_ID,
228260
server.value,
229261
)
230-
g._run_graphql(mutation, {})
262+
# Update the projects board as well
263+
for linked_issue in self.linked_issues:
264+
for project_item in linked_issue["projectItems"]["nodes"]:
265+
mutation = GOOGLE_FONTS_UPDATE_ITEM % (
266+
GF_BOARD_ID,
267+
project_item["id"],
268+
GF_BOARD_STATUS_FIELD_ID,
269+
getattr(GF_BOARD_STATUS_OPTION_IDS, server.name).value,
270+
)
271+
g._run_graphql(mutation, {})
231272

232273
def set_pushlist(self, listt: LIST_OPTION_IDS):
233274
from gftools.gfgithub import GitHubClient
@@ -522,6 +563,8 @@ def from_traffic_jam(cls, fp=None):
522563
continue
523564
labels = [i["name"] for i in item["content"]["labels"]["nodes"]]
524565

566+
linked_issues = item["content"]["closingIssuesReferences"]["nodes"]
567+
525568
files = [Path(i["path"]) for i in item["content"]["files"]["nodes"]]
526569
url = item["content"]["url"]
527570
merged = item["content"]["merged"]
@@ -548,5 +591,9 @@ def from_traffic_jam(cls, fp=None):
548591
cat = PushCategory.OTHER
549592

550593
for f in files:
551-
results.add(PushItem(Path(f), cat, status, url, push_list, merged, id_))
594+
results.add(
595+
PushItem(
596+
Path(f), cat, status, url, push_list, merged, id_, linked_issues
597+
)
598+
)
552599
return results

0 commit comments

Comments
 (0)