Update GTFS Realtime data

This commit is contained in:
2024-02-04 22:20:09 +01:00
parent 8b4761e3b5
commit f2b6557cb7
5 changed files with 516 additions and 108 deletions

View File

@ -58,6 +58,13 @@ class ExceptionType(models.IntegerChoices):
REMOVED = 2, _("Removed")
class ScheduleRelationship(models.IntegerChoices):
SCHEDULED = 0, _("Scheduled")
SKIPPED = 1, _("Skipped")
NO_DATA = 2, _("No data")
UNSCHEDULED = 3, _("Unscheduled")
class Agency(models.Model):
id = models.CharField(
max_length=255,
@ -189,6 +196,17 @@ class Stop(models.Model):
blank=True,
)
@property
def stop_type(self):
train_type = self.id.split('StopPoint:OCE')[1].split('-')[0]
if train_type == "Train TER":
train_type = "TER"
elif train_type == "INTERCITES":
train_type = "INTER-CITÉS"
elif train_type == "INTERCITES de nuit":
train_type = "INTER-CITÉS de nuit"
return train_type
def __str__(self):
return f"{self.name} ({self.id})"
@ -337,14 +355,7 @@ class Trip(models.Model):
if self.service.transport_type == TransportType.TRANSILIEN:
return self.route.short_name
else:
train_type = self.origin.id.split('StopPoint:OCE')[1].split('-')[0]
if train_type == "Train TER":
train_type = "TER"
elif train_type == "INTERCITES":
train_type = "INTER-CITÉS"
elif train_type == "INTERCITES de nuit":
train_type = "INTER-CITÉS de nuit"
return train_type
return self.origin.stop_type
@property
def train_number(self):
@ -379,7 +390,6 @@ class Trip(models.Model):
class Meta:
verbose_name = _("Trip")
verbose_name_plural = _("Trips")
ordering = ("id",)
class StopTime(models.Model):
@ -629,3 +639,84 @@ class FeedInfo(models.Model):
verbose_name = _("Feed info")
verbose_name_plural = _("Feed infos")
ordering = ("publisher_name",)
class TripUpdate(models.Model):
trip = models.OneToOneField(
to="Trip",
on_delete=models.CASCADE,
verbose_name=_("Trip"),
related_name="update",
primary_key=True,
)
start_date = models.DateField(
verbose_name=_("Start date"),
)
start_time = models.TimeField(
verbose_name=_("Start time"),
)
schedule_relationship = models.IntegerField(
verbose_name=_("Schedule relationship"),
choices=ScheduleRelationship,
default=ScheduleRelationship.SCHEDULED,
)
def __str__(self):
return str(self.trip)
class Meta:
verbose_name = _("Trip update")
verbose_name_plural = _("Trip updates")
ordering = ("start_date", "trip",)
unique_together = ("trip", "start_date", "start_time",)
class StopTimeUpdate(models.Model):
trip_update = models.ForeignKey(
to="TripUpdate",
on_delete=models.CASCADE,
verbose_name=_("Trip update"),
related_name="stop_time_updates",
)
stop_time = models.OneToOneField(
to="StopTime",
on_delete=models.CASCADE,
verbose_name=_("Stop time"),
related_name="update",
primary_key=True,
)
arrival_delay = models.DurationField(
verbose_name=_("Arrival delay"),
)
arrival_time = models.DateTimeField(
verbose_name=_("Arrival time"),
)
departure_delay = models.DurationField(
verbose_name=_("Departure delay"),
)
departure_time = models.DateTimeField(
verbose_name=_("Departure time"),
)
schedule_relationship = models.IntegerField(
verbose_name=_("Schedule relationship"),
choices=ScheduleRelationship,
default=ScheduleRelationship.SCHEDULED,
)
def __str__(self):
return str(self.trip_update)
class Meta:
verbose_name = _("Stop time update")
verbose_name_plural = _("Stop time updates")
ordering = ("trip_update", "stop_time",)
unique_together = ("trip_update", "stop_time",)