Fetch stops from OpenStreetMap
Deploy PBT / deploy (push) Successful in 16s

This commit is contained in:
2026-09-10 21:44:45 +02:00
parent 0ebf13aacf
commit 2a6e9c690b
14 changed files with 666 additions and 9 deletions
+31
View File
@@ -36,6 +36,31 @@ VERKEHRSMITTEL_OPTIONEN = [
]
class Stop(db.Model):
"""A boardable public-transport stop ("Haltestelle") in Austria.
Sourced from OpenStreetMap; see scripts/fetch_stops.py and stops_import.py.
"""
__tablename__ = "stops"
id = db.Column(db.Integer, primary_key=True)
osm_type = db.Column(db.String(8), nullable=False)
osm_id = db.Column(db.BigInteger, nullable=False)
name = db.Column(db.String(200), nullable=False)
# lowercased, accent-folded copy of name for diacritic-insensitive search
name_normalized = db.Column(db.String(200), nullable=False, index=True)
stop_type = db.Column(db.String(20), nullable=False, default="other")
municipality = db.Column(db.String(120))
latitude = db.Column(db.Float, nullable=False)
longitude = db.Column(db.Float, nullable=False)
__table_args__ = (
db.UniqueConstraint("osm_type", "osm_id", name="uq_stops_osm"),
)
class Trip(db.Model):
__tablename__ = "trips"
@@ -44,10 +69,16 @@ class Trip(db.Model):
transport_mode = db.Column(db.String(50), nullable=False)
line = db.Column(db.String(50))
# free-text label as entered; *_stop_id links to a known stop when matched
origin = db.Column(db.String(120), nullable=False)
origin_stop_id = db.Column(db.Integer, db.ForeignKey("stops.id"))
destination = db.Column(db.String(120), nullable=False)
destination_stop_id = db.Column(db.Integer, db.ForeignKey("stops.id"))
trip_date = db.Column(db.Date, nullable=False, default=date.today)
rating = db.Column(db.Integer, nullable=False) # 1-5
comment = db.Column(db.Text)
created_at = db.Column(db.DateTime, server_default=db.func.now())
origin_stop = db.relationship("Stop", foreign_keys=[origin_stop_id])
destination_stop = db.relationship("Stop", foreign_keys=[destination_stop_id])