@@ -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
0 commit comments