Added actual foreign key support and made primary keys (kind of) unique
This commit is contained in:
parent
ac279b35d4
commit
4028f63624
|
|
@ -35,13 +35,16 @@ db_to_gtfs(q, folder_path):
|
||||||
import pt_map.gtfs
|
import pt_map.gtfs
|
||||||
import pt_map.models
|
import pt_map.models
|
||||||
import pandas as pd
|
import pandas as pd
|
||||||
from pattern.text.en import singularize
|
from pattern.text.en import singularize, pluralize
|
||||||
import math
|
import math
|
||||||
import numbers
|
import numbers
|
||||||
import email.utils
|
import email.utils
|
||||||
import time
|
import time
|
||||||
import datetime
|
import datetime
|
||||||
import django.db.models
|
import django.db.models
|
||||||
|
import time
|
||||||
|
|
||||||
|
time_delta = int(datetime.datetime(2024,1,1).timestamp())
|
||||||
|
|
||||||
gtfs_schema = {
|
gtfs_schema = {
|
||||||
"agency": [
|
"agency": [
|
||||||
|
|
@ -216,7 +219,7 @@ gtfs_schema = {
|
||||||
],
|
],
|
||||||
"transfers": [
|
"transfers": [
|
||||||
"from_stop_id",
|
"from_stop_id",
|
||||||
"to_stop_id",
|
"to_stop_id",
|
||||||
"transfer_type",
|
"transfer_type",
|
||||||
"min_transfer_time"
|
"min_transfer_time"
|
||||||
],
|
],
|
||||||
|
|
@ -283,7 +286,76 @@ gtfs_schema = {
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
def to_camel_case(s: str):
|
|
||||||
|
primary_keys = { pt_map.models.Agency: "agency_id",
|
||||||
|
pt_map.models.Level: "level_id",
|
||||||
|
pt_map.models.Stop: "stop_id",
|
||||||
|
pt_map.models.Route: "route_id",
|
||||||
|
pt_map.models.Shape: "shape_id",
|
||||||
|
pt_map.models.Calendar: "service_id",
|
||||||
|
pt_map.models.CalendarDate: None,
|
||||||
|
pt_map.models.Trip: "trip_id",
|
||||||
|
pt_map.models.LocationGroup: "location_group_id",
|
||||||
|
pt_map.models.LocationsGeojson: None,
|
||||||
|
pt_map.models.StopTime: None,
|
||||||
|
pt_map.models.FareAttribute: "fare_id",
|
||||||
|
pt_map.models.FareRule: None,
|
||||||
|
pt_map.models.Frequency: None,
|
||||||
|
pt_map.models.Transfer: None,
|
||||||
|
pt_map.models.Pathway: "pathway_id",
|
||||||
|
pt_map.models.FeedInfo: None,
|
||||||
|
pt_map.models.BookingRule: "booking_rule_id",
|
||||||
|
pt_map.models.Translation: None,
|
||||||
|
pt_map.models.Attribution: "attribution_id",
|
||||||
|
pt_map.models.LocationGroupStop: None,
|
||||||
|
pt_map.models.Network: "network_id",
|
||||||
|
pt_map.models.RouteNetwork: None,
|
||||||
|
pt_map.models.Area: None,
|
||||||
|
pt_map.models.StopArea: None,
|
||||||
|
pt_map.models.FareMedium: "fare_media_id",
|
||||||
|
pt_map.models.FareProduct: None,
|
||||||
|
pt_map.models.Timeframe: None,
|
||||||
|
pt_map.models.FareLegRule: None,
|
||||||
|
pt_map.models.FareTransferRule: None,
|
||||||
|
}
|
||||||
|
|
||||||
|
foreign_keys = [
|
||||||
|
(pt_map.models.Agency, []),
|
||||||
|
(pt_map.models.Level, []),
|
||||||
|
(pt_map.models.Stop, [(pt_map.models.Stop, 'parent_station'), (pt_map.models.Level, 'level_id'), ]),
|
||||||
|
(pt_map.models.Route, [(pt_map.models.Agency, 'agency_id'), ]),
|
||||||
|
(pt_map.models.Shape, []),
|
||||||
|
(pt_map.models.Calendar, []),
|
||||||
|
(pt_map.models.CalendarDate, []),
|
||||||
|
(pt_map.models.Trip, [(pt_map.models.Route, 'route_id'), (pt_map.models.Shape, 'shape_id'), ]),
|
||||||
|
(pt_map.models.LocationGroup, []),
|
||||||
|
(pt_map.models.LocationsGeojson, []),
|
||||||
|
(pt_map.models.StopTime, [(pt_map.models.Trip, 'trip_id'), (pt_map.models.Stop, 'stop_id'), (pt_map.models.LocationGroup, 'location_group_id'), (pt_map.models.LocationsGeojson, 'location_id'), ]),
|
||||||
|
(pt_map.models.FareAttribute, [(pt_map.models.Agency, 'agency_id'), ]),
|
||||||
|
(pt_map.models.FareRule, [(pt_map.models.FareAttribute, 'fare_id'), (pt_map.models.Route, 'route_id'), ]),
|
||||||
|
(pt_map.models.Frequency, [(pt_map.models.Trip, 'trip_id'), ]),
|
||||||
|
(pt_map.models.Transfer, [(pt_map.models.Stop, 'from_stop_id'), (pt_map.models.Stop, 'to_stop_id'), (pt_map.models.Route, 'from_route_id'), (pt_map.models.Route, 'to_route_id'), (pt_map.models.Trip, 'from_trip_id'), (pt_map.models.Trip, 'to_trip_id'), ]),
|
||||||
|
(pt_map.models.Pathway, [(pt_map.models.Stop, 'from_stop_id'), (pt_map.models.Stop, 'to_stop_id'), ]),
|
||||||
|
(pt_map.models.FeedInfo, []),
|
||||||
|
(pt_map.models.BookingRule, [(pt_map.models.Trip, 'trip_id'), ]),
|
||||||
|
(pt_map.models.Translation, []),
|
||||||
|
(pt_map.models.Attribution, [(pt_map.models.Agency, 'agency_id'), (pt_map.models.Route, 'route_id'), (pt_map.models.Trip, 'trip_id'), ]),
|
||||||
|
(pt_map.models.LocationGroupStop, [(pt_map.models.LocationGroup, 'location_group_id'), (pt_map.models.Stop, 'stop_id'), ]),
|
||||||
|
(pt_map.models.Network, []),
|
||||||
|
(pt_map.models.RouteNetwork, [(pt_map.models.Network, 'network_id'), (pt_map.models.Route, 'route_id'), ]),
|
||||||
|
(pt_map.models.Area, []),
|
||||||
|
(pt_map.models.StopArea, [(pt_map.models.Area, 'area_id'), (pt_map.models.Stop, 'stop_id'), ]),
|
||||||
|
(pt_map.models.FareMedium, []),
|
||||||
|
(pt_map.models.FareProduct, []),
|
||||||
|
(pt_map.models.Timeframe, []),
|
||||||
|
(pt_map.models.FareLegRule, [(pt_map.models.Network, 'network_id'), (pt_map.models.Area, 'from_area_id'), (pt_map.models.Area, 'to_area_id'), (pt_map.models.Timeframe, 'from_timeframe_group_id'), (pt_map.models.Timeframe, 'to_timeframe_group_id'), (pt_map.models.FareProduct, 'fare_product_id'), ]),
|
||||||
|
(pt_map.models.FareTransferRule, [(pt_map.models.FareProduct, 'fare_product_id'), ]),
|
||||||
|
]
|
||||||
|
|
||||||
|
class_names = {'Agency': 'agency', 'Stop': 'stops', 'Route': 'routes', 'Trip': 'trips', 'StopTime': 'stop_times', 'Calendar': 'calendar', 'CalendarDate': 'calendar_dates', 'FareAttribute': 'fare_attributes', 'FareRule': 'fare_rules', 'Timeframe': 'timeframes', 'FareMedium': 'fare_media', 'FareProduct': 'fare_products', 'FareLegRule': 'fare_leg_rules', 'FareTransferRule': 'fare_transfer_rules', 'Area': 'areas', 'StopArea': 'stop_areas', 'Network': 'networks', 'RouteNetwork': 'route_networks', 'Shape': 'shapes', 'Frequency': 'frequencies', 'Transfer': 'transfers', 'Pathway': 'pathways', 'Level': 'levels', 'LocationGroup': 'location_groups', 'LocationGroupStop': 'location_group_stops', 'LocationsGeojson': 'locations_geojson', 'BookingRule': 'booking_rules', 'Translation': 'translations', 'FeedInfo': 'feed_info', 'Attribution': 'attributions'}
|
||||||
|
|
||||||
|
|
||||||
|
def toCamelCase(s: str):
|
||||||
"""
|
"""
|
||||||
Convert '_'-separated str to CamelCase with the first letter capitalized.
|
Convert '_'-separated str to CamelCase with the first letter capitalized.
|
||||||
|
|
||||||
|
|
@ -332,7 +404,8 @@ def is_NaN(v):
|
||||||
|
|
||||||
def stdz(v, m: django.db.models.Model, f: str):
|
def stdz(v, m: django.db.models.Model, f: str):
|
||||||
"""
|
"""
|
||||||
Convert Time and Date str to a format our db can easily work with.
|
If f is a time or date field, convert to a format our db can easily work with.
|
||||||
|
If f is a foreign key
|
||||||
|
|
||||||
Parameters
|
Parameters
|
||||||
----------
|
----------
|
||||||
|
|
@ -354,8 +427,24 @@ def stdz(v, m: django.db.models.Model, f: str):
|
||||||
return str(v)
|
return str(v)
|
||||||
if m._meta.get_field(f).get_internal_type() == 'TimeField':
|
if m._meta.get_field(f).get_internal_type() == 'TimeField':
|
||||||
return standardize_time(v)
|
return standardize_time(v)
|
||||||
|
if m._meta.get_field(f).get_internal_type() == 'ForeignKey':
|
||||||
|
pass
|
||||||
return v
|
return v
|
||||||
|
|
||||||
|
def to_snake_case(name):
|
||||||
|
name = name[0].lower() + name[1:]
|
||||||
|
for c in name[1:]:
|
||||||
|
if c.isupper():
|
||||||
|
name.insert(i,'_')
|
||||||
|
else:
|
||||||
|
c.lower()
|
||||||
|
return name
|
||||||
|
|
||||||
|
def unqfk(ts, fk):
|
||||||
|
if not isinstance(fk, str):
|
||||||
|
fk = str(int(fk))
|
||||||
|
print(f"fk: {fk}")
|
||||||
|
return f"{ts}{fk}".strip()
|
||||||
|
|
||||||
def gtfs_to_db(g: pt_map.gtfs.GTFS):
|
def gtfs_to_db(g: pt_map.gtfs.GTFS):
|
||||||
"""
|
"""
|
||||||
|
|
@ -366,18 +455,34 @@ def gtfs_to_db(g: pt_map.gtfs.GTFS):
|
||||||
g : gtfs.GTFS
|
g : gtfs.GTFS
|
||||||
GTFS object to be saved to db
|
GTFS object to be saved to db
|
||||||
"""
|
"""
|
||||||
for k,v in gtfs_schema.items():
|
ts = str(int(time.time())-time_delta)
|
||||||
name = to_camel_case(singularize(k))
|
for model in foreign_keys:
|
||||||
m = getattr(pt_map.models, name)
|
if model[0] in [pt_map.models.Calendar, pt_map.models.CalendarDate, ]:
|
||||||
df = getattr(g, k).data
|
continue
|
||||||
|
m = model[0]
|
||||||
|
df = getattr(g, class_names[m.__name__]).data
|
||||||
if not df.empty:
|
if not df.empty:
|
||||||
|
v = gtfs_schema[class_names[m.__name__]]
|
||||||
for _, row in df.iterrows():
|
for _, row in df.iterrows():
|
||||||
|
for fk in model[1]:
|
||||||
|
if row.get(fk[1]):
|
||||||
|
row[fk[1]] = fk[0].objects.get(**{primary_keys[fk[0]]: unqfk(ts, row[fk[1]])})
|
||||||
defaults = {field: stdz(row.get(field), m, field) for field in v if row.get(field) and not is_NaN(row[field])}
|
defaults = {field: stdz(row.get(field), m, field) for field in v if row.get(field) and not is_NaN(row[field])}
|
||||||
kw_args = {v[0]: row[v[0]]}
|
if primary_keys[m]:
|
||||||
m.objects.update_or_create(
|
row[primary_keys[m]] = unqfk(ts, row[primary_keys[m]])
|
||||||
defaults = defaults,
|
defaults[primary_keys[m]] = row[primary_keys[m]]
|
||||||
**kw_args,
|
try:
|
||||||
)
|
m.objects.get(**{primary_keys[m]: row[primary_keys[m]]})
|
||||||
|
except m.DoesNotExist:
|
||||||
|
|
||||||
|
m.objects.update_or_create(
|
||||||
|
defaults = defaults,
|
||||||
|
#**kw_args,
|
||||||
|
**{primary_keys[m]: row[primary_keys[m]]}
|
||||||
|
)
|
||||||
|
else:
|
||||||
|
m.objects.update_or_create(defaults=defaults)
|
||||||
|
|
||||||
|
|
||||||
reversed_file_mapping = {
|
reversed_file_mapping = {
|
||||||
"Agency": "agency",
|
"Agency": "agency",
|
||||||
|
|
|
||||||
138
transport_accessibility/pt_map/class_names.py
Normal file
138
transport_accessibility/pt_map/class_names.py
Normal file
|
|
@ -0,0 +1,138 @@
|
||||||
|
"""
|
||||||
|
Constant defining different variation of the file names in GTFS / our model names, mapped to corresponding models.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import pt_map.models
|
||||||
|
|
||||||
|
class_names = [
|
||||||
|
{
|
||||||
|
"Agency": pt_map.models.Agency,
|
||||||
|
"Stop": pt_map.models.Stop,
|
||||||
|
"Route": pt_map.models.Route,
|
||||||
|
"Trip": pt_map.models.Trip,
|
||||||
|
"StopTime": pt_map.models.StopTime,
|
||||||
|
"Calendar": pt_map.models.Calendar,
|
||||||
|
"CalendarDate": pt_map.models.CalendarDate,
|
||||||
|
"FareAttribute": pt_map.models.FareAttribute,
|
||||||
|
"FareRule": pt_map.models.FareRule,
|
||||||
|
"Timeframe": pt_map.models.Timeframe,
|
||||||
|
"FareMedium": pt_map.models.FareMedium,
|
||||||
|
"FareProduct": pt_map.models.FareProduct,
|
||||||
|
"FareLegRule": pt_map.models.FareLegRule,
|
||||||
|
"FareTransferRule": pt_map.models.FareTransferRule,
|
||||||
|
"Area": pt_map.models.Area,
|
||||||
|
"StopArea": pt_map.models.StopArea,
|
||||||
|
"Network": pt_map.models.Network,
|
||||||
|
"RouteNetwork": pt_map.models.RouteNetwork,
|
||||||
|
"Shape": pt_map.models.Shape,
|
||||||
|
"Frequency": pt_map.models.Frequency,
|
||||||
|
"Transfer": pt_map.models.Transfer,
|
||||||
|
"Pathway": pt_map.models.Pathway,
|
||||||
|
"Level": pt_map.models.Level,
|
||||||
|
"LocationGroup": pt_map.models.LocationGroup,
|
||||||
|
"LocationGroupStop": pt_map.models.LocationGroupStop,
|
||||||
|
"LocationsGeojson": pt_map.models.LocationsGeojson,
|
||||||
|
"BookingRule": pt_map.models.BookingRule,
|
||||||
|
"Translation": pt_map.models.Translation,
|
||||||
|
"FeedInfo": pt_map.models.FeedInfo,
|
||||||
|
"Attribution": pt_map.models.Attribution,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"agencies": pt_map.models.Agency,
|
||||||
|
"stops": pt_map.models.Stop,
|
||||||
|
"routes": pt_map.models.Route,
|
||||||
|
"trips": pt_map.models.Trip,
|
||||||
|
"stop_times": pt_map.models.StopTime,
|
||||||
|
"calendars": pt_map.models.Calendar,
|
||||||
|
"calendar_dates": pt_map.models.CalendarDate,
|
||||||
|
"fare_attributes": pt_map.models.FareAttribute,
|
||||||
|
"fare_rules": pt_map.models.FareRule,
|
||||||
|
"timeframes": pt_map.models.Timeframe,
|
||||||
|
"fare_mediums": pt_map.models.FareMedium,
|
||||||
|
"fare_products": pt_map.models.FareProduct,
|
||||||
|
"fare_leg_rules": pt_map.models.FareLegRule,
|
||||||
|
"fare_transfer_rules": pt_map.models.FareTransferRule,
|
||||||
|
"areas": pt_map.models.Area,
|
||||||
|
"stop_areas": pt_map.models.StopArea,
|
||||||
|
"networks": pt_map.models.Network,
|
||||||
|
"route_networks": pt_map.models.RouteNetwork,
|
||||||
|
"shapes": pt_map.models.Shape,
|
||||||
|
"frequencies": pt_map.models.Frequency,
|
||||||
|
"transfers": pt_map.models.Transfer,
|
||||||
|
"pathways": pt_map.models.Pathway,
|
||||||
|
"levels": pt_map.models.Level,
|
||||||
|
"location_groups": pt_map.models.LocationGroup,
|
||||||
|
"location_group_stops": pt_map.models.LocationGroupStop,
|
||||||
|
"locations": pt_map.models.LocationsGeojson,
|
||||||
|
"booking_rules": pt_map.models.BookingRule,
|
||||||
|
"translations": pt_map.models.Translation,
|
||||||
|
"feed_info": pt_map.models.FeedInfo,
|
||||||
|
"attributions": pt_map.models.Attribution,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pt_map.models.Agency: "Agency",
|
||||||
|
pt_map.models.Stop: "Stop",
|
||||||
|
pt_map.models.Route: "Route",
|
||||||
|
pt_map.models.Trip: "Trip",
|
||||||
|
pt_map.models.StopTime: "StopTime",
|
||||||
|
pt_map.models.Calendar: "Calendar",
|
||||||
|
pt_map.models.CalendarDate: "CalendarDate",
|
||||||
|
pt_map.models.FareAttribute: "FareAttribute",
|
||||||
|
pt_map.models.FareRule: "FareRule",
|
||||||
|
pt_map.models.Timeframe: "Timeframe",
|
||||||
|
pt_map.models.FareMedium: "FareMedium",
|
||||||
|
pt_map.models.FareProduct: "FareProduct",
|
||||||
|
pt_map.models.FareLegRule: "FareLegRule",
|
||||||
|
pt_map.models.FareTransferRule: "FareTransferRule",
|
||||||
|
pt_map.models.Area: "Area",
|
||||||
|
pt_map.models.StopArea: "StopArea",
|
||||||
|
pt_map.models.Network: "Network",
|
||||||
|
pt_map.models.RouteNetwork: "RouteNetwork",
|
||||||
|
pt_map.models.Shape: "Shape",
|
||||||
|
pt_map.models.Frequency: "Frequency",
|
||||||
|
pt_map.models.Transfer: "Transfer",
|
||||||
|
pt_map.models.Pathway: "Pathway",
|
||||||
|
pt_map.models.Level: "Level",
|
||||||
|
pt_map.models.LocationGroup: "LocationGroup",
|
||||||
|
pt_map.models.LocationGroupStop: "LocationGroupStop",
|
||||||
|
pt_map.models.LocationsGeojson: "LocationsGeojson",
|
||||||
|
pt_map.models.BookingRule: "BookingRule",
|
||||||
|
pt_map.models.Translation: "Translation",
|
||||||
|
pt_map.models.FeedInfo: "FeedInfo",
|
||||||
|
pt_map.models.Attribution: "Attribution",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
pt_map.models.Agency: "agencies",
|
||||||
|
pt_map.models.Stop: "stops",
|
||||||
|
pt_map.models.Route: "routes",
|
||||||
|
pt_map.models.Trip: "trips",
|
||||||
|
pt_map.models.StopTime: "stop_times",
|
||||||
|
pt_map.models.Calendar: "calendars",
|
||||||
|
pt_map.models.CalendarDate: "calendar_dates",
|
||||||
|
pt_map.models.FareAttribute: "fare_attributes",
|
||||||
|
pt_map.models.FareRule: "fare_rules",
|
||||||
|
pt_map.models.Timeframe: "timeframes",
|
||||||
|
pt_map.models.FareMedium: "fare_mediums",
|
||||||
|
pt_map.models.FareProduct: "fare_products",
|
||||||
|
pt_map.models.FareLegRule: "fare_leg_rules",
|
||||||
|
pt_map.models.FareTransferRule: "fare_transfer_rules",
|
||||||
|
pt_map.models.Area: "areas",
|
||||||
|
pt_map.models.StopArea: "stop_areas",
|
||||||
|
pt_map.models.Network: "networks",
|
||||||
|
pt_map.models.RouteNetwork: "route_networks",
|
||||||
|
pt_map.models.Shape: "shapes",
|
||||||
|
pt_map.models.Frequency: "frequencies",
|
||||||
|
pt_map.models.Transfer: "transfers",
|
||||||
|
pt_map.models.Pathway: "pathways",
|
||||||
|
pt_map.models.Level: "levels",
|
||||||
|
pt_map.models.LocationGroup: "location_groups",
|
||||||
|
pt_map.models.LocationGroupStop: "location_group_stops",
|
||||||
|
pt_map.models.LocationsGeojson: "locations",
|
||||||
|
pt_map.models.BookingRule: "booking_rules",
|
||||||
|
pt_map.models.Translation: "translations",
|
||||||
|
pt_map.models.FeedInfo: "feed_info",
|
||||||
|
pt_map.models.Attribution: "attributions",
|
||||||
|
},
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
# Generated by Django 5.0.6 on 2024-05-31 22:07
|
# Generated by Django 5.0.6 on 2024-06-05 22:43
|
||||||
|
|
||||||
import django.db.models.deletion
|
import django.db.models.deletion
|
||||||
from django.db import migrations, models
|
from django.db import migrations, models
|
||||||
|
|
@ -15,18 +15,29 @@ class Migration(migrations.Migration):
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='Agency',
|
name='Agency',
|
||||||
fields=[
|
fields=[
|
||||||
('agency_id', models.IntegerField(primary_key=True, serialize=False)),
|
('agency_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
('agency_name', models.CharField(max_length=250)),
|
('agency_name', models.CharField(max_length=255)),
|
||||||
('agency_url', models.URLField()),
|
('agency_url', models.URLField()),
|
||||||
('agency_phone', models.CharField(max_length=15)),
|
('agency_timezone', models.CharField(max_length=255)),
|
||||||
('agency_email', models.EmailField(max_length=254)),
|
('agency_lang', models.CharField(blank=True, max_length=2, null=True)),
|
||||||
('agency_fare_url', models.URLField()),
|
('agency_phone', models.CharField(blank=True, max_length=50, null=True)),
|
||||||
|
('agency_fare_url', models.URLField(blank=True, null=True)),
|
||||||
|
('agency_email', models.EmailField(blank=True, max_length=254, null=True)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Area',
|
||||||
|
fields=[
|
||||||
|
('area_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
|
('area_name', models.CharField(max_length=255)),
|
||||||
|
('area_description', models.TextField(blank=True, null=True)),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='Calendar',
|
name='Calendar',
|
||||||
fields=[
|
fields=[
|
||||||
('service_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('service_id', models.IntegerField()),
|
||||||
('monday', models.BooleanField()),
|
('monday', models.BooleanField()),
|
||||||
('tuesday', models.BooleanField()),
|
('tuesday', models.BooleanField()),
|
||||||
('wednesday', models.BooleanField()),
|
('wednesday', models.BooleanField()),
|
||||||
|
|
@ -38,16 +49,165 @@ class Migration(migrations.Migration):
|
||||||
('end_date', models.DateField()),
|
('end_date', models.DateField()),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='FareMedium',
|
||||||
|
fields=[
|
||||||
|
('fare_media_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
|
('fare_media_name', models.CharField(max_length=255)),
|
||||||
|
('fare_media_description', models.TextField(blank=True, null=True)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='FareProduct',
|
||||||
|
fields=[
|
||||||
|
('fare_product_id', models.BigAutoField(primary_key=True, serialize=False)),
|
||||||
|
('fare_product_name', models.CharField(max_length=255)),
|
||||||
|
('fare_product_description', models.TextField(blank=True, null=True)),
|
||||||
|
('amount', models.FloatField()),
|
||||||
|
('curreny', models.CharField(max_length=64)),
|
||||||
|
],
|
||||||
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='FeedInfo',
|
name='FeedInfo',
|
||||||
fields=[
|
fields=[
|
||||||
('feed_publisher_name', models.CharField(max_length=255)),
|
('feed_publisher_name', models.CharField(max_length=255)),
|
||||||
('feed_publisher_url', models.URLField()),
|
('feed_publisher_url', models.URLField()),
|
||||||
('feed_lang', models.CharField(max_length=255)),
|
('feed_lang', models.CharField(max_length=255)),
|
||||||
|
('default_lang', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
('feed_start_date', models.DateField(blank=True, null=True)),
|
('feed_start_date', models.DateField(blank=True, null=True)),
|
||||||
('feed_end_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_version', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
('feed_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
('feed_contact_email', models.EmailField(blank=True, max_length=254, null=True)),
|
||||||
|
('feed_contact_url', models.URLField(blank=True, null=True)),
|
||||||
|
('feed_id', models.BigAutoField(primary_key=True, serialize=False)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Level',
|
||||||
|
fields=[
|
||||||
|
('level_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
|
('level_index', models.FloatField()),
|
||||||
|
('level_name', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='LocationGroup',
|
||||||
|
fields=[
|
||||||
|
('location_group_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
|
('location_group_name', models.CharField(max_length=255)),
|
||||||
|
('location_group_type', models.CharField(max_length=255)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='LocationsGeojson',
|
||||||
|
fields=[
|
||||||
|
('location_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
|
('location_name', models.CharField(max_length=255)),
|
||||||
|
('location_lat', models.FloatField()),
|
||||||
|
('location_lon', models.FloatField()),
|
||||||
|
('location_type', models.CharField(max_length=255)),
|
||||||
|
('parent_location_id', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
|
('wheelchair_boarding', models.BooleanField(blank=True, null=True)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Network',
|
||||||
|
fields=[
|
||||||
|
('network_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
|
('network_name', models.CharField(max_length=255)),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Timeframe',
|
||||||
|
fields=[
|
||||||
|
('timeframe_group_id', models.IntegerField(primary_key=True, serialize=False)),
|
||||||
|
('service_id', models.IntegerField()),
|
||||||
|
('start_date', models.DateField()),
|
||||||
|
('end_date', models.DateField()),
|
||||||
|
('start_time', models.TimeField()),
|
||||||
|
('end_time', models.TimeField()),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Translation',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('table_name', models.CharField(max_length=255)),
|
||||||
|
('field_name', models.CharField(max_length=255)),
|
||||||
|
('language', models.CharField(max_length=2)),
|
||||||
|
('translation', models.TextField()),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='CalendarDate',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('service_id', models.IntegerField()),
|
||||||
|
('date', models.DateField()),
|
||||||
|
('exception_type', models.IntegerField()),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'unique_together': {('service_id', 'date')},
|
||||||
|
},
|
||||||
|
),
|
||||||
|
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=3)),
|
||||||
|
('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='FareTransferRule',
|
||||||
|
fields=[
|
||||||
|
('fare_transfer_rule_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
|
('fare_transfer_rule_name', models.CharField(max_length=255)),
|
||||||
|
('fare_transfer_rule_description', models.TextField(blank=True, null=True)),
|
||||||
|
('from_leg_group_id', models.IntegerField(blank=True, null=True)),
|
||||||
|
('to_leg_group_id', models.IntegerField(blank=True, null=True)),
|
||||||
|
('fare_product_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='pt_map.fareproduct')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Route',
|
||||||
|
fields=[
|
||||||
|
('route_id', models.IntegerField(primary_key=True, serialize=False)),
|
||||||
|
('route_short_name', models.CharField(max_length=50)),
|
||||||
|
('route_long_name', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
|
('route_desc', models.TextField(blank=True, null=True)),
|
||||||
|
('route_type', models.IntegerField(default=0)),
|
||||||
|
('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)),
|
||||||
|
('route_sort_order', models.IntegerField(blank=True, null=True)),
|
||||||
|
('continuous_pickup', models.IntegerField(blank=True, null=True)),
|
||||||
|
('continuous_drop_off', models.IntegerField(blank=True, null=True)),
|
||||||
|
('agency_id', models.ForeignKey(blank=True, null=True, 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.IntegerField(blank=True, 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='RouteNetwork',
|
||||||
|
fields=[
|
||||||
|
('route_network_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
|
('route_network_name', models.CharField(max_length=255)),
|
||||||
|
('network_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.network')),
|
||||||
|
('route_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.route')),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
|
|
@ -60,112 +220,91 @@ class Migration(migrations.Migration):
|
||||||
('shape_pt_sequence', models.IntegerField()),
|
('shape_pt_sequence', models.IntegerField()),
|
||||||
('shape_dist_traveled', models.FloatField(blank=True, null=True)),
|
('shape_dist_traveled', models.FloatField(blank=True, null=True)),
|
||||||
],
|
],
|
||||||
),
|
options={
|
||||||
migrations.CreateModel(
|
'unique_together': {('shape_id', 'shape_pt_sequence')},
|
||||||
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(
|
migrations.CreateModel(
|
||||||
name='Stop',
|
name='Stop',
|
||||||
fields=[
|
fields=[
|
||||||
('stop_id', models.IntegerField(primary_key=True, serialize=False)),
|
('stop_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
('stop_code', models.CharField(max_length=50)),
|
('stop_code', models.CharField(blank=True, max_length=50, null=True)),
|
||||||
('stop_name', models.CharField(max_length=250)),
|
('stop_name', models.CharField(max_length=255)),
|
||||||
('tts_stop_name', models.CharField(max_length=250)),
|
('stop_desc', models.TextField(blank=True, null=True)),
|
||||||
('stop_desc', models.CharField(max_length=500)),
|
('stop_lat', models.FloatField()),
|
||||||
('stop_lat', models.IntegerField()),
|
('stop_lon', models.FloatField()),
|
||||||
('stop_lon', models.IntegerField()),
|
('zone_id', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
('zone_id', models.IntegerField(unique=True)),
|
|
||||||
('stop_url', models.URLField(blank=True, null=True)),
|
('stop_url', models.URLField(blank=True, null=True)),
|
||||||
('location_type', models.IntegerField(blank=True, null=True)),
|
('location_type', models.IntegerField(blank=True, null=True)),
|
||||||
('stop_timezone', models.CharField(blank=True, max_length=255, null=True)),
|
('stop_timezone', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
('wheelchair_boarding', models.IntegerField(blank=True, 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=50, null=True)),
|
||||||
('platform_code', models.CharField(blank=True, max_length=255, null=True)),
|
('level_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='pt_map.level')),
|
||||||
('parent_station', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='pt_map.stop')),
|
('parent_station', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='pt_map.stop')),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='Transfer',
|
name='Pathway',
|
||||||
|
fields=[
|
||||||
|
('pathway_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
|
('pathway_mode', models.IntegerField()),
|
||||||
|
('is_bidirectional', models.IntegerField()),
|
||||||
|
('length', models.FloatField(blank=True, null=True)),
|
||||||
|
('traversal_time', models.IntegerField(blank=True, null=True)),
|
||||||
|
('stair_count', models.IntegerField(blank=True, null=True)),
|
||||||
|
('max_slope', models.FloatField(blank=True, null=True)),
|
||||||
|
('min_width', models.FloatField(blank=True, null=True)),
|
||||||
|
('signposted_as', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
|
('reversed_signposted_as', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
|
('from_stop_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='pathways_from', to='pt_map.stop')),
|
||||||
|
('to_stop_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='pathways_to', to='pt_map.stop')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='LocationGroupStop',
|
||||||
fields=[
|
fields=[
|
||||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
('transfer_type', models.IntegerField()),
|
('location_group_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.locationgroup')),
|
||||||
('min_transfer_time', models.IntegerField(blank=True, null=True)),
|
('stop_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.stop')),
|
||||||
('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='StopArea',
|
||||||
|
fields=[
|
||||||
|
('stop_area_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
|
('stop_area_name', models.CharField(max_length=255)),
|
||||||
|
('stop_area_description', models.TextField(blank=True, null=True)),
|
||||||
|
('area_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.area')),
|
||||||
|
('stop_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.stop')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='FareLegRule',
|
||||||
|
fields=[
|
||||||
|
('fare_leg_rule_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
|
('fare_leg_rule_name', models.CharField(max_length=255)),
|
||||||
|
('fare_leg_rule_description', models.TextField(blank=True, null=True)),
|
||||||
|
('from_area_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='farelegrule_from_area', to='pt_map.area')),
|
||||||
|
('to_area_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='farelegrule_to_area', to='pt_map.area')),
|
||||||
|
('fare_product_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.fareproduct')),
|
||||||
|
('network_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='pt_map.network')),
|
||||||
|
('from_timeframe_group_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='farelegrule_from_timeframe', to='pt_map.timeframe')),
|
||||||
|
('to_timeframe_group_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='farelegrule_to_timeframe', to='pt_map.timeframe')),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
migrations.CreateModel(
|
migrations.CreateModel(
|
||||||
name='Trip',
|
name='Trip',
|
||||||
fields=[
|
fields=[
|
||||||
('trip_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
('trip_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
('service_id', models.CharField(max_length=255)),
|
('service_id', models.IntegerField()),
|
||||||
('trip_headsign', models.CharField(blank=True, max_length=255, null=True)),
|
('trip_headsign', models.CharField(blank=True, max_length=255, null=True)),
|
||||||
('trip_short_name', 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)),
|
('direction_id', models.IntegerField(blank=True, null=True)),
|
||||||
('block_id', models.CharField(blank=True, max_length=255, 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)),
|
('wheelchair_accessible', models.IntegerField(blank=True, null=True)),
|
||||||
('bikes_allowed', 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')),
|
('route_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.route')),
|
||||||
],
|
('shape_id', models.ForeignKey(blank=True, on_delete=django.db.models.deletion.CASCADE, to='pt_map.shape')),
|
||||||
),
|
|
||||||
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(
|
migrations.CreateModel(
|
||||||
|
|
@ -176,7 +315,70 @@ class Migration(migrations.Migration):
|
||||||
('end_time', models.TimeField()),
|
('end_time', models.TimeField()),
|
||||||
('headway_secs', models.IntegerField()),
|
('headway_secs', models.IntegerField()),
|
||||||
('exact_times', models.IntegerField(blank=True, null=True)),
|
('exact_times', models.IntegerField(blank=True, null=True)),
|
||||||
|
('trip_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.trip')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='BookingRule',
|
||||||
|
fields=[
|
||||||
|
('booking_rule_id', models.CharField(max_length=255, primary_key=True, serialize=False)),
|
||||||
|
('start_time', models.TimeField(blank=True, null=True)),
|
||||||
|
('end_time', models.TimeField(blank=True, null=True)),
|
||||||
|
('booking_type', models.CharField(max_length=255)),
|
||||||
|
('rule_criteria', models.TextField(blank=True, null=True)),
|
||||||
|
('booking_rule_instructions', models.TextField(blank=True, null=True)),
|
||||||
('trip', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.trip')),
|
('trip', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.trip')),
|
||||||
],
|
],
|
||||||
),
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Attribution',
|
||||||
|
fields=[
|
||||||
|
('attribution_id', models.BigAutoField(primary_key=True, serialize=False)),
|
||||||
|
('attribution_name', models.CharField(max_length=255)),
|
||||||
|
('attribution_url', models.URLField()),
|
||||||
|
('attribution_email', models.EmailField(blank=True, max_length=254, null=True)),
|
||||||
|
('attribution_phone', models.CharField(blank=True, max_length=50, null=True)),
|
||||||
|
('agency_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='pt_map.agency')),
|
||||||
|
('route_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='pt_map.route')),
|
||||||
|
('trip_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='pt_map.trip')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
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_route_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='transfers_from_route', to='pt_map.route')),
|
||||||
|
('from_stop', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='transfers_from_stop', to='pt_map.stop')),
|
||||||
|
('to_route_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='transfers_to_route', to='pt_map.route')),
|
||||||
|
('to_stop', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='transfers_to_stop', to='pt_map.stop')),
|
||||||
|
('from_trip_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='transfers_from_trip', to='pt_map.trip')),
|
||||||
|
('to_trip_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='transfers_to_trip', to='pt_map.trip')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'unique_together': {('from_stop', 'to_stop')},
|
||||||
|
},
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='StopTime',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('arrival_time', models.TimeField(blank=True, null=True)),
|
||||||
|
('departure_time', models.TimeField(blank=True, null=True)),
|
||||||
|
('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)),
|
||||||
|
('location_group_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='pt_map.locationgroup')),
|
||||||
|
('location_id', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='pt_map.locationsgeojson')),
|
||||||
|
('stop_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.stop')),
|
||||||
|
('trip_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='pt_map.trip')),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'unique_together': {('trip_id', 'stop_sequence')},
|
||||||
|
},
|
||||||
|
),
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,47 @@
|
||||||
|
# Generated by Django 5.0.6 on 2024-06-06 17:55
|
||||||
|
|
||||||
|
from django.db import migrations
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('pt_map', '0001_initial'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='bookingrule',
|
||||||
|
old_name='trip',
|
||||||
|
new_name='trip_id',
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='fareattribute',
|
||||||
|
old_name='agency',
|
||||||
|
new_name='agency_id',
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='farerule',
|
||||||
|
old_name='fare',
|
||||||
|
new_name='fare_id',
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='farerule',
|
||||||
|
old_name='route',
|
||||||
|
new_name='route_id',
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='transfer',
|
||||||
|
old_name='from_stop',
|
||||||
|
new_name='from_stop_id',
|
||||||
|
),
|
||||||
|
migrations.RenameField(
|
||||||
|
model_name='transfer',
|
||||||
|
old_name='to_stop',
|
||||||
|
new_name='to_stop_id',
|
||||||
|
),
|
||||||
|
migrations.AlterUniqueTogether(
|
||||||
|
name='transfer',
|
||||||
|
unique_together={('from_stop_id', 'to_stop_id')},
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -0,0 +1,93 @@
|
||||||
|
# Generated by Django 5.0.6 on 2024-06-06 21:43
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('pt_map', '0002_rename_trip_bookingrule_trip_id_and_more'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='agency',
|
||||||
|
name='agency_id',
|
||||||
|
field=models.IntegerField(primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='area',
|
||||||
|
name='area_id',
|
||||||
|
field=models.IntegerField(primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='bookingrule',
|
||||||
|
name='booking_rule_id',
|
||||||
|
field=models.IntegerField(primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='fareattribute',
|
||||||
|
name='fare_id',
|
||||||
|
field=models.IntegerField(primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='farelegrule',
|
||||||
|
name='fare_leg_rule_id',
|
||||||
|
field=models.IntegerField(primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='faremedium',
|
||||||
|
name='fare_media_id',
|
||||||
|
field=models.IntegerField(primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='faretransferrule',
|
||||||
|
name='fare_transfer_rule_id',
|
||||||
|
field=models.IntegerField(primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='level',
|
||||||
|
name='level_id',
|
||||||
|
field=models.IntegerField(primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='locationgroup',
|
||||||
|
name='location_group_id',
|
||||||
|
field=models.IntegerField(primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='locationsgeojson',
|
||||||
|
name='location_id',
|
||||||
|
field=models.IntegerField(primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='network',
|
||||||
|
name='network_id',
|
||||||
|
field=models.IntegerField(primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='pathway',
|
||||||
|
name='pathway_id',
|
||||||
|
field=models.IntegerField(primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='routenetwork',
|
||||||
|
name='route_network_id',
|
||||||
|
field=models.IntegerField(primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='stop',
|
||||||
|
name='stop_id',
|
||||||
|
field=models.IntegerField(primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='stoparea',
|
||||||
|
name='stop_area_id',
|
||||||
|
field=models.IntegerField(primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='trip',
|
||||||
|
name='trip_id',
|
||||||
|
field=models.IntegerField(primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -0,0 +1,103 @@
|
||||||
|
# Generated by Django 5.0.6 on 2024-06-06 21:54
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('pt_map', '0003_alter_agency_agency_id_alter_area_area_id_and_more'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='agency',
|
||||||
|
name='agency_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='area',
|
||||||
|
name='area_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='bookingrule',
|
||||||
|
name='booking_rule_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='fareattribute',
|
||||||
|
name='fare_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='farelegrule',
|
||||||
|
name='fare_leg_rule_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='faremedium',
|
||||||
|
name='fare_media_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='faretransferrule',
|
||||||
|
name='fare_transfer_rule_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='level',
|
||||||
|
name='level_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='locationgroup',
|
||||||
|
name='location_group_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='locationsgeojson',
|
||||||
|
name='location_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='network',
|
||||||
|
name='network_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='pathway',
|
||||||
|
name='pathway_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='route',
|
||||||
|
name='route_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='routenetwork',
|
||||||
|
name='route_network_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='stop',
|
||||||
|
name='stop_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='stoparea',
|
||||||
|
name='stop_area_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='timeframe',
|
||||||
|
name='timeframe_group_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='trip',
|
||||||
|
name='trip_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
]
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
# Generated by Django 5.0.6 on 2024-06-09 20:17
|
||||||
|
|
||||||
|
from django.db import migrations, models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
('pt_map', '0004_alter_agency_agency_id_alter_area_area_id_and_more'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.RemoveField(
|
||||||
|
model_name='calendar',
|
||||||
|
name='id',
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='calendar',
|
||||||
|
name='service_id',
|
||||||
|
field=models.CharField(max_length=255, primary_key=True, serialize=False),
|
||||||
|
),
|
||||||
|
migrations.AlterField(
|
||||||
|
model_name='calendardate',
|
||||||
|
name='service_id',
|
||||||
|
field=models.CharField(max_length=255),
|
||||||
|
),
|
||||||
|
]
|
||||||
Loading…
Reference in New Issue
Block a user