⚡️ Stop.postal_region and Line.id/operator_id can be integer values
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
from collections import defaultdict
|
from collections import defaultdict
|
||||||
|
from logging import getLogger
|
||||||
from re import compile as re_compile
|
from re import compile as re_compile
|
||||||
from time import time
|
from time import time
|
||||||
from typing import (
|
from typing import (
|
||||||
@@ -37,6 +38,10 @@ from .idfm_types import (
|
|||||||
from .ratp_types import Picto as RatpPicto
|
from .ratp_types import Picto as RatpPicto
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
logger = getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class IdfmInterface:
|
class IdfmInterface:
|
||||||
|
|
||||||
IDFM_ROOT_URL = "https://prim.iledefrance-mobilites.fr/marketplace"
|
IDFM_ROOT_URL = "https://prim.iledefrance-mobilites.fr/marketplace"
|
||||||
@@ -358,9 +363,22 @@ class IdfmInterface:
|
|||||||
|
|
||||||
picto_id = fields.picto.id_ if fields.picto is not None else None
|
picto_id = fields.picto.id_ if fields.picto is not None else None
|
||||||
|
|
||||||
|
line_id = fields.id_line
|
||||||
|
try:
|
||||||
|
formatted_line_id = int(line_id[1:] if line_id[0] == "C" else line_id)
|
||||||
|
except ValueError:
|
||||||
|
logger.warning("Unable to format %s line id.", line_id)
|
||||||
|
continue
|
||||||
|
|
||||||
|
try:
|
||||||
|
operator_id = int(fields.operatorref) # type: ignore
|
||||||
|
except (ValueError, TypeError):
|
||||||
|
logger.warning("Unable to format %s operator id.", fields.operatorref)
|
||||||
|
operator_id = 0
|
||||||
|
|
||||||
ret.append(
|
ret.append(
|
||||||
Line(
|
Line(
|
||||||
id=fields.id_line,
|
id=formatted_line_id,
|
||||||
short_name=fields.shortname_line,
|
short_name=fields.shortname_line,
|
||||||
name=fields.name_line,
|
name=fields.name_line,
|
||||||
status=IdfmLineState(fields.status.value),
|
status=IdfmLineState(fields.status.value),
|
||||||
@@ -373,7 +391,7 @@ class IdfmInterface:
|
|||||||
),
|
),
|
||||||
colour_web_hexa=fields.colourweb_hexa,
|
colour_web_hexa=fields.colourweb_hexa,
|
||||||
text_colour_hexa=fields.textcolourprint_hexa,
|
text_colour_hexa=fields.textcolourprint_hexa,
|
||||||
operator_id=optional_value(fields.operatorref),
|
operator_id=operator_id,
|
||||||
operator_name=optional_value(fields.operatorname),
|
operator_name=optional_value(fields.operatorname),
|
||||||
accessibility=IdfmState(fields.accessibility.value),
|
accessibility=IdfmState(fields.accessibility.value),
|
||||||
visual_signs_available=IdfmState(
|
visual_signs_available=IdfmState(
|
||||||
@@ -403,13 +421,21 @@ class IdfmInterface:
|
|||||||
fields.arrxepsg2154, fields.arryepsg2154
|
fields.arrxepsg2154, fields.arryepsg2154
|
||||||
)
|
)
|
||||||
|
|
||||||
|
try:
|
||||||
|
postal_region = int(fields.arrpostalregion)
|
||||||
|
except ValueError:
|
||||||
|
logger.warning(
|
||||||
|
"Unable to format %s postal region.", fields.arrpostalregion
|
||||||
|
)
|
||||||
|
continue
|
||||||
|
|
||||||
yield Stop(
|
yield Stop(
|
||||||
id=int(fields.arrid),
|
id=int(fields.arrid),
|
||||||
name=fields.arrname,
|
name=fields.arrname,
|
||||||
epsg3857_x=epsg3857_point[0],
|
epsg3857_x=epsg3857_point[0],
|
||||||
epsg3857_y=epsg3857_point[1],
|
epsg3857_y=epsg3857_point[1],
|
||||||
town_name=fields.arrtown,
|
town_name=fields.arrtown,
|
||||||
postal_region=fields.arrpostalregion,
|
postal_region=postal_region,
|
||||||
transport_mode=TransportMode(fields.arrtype.value),
|
transport_mode=TransportMode(fields.arrtype.value),
|
||||||
version=fields.arrversion,
|
version=fields.arrversion,
|
||||||
created_ts=created_ts,
|
created_ts=created_ts,
|
||||||
|
@@ -27,7 +27,7 @@ from .stop import _Stop
|
|||||||
class LineStopAssociations(Base):
|
class LineStopAssociations(Base):
|
||||||
|
|
||||||
id = mapped_column(BigInteger, primary_key=True)
|
id = mapped_column(BigInteger, primary_key=True)
|
||||||
line_id = mapped_column(String, ForeignKey("lines.id"))
|
line_id = mapped_column(BigInteger, ForeignKey("lines.id"))
|
||||||
stop_id = mapped_column(BigInteger, ForeignKey("_stops.id"))
|
stop_id = mapped_column(BigInteger, ForeignKey("_stops.id"))
|
||||||
|
|
||||||
__tablename__ = "line_stop_associations"
|
__tablename__ = "line_stop_associations"
|
||||||
@@ -53,7 +53,7 @@ class Line(Base):
|
|||||||
|
|
||||||
db = db
|
db = db
|
||||||
|
|
||||||
id = mapped_column(String, primary_key=True)
|
id = mapped_column(BigInteger, primary_key=True)
|
||||||
|
|
||||||
short_name = mapped_column(String)
|
short_name = mapped_column(String)
|
||||||
name = mapped_column(String, nullable=False)
|
name = mapped_column(String, nullable=False)
|
||||||
@@ -68,7 +68,7 @@ class Line(Base):
|
|||||||
colour_web_hexa = mapped_column(String, nullable=False)
|
colour_web_hexa = mapped_column(String, nullable=False)
|
||||||
text_colour_hexa = mapped_column(String, nullable=False)
|
text_colour_hexa = mapped_column(String, nullable=False)
|
||||||
|
|
||||||
operator_id = mapped_column(String)
|
operator_id = mapped_column(Integer)
|
||||||
operator_name = mapped_column(String)
|
operator_name = mapped_column(String)
|
||||||
|
|
||||||
accessibility = mapped_column(Enum(IdfmState), nullable=False)
|
accessibility = mapped_column(Enum(IdfmState), nullable=False)
|
||||||
|
@@ -53,7 +53,7 @@ class _Stop(Base):
|
|||||||
|
|
||||||
name = mapped_column(String, nullable=False, index=True)
|
name = mapped_column(String, nullable=False, index=True)
|
||||||
town_name = mapped_column(String, nullable=False)
|
town_name = mapped_column(String, nullable=False)
|
||||||
postal_region = mapped_column(String, nullable=False)
|
postal_region = mapped_column(Integer, nullable=False)
|
||||||
epsg3857_x = mapped_column(Float, nullable=False)
|
epsg3857_x = mapped_column(Float, nullable=False)
|
||||||
epsg3857_y = mapped_column(Float, nullable=False)
|
epsg3857_y = mapped_column(Float, nullable=False)
|
||||||
|
|
||||||
|
@@ -46,7 +46,7 @@ class TransportMode(StrEnum):
|
|||||||
|
|
||||||
|
|
||||||
class Line(BaseModel):
|
class Line(BaseModel):
|
||||||
id: str
|
id: int
|
||||||
shortName: str
|
shortName: str
|
||||||
name: str
|
name: str
|
||||||
status: IdfmLineState
|
status: IdfmLineState
|
||||||
|
@@ -73,13 +73,11 @@ trace.set_tracer_provider(TracerProvider())
|
|||||||
trace.get_tracer_provider().add_span_processor(BatchSpanProcessor(OTLPSpanExporter()))
|
trace.get_tracer_provider().add_span_processor(BatchSpanProcessor(OTLPSpanExporter()))
|
||||||
tracer = trace.get_tracer(APP_NAME)
|
tracer = trace.get_tracer(APP_NAME)
|
||||||
|
|
||||||
with tracer.start_as_current_span("foo"):
|
|
||||||
print("Hello world!")
|
|
||||||
|
|
||||||
|
|
||||||
idfm_interface = IdfmInterface(API_KEY, db)
|
idfm_interface = IdfmInterface(API_KEY, db)
|
||||||
|
|
||||||
|
|
||||||
|
# TODO: Add command line argument to force database reset.
|
||||||
@app.on_event("startup")
|
@app.on_event("startup")
|
||||||
async def startup():
|
async def startup():
|
||||||
await db.connect(DB_PATH, clear_static_data=True)
|
await db.connect(DB_PATH, clear_static_data=True)
|
||||||
@@ -102,7 +100,7 @@ def optional_datetime_to_ts(dt: datetime | None) -> int | None:
|
|||||||
|
|
||||||
|
|
||||||
@app.get("/line/{line_id}", response_model=LineSchema)
|
@app.get("/line/{line_id}", response_model=LineSchema)
|
||||||
async def get_line(line_id: str) -> LineSchema:
|
async def get_line(line_id: int) -> LineSchema:
|
||||||
line: Line | None = await Line.get_by_id(line_id)
|
line: Line | None = await Line.get_by_id(line_id)
|
||||||
|
|
||||||
if line is None:
|
if line is None:
|
||||||
|
Reference in New Issue
Block a user