Skip to content

Commit 1197df6

Browse files
committed
cleared any previously persisted static_reference on the GTFS-RT ORM record
1 parent fdb67c3 commit 1197df6

File tree

2 files changed

+35
-51
lines changed

2 files changed

+35
-51
lines changed

api/src/scripts/populate_db_gtfs.py

Lines changed: 17 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -127,21 +127,16 @@ def process_feed_references(self, session: "Session"):
127127
if data_type != "gtfs_rt":
128128
continue
129129
gtfs_rt_feed = self.query_feed_by_stable_id(session, stable_id, "gtfs_rt")
130+
gtfs_rt_feed = self.query_feed_by_stable_id(session, stable_id, "gtfs_rt")
131+
132+
# Wipe any previously persisted raw static_reference on the ORM (avoid stale data)
133+
if hasattr(gtfs_rt_feed, "static_reference") and gtfs_rt_feed.static_reference is not None:
134+
gtfs_rt_feed.static_reference = None
135+
session.add(gtfs_rt_feed)
136+
session.flush()
137+
138+
# Parse CSV static_reference only to derive relationships (do not persist the raw value)
130139
static_reference = self.get_safe_value(row, "static_reference", "")
131-
# gtfs_rt_feed.gtfs_feeds = []
132-
# if static_reference:
133-
# try:
134-
# gtfs_stable_id = f"mdb-{int(float(static_reference))}"
135-
# except ValueError:
136-
# gtfs_stable_id = static_reference
137-
# gtfs_feed = self.query_feed_by_stable_id(session, gtfs_stable_id, "gtfs")
138-
# if not gtfs_feed:
139-
# self.logger.warning(f"Could not find static reference feed {gtfs_stable_id} for feed {stable_id}")
140-
# continue
141-
# gtfs_rt_feed.gtfs_feeds = [gtfs_feed]
142-
# self.logger.info(f"Adding feed reference from {stable_id} to {gtfs_stable_id}")
143-
# # Flush to avoid FK violation
144-
# session.flush()
145140
gtfs_rt_feed.gtfs_feeds = []
146141
if static_reference:
147142
raw_tokens = [tok.strip() for tok in str(static_reference).split("|") if tok and tok.strip()]
@@ -158,17 +153,16 @@ def process_feed_references(self, session: "Session"):
158153
)
159154
continue
160155
# Only add if provider matches (normalized)
161-
rt_provider = (gtfs_rt_feed.provider or "").strip().lower()
162-
schedule_provider = (gtfs_feed.provider or "").strip().lower()
163-
if rt_provider and schedule_provider and rt_provider != schedule_provider:
164-
self.logger.info(
165-
f"Skipping static reference {gtfs_stable_id} for {stable_id}: provider mismatch "
166-
f"(gtfs_rt='{gtfs_rt_feed.provider}' vs. schedule='{gtfs_feed.provider}')"
167-
)
168-
continue
156+
# rt_provider = (gtfs_rt_feed.provider or "").strip().lower()
157+
# schedule_provider = (gtfs_feed.provider or "").strip().lower()
158+
# if rt_provider and schedule_provider and rt_provider != schedule_provider:
159+
# self.logger.info(
160+
# f"Skipping static reference {gtfs_stable_id} for {stable_id}: provider mismatch "
161+
# f"(gtfs_rt='{gtfs_rt_feed.provider}' vs. schedule='{gtfs_feed.provider}')"
162+
# )
163+
# continue
169164
matched_feeds.append(gtfs_feed)
170165

171-
# Replace persisted references with matched set (or clear if none matched)
172166
previous = [f.stable_id for f in getattr(gtfs_rt_feed, "gtfs_feeds", [])] if gtfs_rt_feed else []
173167
gtfs_rt_feed.gtfs_feeds = matched_feeds
174168
session.add(gtfs_rt_feed)
@@ -177,16 +171,6 @@ def process_feed_references(self, session: "Session"):
177171
f"Set feed references for {stable_id}: {previous} -> {[f.stable_id for f in matched_feeds]}"
178172
)
179173

180-
# Clear raw static_reference field on the ORM if present (we persist relationships instead)
181-
if hasattr(gtfs_rt_feed, "static_reference"):
182-
try:
183-
gtfs_rt_feed.static_reference = None
184-
session.add(gtfs_rt_feed)
185-
session.flush()
186-
except Exception:
187-
# don't block population on clearing this field
188-
self.logger.debug("Failed to clear static_reference attribute for feed %s", stable_id)
189-
190174
def process_redirects(self, session: "Session"):
191175
"""
192176
Process the redirects

api/tests/integration/populate_tests/test_populate.py

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -55,21 +55,21 @@ def test_is_official_overwrite(client: TestClient, values):
5555
assert json_response["official"] is expected_official, values["assert_fail_message"]
5656

5757

58-
# def test_is_feed_reference_overwrite(client: TestClient):
59-
# feed_id = "mdb-1562"
60-
# response = client.request(
61-
# "GET",
62-
# "/v1/gtfs_rt_feeds/{id}".format(id=feed_id),
63-
# headers=authHeaders,
64-
# )
65-
# json_response = response.json()
66-
# assert json_response["feed_references"] == ["mdb-50"]
67-
#
68-
# feed_id = "mdb-1563"
69-
# response = client.request(
70-
# "GET",
71-
# "/v1/gtfs_rt_feeds/{id}".format(id=feed_id),
72-
# headers=authHeaders,
73-
# )
74-
# json_response = response.json()
75-
# assert json_response["feed_references"] == ["mdb-50"]
58+
def test_is_feed_reference_overwrite(client: TestClient):
59+
feed_id = "mdb-1562"
60+
response = client.request(
61+
"GET",
62+
"/v1/gtfs_rt_feeds/{id}".format(id=feed_id),
63+
headers=authHeaders,
64+
)
65+
json_response = response.json()
66+
assert json_response["feed_references"] == ["mdb-50"]
67+
68+
feed_id = "mdb-1563"
69+
response = client.request(
70+
"GET",
71+
"/v1/gtfs_rt_feeds/{id}".format(id=feed_id),
72+
headers=authHeaders,
73+
)
74+
json_response = response.json()
75+
assert json_response["feed_references"] == ["mdb-50"]

0 commit comments

Comments
 (0)