Added models to represent GTFS
This commit is contained in:
parent
a61334bc59
commit
0a196d6b15
182
transport_accessibility/pt_map/migrations/0001_initial.py
Normal file
182
transport_accessibility/pt_map/migrations/0001_initial.py
Normal file
|
|
@ -0,0 +1,182 @@
|
||||||
|
# Generated by Django 5.0.6 on 2024-05-31 22:07
|
||||||
|
|
||||||
|
import django.db.models.deletion
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Agency',
|
||||||
|
fields=[
|
||||||
|
('agency_id', models.IntegerField(primary_key=True, serialize=False)),
|
||||||
|
('agency_name', models.CharField(max_length=250)),
|
||||||
|
('agency_url', models.URLField()),
|
||||||
|
('agency_phone', models.CharField(max_length=15)),
|
||||||
|
('agency_email', models.EmailField(max_length=254)),
|
||||||
|
('agency_fare_url', models.URLField()),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Calendar',
|
||||||
|
fields=[
|
||||||
|
('service_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
|
('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()),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='FeedInfo',
|
||||||
|
fields=[
|
||||||
|
('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(blank=True, max_length=255, null=True)),
|
||||||
|
('feed_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Shape',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('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)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='CalendarDate',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('date', models.DateField()),
|
||||||
|
('exception_type', models.IntegerField()),
|
||||||
|
('service_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.calendar')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='FareAttribute',
|
||||||
|
fields=[
|
||||||
|
('fare_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
|
('price', models.FloatField()),
|
||||||
|
('currency_type', models.CharField(max_length=255)),
|
||||||
|
('payment_method', models.IntegerField()),
|
||||||
|
('transfers', models.IntegerField()),
|
||||||
|
('transfer_duration', models.IntegerField(blank=True, null=True)),
|
||||||
|
('agency', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='pt_map.agency')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Route',
|
||||||
|
fields=[
|
||||||
|
('route_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
|
('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(blank=True, max_length=6, null=True)),
|
||||||
|
('route_text_color', models.CharField(blank=True, max_length=6, null=True)),
|
||||||
|
('agency', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.agency')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='FareRule',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('origin_id', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
|
('destination_id', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
|
('contains_id', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
|
('fare', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.fareattribute')),
|
||||||
|
('route', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='pt_map.route')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Stop',
|
||||||
|
fields=[
|
||||||
|
('stop_id', models.IntegerField(primary_key=True, serialize=False)),
|
||||||
|
('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)),
|
||||||
|
('stop_timezone', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
|
('wheelchair_boarding', models.IntegerField(blank=True, null=True)),
|
||||||
|
('level_id', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
|
('platform_code', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
|
('parent_station', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='pt_map.stop')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Transfer',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('transfer_type', models.IntegerField()),
|
||||||
|
('min_transfer_time', models.IntegerField(blank=True, null=True)),
|
||||||
|
('from_stop', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='transfers_from', to='pt_map.stop')),
|
||||||
|
('to_stop', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='transfers_to', to='pt_map.stop')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Trip',
|
||||||
|
fields=[
|
||||||
|
('trip_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
|
('service_id', models.CharField(max_length=255)),
|
||||||
|
('trip_headsign', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
|
('trip_short_name', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
|
('direction_id', models.IntegerField(blank=True, null=True)),
|
||||||
|
('block_id', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
|
('shape_id', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
|
('wheelchair_accessible', models.IntegerField(blank=True, null=True)),
|
||||||
|
('bikes_allowed', models.IntegerField(blank=True, null=True)),
|
||||||
|
('route', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.route')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='StopTime',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('arrival_time', models.TimeField()),
|
||||||
|
('departure_time', models.TimeField()),
|
||||||
|
('stop_sequence', models.IntegerField()),
|
||||||
|
('stop_headsign', models.CharField(blank=True, max_length=255, 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)),
|
||||||
|
('stop', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.stop')),
|
||||||
|
('trip', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.trip')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Frequency',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('start_time', models.TimeField()),
|
||||||
|
('end_time', models.TimeField()),
|
||||||
|
('headway_secs', models.IntegerField()),
|
||||||
|
('exact_times', models.IntegerField(blank=True, null=True)),
|
||||||
|
('trip', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.trip')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
# Generated by Django 5.0.6 on 2024-05-31 22:18
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('pt_map', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterUniqueTogether(
|
||||||
|
name='calendardate',
|
||||||
|
unique_together={('service_id', 'date')},
|
||||||
|
),
|
||||||
|
migrations.AlterUniqueTogether(
|
||||||
|
name='shape',
|
||||||
|
unique_together={('shape_id', 'shape_pt_sequence')},
|
||||||
|
),
|
||||||
|
migrations.AlterUniqueTogether(
|
||||||
|
name='stoptime',
|
||||||
|
unique_together={('trip', 'stop_sequence')},
|
||||||
|
),
|
||||||
|
migrations.AlterUniqueTogether(
|
||||||
|
name='transfer',
|
||||||
|
unique_together={('from_stop', 'to_stop')},
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -1,3 +1,137 @@
|
||||||
from django.db import models
|
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)
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ ALLOWED_HOSTS = []
|
||||||
# Application definition
|
# Application definition
|
||||||
|
|
||||||
INSTALLED_APPS = [
|
INSTALLED_APPS = [
|
||||||
|
'pt_map.apps.PtMapConfig',
|
||||||
'django.contrib.admin',
|
'django.contrib.admin',
|
||||||
'django.contrib.auth',
|
'django.contrib.auth',
|
||||||
'django.contrib.contenttypes',
|
'django.contrib.contenttypes',
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user