from django.db import models class Agency(models.Model): agency_id = models.IntegerField(primary_key=True) agency_name = models.CharField(max_length=250) agency_url = models.URLField() agency_phone = models.CharField(max_length=15) agency_email = models.EmailField() agency_fare_url = models.URLField() class Stop(models.Model): stop_id = models.IntegerField(primary_key=True) stop_code = models.CharField(max_length=50) stop_name = models.CharField(max_length=250) tts_stop_name = models.CharField(max_length=250) stop_desc = models.CharField(max_length=500) stop_lat = models.IntegerField() stop_lon = models.IntegerField() zone_id = models.IntegerField(unique=True) stop_url = models.URLField(blank=True, null=True) location_type = models.IntegerField(blank=True, null=True) parent_station = models.ForeignKey('self', on_delete=models.SET_NULL, blank=True, null=True) stop_timezone = models.CharField(max_length=255, blank=True, null=True) wheelchair_boarding = models.IntegerField(blank=True, null=True) level_id = models.CharField(max_length=255, blank=True, null=True) platform_code = models.CharField(max_length=255, blank=True, null=True) class Route(models.Model): route_id = models.CharField(max_length=255, primary_key=True) agency = models.ForeignKey(Agency, on_delete=models.CASCADE) route_short_name = models.CharField(max_length=255) route_long_name = models.CharField(max_length=255) route_desc = models.TextField(blank=True, null=True) route_type = models.IntegerField() route_url = models.URLField(blank=True, null=True) route_color = models.CharField(max_length=6, blank=True, null=True) route_text_color = models.CharField(max_length=6, blank=True, null=True) class Trip(models.Model): trip_id = models.CharField(max_length=255, primary_key=True) route = models.ForeignKey(Route, on_delete=models.CASCADE) service_id = models.CharField(max_length=255) trip_headsign = models.CharField(max_length=255, blank=True, null=True) trip_short_name = models.CharField(max_length=255, blank=True, null=True) direction_id = models.IntegerField(blank=True, null=True) block_id = models.CharField(max_length=255, blank=True, null=True) shape_id = models.CharField(max_length=255, blank=True, null=True) wheelchair_accessible = models.IntegerField(blank=True, null=True) bikes_allowed = models.IntegerField(blank=True, null=True) class StopTime(models.Model): trip = models.ForeignKey(Trip, on_delete=models.CASCADE) arrival_time = models.TimeField() departure_time = models.TimeField() stop = models.ForeignKey(Stop, on_delete=models.CASCADE) stop_sequence = models.IntegerField() stop_headsign = models.CharField(max_length=255, blank=True, null=True) pickup_type = models.IntegerField(blank=True, null=True) drop_off_type = models.IntegerField(blank=True, null=True) shape_dist_traveled = models.FloatField(blank=True, null=True) timepoint = models.IntegerField(blank=True, null=True) class Meta: unique_together = (('trip', 'stop_sequence'),) class Calendar(models.Model): service_id = models.CharField(max_length=255, primary_key=True) monday = models.BooleanField() tuesday = models.BooleanField() wednesday = models.BooleanField() thursday = models.BooleanField() friday = models.BooleanField() saturday = models.BooleanField() sunday = models.BooleanField() start_date = models.DateField() end_date = models.DateField() class CalendarDate(models.Model): service_id = models.ForeignKey(Calendar, on_delete=models.CASCADE) date = models.DateField() exception_type = models.IntegerField() class Meta: unique_together = (('service_id', 'date'),) class FareAttribute(models.Model): fare_id = models.CharField(max_length=255, primary_key=True) price = models.FloatField() currency_type = models.CharField(max_length=255) payment_method = models.IntegerField() transfers = models.IntegerField() agency = models.ForeignKey(Agency, on_delete=models.CASCADE, blank=True, null=True) transfer_duration = models.IntegerField(blank=True, null=True) class FareRule(models.Model): fare = models.ForeignKey(FareAttribute, on_delete=models.CASCADE) route = models.ForeignKey(Route, on_delete=models.CASCADE, blank=True, null=True) origin_id = models.CharField(max_length=255, blank=True, null=True) destination_id = models.CharField(max_length=255, blank=True, null=True) contains_id = models.CharField(max_length=255, blank=True, null=True) class Shape(models.Model): shape_id = models.CharField(max_length=255) shape_pt_lat = models.FloatField() shape_pt_lon = models.FloatField() shape_pt_sequence = models.IntegerField() shape_dist_traveled = models.FloatField(blank=True, null=True) class Meta: unique_together = (('shape_id', 'shape_pt_sequence'),) class Frequency(models.Model): trip = models.ForeignKey(Trip, on_delete=models.CASCADE) start_time = models.TimeField() end_time = models.TimeField() headway_secs = models.IntegerField() exact_times = models.IntegerField(blank=True, null=True) class Transfer(models.Model): from_stop = models.ForeignKey(Stop, on_delete=models.CASCADE, related_name='transfers_from') to_stop = models.ForeignKey(Stop, on_delete=models.CASCADE, related_name='transfers_to') transfer_type = models.IntegerField() min_transfer_time = models.IntegerField(blank=True, null=True) class Meta: unique_together = (('from_stop', 'to_stop'),) class FeedInfo(models.Model): feed_publisher_name = models.CharField(max_length=255) feed_publisher_url = models.URLField() feed_lang = models.CharField(max_length=255) feed_start_date = models.DateField(blank=True, null=True) feed_end_date = models.DateField(blank=True, null=True) feed_version = models.CharField(max_length=255, blank=True, null=True) feed_id = models.CharField(max_length=255, primary_key=True)