diff --git a/trainvel/gtfs/management/commands/update_trainvel_gtfs.py b/trainvel/gtfs/management/commands/update_trainvel_gtfs.py index ea550a0..f07873e 100644 --- a/trainvel/gtfs/management/commands/update_trainvel_gtfs.py +++ b/trainvel/gtfs/management/commands/update_trainvel_gtfs.py @@ -377,11 +377,30 @@ class Command(BaseCommand): to_stop_id = transfer_dict['to_stop_id'] from_stop_id = f"{gtfs_code}-{from_stop_id}" to_stop_id = f"{gtfs_code}-{to_stop_id}" + from_route_id = transfer_dict.get('from_route_id', None) + from_route_id = f"{gtfs_code}-{from_route_id}" if from_route_id else None + to_route_id = transfer_dict.get('to_route_id', None) + to_route_id = f"{gtfs_code}-{to_route_id}" if to_route_id else None + from_trip_id = transfer_dict.get('from_trip_id', None) + from_trip_id = f"{gtfs_code}-{from_trip_id}" if from_trip_id else None + to_trip_id = transfer_dict.get('to_trip_id', None) + to_trip_id = f"{gtfs_code}-{to_trip_id}" if to_trip_id else None + + transfer_id = f"{gtfs_code}-{transfer_dict['from_stop_id']}-{transfer_dict['to_stop_id']}" + if from_route_id and to_route_id: + transfer_id += f"-{from_route_id}-{to_route_id}" + if from_trip_id and to_trip_id: + transfer_id += f"-{from_trip_id}-{to_trip_id}" + transfer_id += f"-{transfer_dict['transfer_type']}" transfer = Transfer( - id=f"{gtfs_code}-{transfer_dict['from_stop_id']}-{transfer_dict['to_stop_id']}", + id=transfer_id, from_stop_id=from_stop_id, to_stop_id=to_stop_id, + from_route_id=from_route_id, + to_route_id=to_route_id, + from_trip_id=from_trip_id, + to_trip_id=to_trip_id, transfer_type=transfer_dict['transfer_type'], min_transfer_time=transfer_dict.get('min_transfer_time', 0) or 0, ) diff --git a/trainvel/gtfs/migrations/0005_transfer_from_route_transfer_from_trip_and_more.py b/trainvel/gtfs/migrations/0005_transfer_from_route_transfer_from_trip_and_more.py new file mode 100644 index 0000000..cb29ba1 --- /dev/null +++ b/trainvel/gtfs/migrations/0005_transfer_from_route_transfer_from_trip_and_more.py @@ -0,0 +1,73 @@ +# Generated by Django 5.0.6 on 2024-08-12 18:33 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("gtfs", "0004_trip_long_distance_trip_route_name_trip_route_type_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="transfer", + name="from_route", + field=models.ForeignKey( + blank=True, + default=None, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="transfers_from", + to="gtfs.route", + verbose_name="From route", + ), + ), + migrations.AddField( + model_name="transfer", + name="from_trip", + field=models.ForeignKey( + blank=True, + default=None, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="transfers_from", + to="gtfs.trip", + verbose_name="From trip", + ), + ), + migrations.AddField( + model_name="transfer", + name="to_route", + field=models.ForeignKey( + blank=True, + default=None, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="transfers_to", + to="gtfs.route", + verbose_name="To route", + ), + ), + migrations.AddField( + model_name="transfer", + name="to_trip", + field=models.ForeignKey( + blank=True, + default=None, + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="transfers_to", + to="gtfs.trip", + verbose_name="To trip", + ), + ), + migrations.AlterField( + model_name="transfer", + name="min_transfer_time", + field=models.IntegerField( + blank=True, default=None, verbose_name="Minimum transfer time" + ), + ), + ]