Add station screen display
|
@ -44,6 +44,7 @@ env/
|
||||||
.venv/
|
.venv/
|
||||||
venv/
|
venv/
|
||||||
db.sqlite3
|
db.sqlite3
|
||||||
|
db.sqlite3-journal
|
||||||
|
|
||||||
# Don't git index
|
# Don't git index
|
||||||
whoosh_index/
|
whoosh_index/
|
||||||
|
|
|
@ -15,8 +15,9 @@ Including another URLconf
|
||||||
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
||||||
"""
|
"""
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.urls import path
|
from django.urls import path, include
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path("admin/", admin.site.urls),
|
path("admin/", admin.site.urls, name="admin"),
|
||||||
|
path("gtfs/", include("sncfgtfs.urls"), name="gtfs"),
|
||||||
]
|
]
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
|
from django.utils.safestring import mark_safe
|
||||||
|
|
||||||
from sncfgtfs.models import Agency, Stop, Route, Trip, StopTime, Calendar, CalendarDate, \
|
from sncfgtfs.models import Agency, Stop, Route, Trip, StopTime, Calendar, CalendarDate, \
|
||||||
Transfer, FeedInfo
|
Transfer, FeedInfo
|
||||||
|
@ -6,44 +7,76 @@ from sncfgtfs.models import Agency, Stop, Route, Trip, StopTime, Calendar, Calen
|
||||||
|
|
||||||
@admin.register(Agency)
|
@admin.register(Agency)
|
||||||
class AgencyAdmin(admin.ModelAdmin):
|
class AgencyAdmin(admin.ModelAdmin):
|
||||||
pass
|
list_display = ('name', 'id', 'url', 'timezone',)
|
||||||
|
search_fields = ('name',)
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Stop)
|
@admin.register(Stop)
|
||||||
class StopAdmin(admin.ModelAdmin):
|
class StopAdmin(admin.ModelAdmin):
|
||||||
pass
|
list_display = ('name', 'id', 'lat', 'lon', 'location_type',)
|
||||||
|
list_filter = ('location_type',)
|
||||||
|
search_fields = ('name', 'id',)
|
||||||
|
ordering = ('name',)
|
||||||
|
autocomplete_fields = ('parent_station',)
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Route)
|
@admin.register(Route)
|
||||||
class RouteAdmin(admin.ModelAdmin):
|
class RouteAdmin(admin.ModelAdmin):
|
||||||
pass
|
list_display = ('long_name', 'short_name', 'id', 'type',)
|
||||||
|
list_filter = ('type',)
|
||||||
|
search_fields = ('long_name', 'short_name', 'id',)
|
||||||
|
ordering = ('long_name',)
|
||||||
|
autocomplete_fields = ('agency',)
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Trip)
|
@admin.register(Trip)
|
||||||
class TripAdmin(admin.ModelAdmin):
|
class TripAdmin(admin.ModelAdmin):
|
||||||
pass
|
list_display = ('id', 'route', 'service', 'headsign', 'direction_id',)
|
||||||
|
list_filter = ('direction_id', 'service__transport_type',)
|
||||||
|
search_fields = ('id', 'route__long_name', 'service', 'headsign',)
|
||||||
|
ordering = ('route', 'service',)
|
||||||
|
|
||||||
|
|
||||||
@admin.register(StopTime)
|
@admin.register(StopTime)
|
||||||
class StopTimeAdmin(admin.ModelAdmin):
|
class StopTimeAdmin(admin.ModelAdmin):
|
||||||
pass
|
list_display = ('trip', 'stop', 'arrival_time', 'departure_time', 'arrival_next_day',
|
||||||
|
'stop_sequence', 'pickup_type', 'drop_off_type',)
|
||||||
|
list_filter = ('arrival_next_day', 'pickup_type', 'drop_off_type', 'trip__service__transport_type',)
|
||||||
|
search_fields = ('trip__id', 'stop__name', 'arrival_time', 'departure_time',)
|
||||||
|
ordering = ('trip', 'stop_sequence',)
|
||||||
|
autocomplete_fields = ('trip', 'stop',)
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Calendar)
|
@admin.register(Calendar)
|
||||||
class CalendarAdmin(admin.ModelAdmin):
|
class CalendarAdmin(admin.ModelAdmin):
|
||||||
pass
|
list_display = ('id', 'transport_type', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday',
|
||||||
|
'saturday', 'sunday', 'start_date', 'end_date',)
|
||||||
|
list_filter = ('transport_type', 'monday', 'tuesday', 'wednesday', 'thursday', 'friday', 'saturday', 'sunday',
|
||||||
|
'start_date', 'end_date',)
|
||||||
|
search_fields = ('id', 'start_date', 'end_date',)
|
||||||
|
ordering = ('transport_type', 'id',)
|
||||||
|
|
||||||
|
|
||||||
@admin.register(CalendarDate)
|
@admin.register(CalendarDate)
|
||||||
class CalendarDateAdmin(admin.ModelAdmin):
|
class CalendarDateAdmin(admin.ModelAdmin):
|
||||||
pass
|
list_display = ('id', 'service_id', 'date', 'exception_type',)
|
||||||
|
list_filter = ('exception_type', 'date', 'service__transport_type',)
|
||||||
|
search_fields = ('id', 'date',)
|
||||||
|
ordering = ('date', 'service_id',)
|
||||||
|
|
||||||
|
|
||||||
@admin.register(Transfer)
|
@admin.register(Transfer)
|
||||||
class TransferAdmin(admin.ModelAdmin):
|
class TransferAdmin(admin.ModelAdmin):
|
||||||
pass
|
list_display = ('from_stop', 'to_stop', 'transfer_type', 'min_transfer_time',)
|
||||||
|
list_filter = ('transfer_type',)
|
||||||
|
search_fields = ('from_stop__stop_name', 'to_stop__stop_name',)
|
||||||
|
autocomplete_fields = ('from_stop', 'to_stop',)
|
||||||
|
|
||||||
|
|
||||||
@admin.register(FeedInfo)
|
@admin.register(FeedInfo)
|
||||||
class FeedInfoAdmin(admin.ModelAdmin):
|
class FeedInfoAdmin(admin.ModelAdmin):
|
||||||
pass
|
list_display = ('feed_publisher_name', 'feed_publisher_url', 'feed_lang', 'feed_start_date',
|
||||||
|
'feed_end_date', 'feed_version',)
|
||||||
|
search_fields = ('feed_publisher_name', 'feed_publisher_url', 'feed_lang', 'feed_start_date',
|
||||||
|
'feed_end_date', 'feed_version',)
|
||||||
|
ordering = ('feed_publisher_name',)
|
||||||
|
|
|
@ -2,7 +2,7 @@ msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: 1.0\n"
|
"Project-Id-Version: 1.0\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2024-01-26 21:12+0100\n"
|
"POT-Creation-Date: 2024-01-27 10:44+0100\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: Emmy D'Anello <ynerant@emy.lu>\n"
|
"Last-Translator: Emmy D'Anello <ynerant@emy.lu>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -13,433 +13,480 @@ msgstr ""
|
||||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:6
|
#: sncfgtfs/models.py:6
|
||||||
|
msgid "TGV"
|
||||||
|
msgstr "TGV"
|
||||||
|
|
||||||
|
#: sncfgtfs/models.py:7
|
||||||
|
msgid "TER"
|
||||||
|
msgstr "TER"
|
||||||
|
|
||||||
|
#: sncfgtfs/models.py:8
|
||||||
|
msgid "Intercités"
|
||||||
|
msgstr "Intercités"
|
||||||
|
|
||||||
|
#: sncfgtfs/models.py:9
|
||||||
|
msgid "Transilien"
|
||||||
|
msgstr "Transilien"
|
||||||
|
|
||||||
|
#: sncfgtfs/models.py:13
|
||||||
msgid "Stop/platform"
|
msgid "Stop/platform"
|
||||||
msgstr "Arrêt / quai"
|
msgstr "Arrêt / quai"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:7
|
#: sncfgtfs/models.py:14
|
||||||
msgid "Station"
|
msgid "Station"
|
||||||
msgstr "Gare"
|
msgstr "Gare"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:8
|
#: sncfgtfs/models.py:15
|
||||||
msgid "Entrance/exit"
|
msgid "Entrance/exit"
|
||||||
msgstr "Entrée / sortie"
|
msgstr "Entrée / sortie"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:9
|
#: sncfgtfs/models.py:16
|
||||||
msgid "Generic node"
|
msgid "Generic node"
|
||||||
msgstr "Nœud générique"
|
msgstr "Nœud générique"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:10
|
#: sncfgtfs/models.py:17
|
||||||
msgid "Boarding area"
|
msgid "Boarding area"
|
||||||
msgstr "Zone d'embarquement"
|
msgstr "Zone d'embarquement"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:14
|
#: sncfgtfs/models.py:21
|
||||||
msgid "No information"
|
msgid "No information"
|
||||||
msgstr "Pas d'information"
|
msgstr "Pas d'information"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:15
|
#: sncfgtfs/models.py:22
|
||||||
msgid "Possible"
|
msgid "Possible"
|
||||||
msgstr "Possible"
|
msgstr "Possible"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:16 sncfgtfs/models.py:46
|
#: sncfgtfs/models.py:23 sncfgtfs/models.py:53
|
||||||
msgid "Not possible"
|
msgid "Not possible"
|
||||||
msgstr "Impossible"
|
msgstr "Impossible"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:20
|
#: sncfgtfs/models.py:27
|
||||||
msgid "Regular"
|
msgid "Regular"
|
||||||
msgstr "Régulier"
|
msgstr "Régulier"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:21
|
#: sncfgtfs/models.py:28
|
||||||
msgid "None"
|
msgid "None"
|
||||||
msgstr "Aucun"
|
msgstr "Aucun"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:22
|
#: sncfgtfs/models.py:29
|
||||||
msgid "Must phone agency"
|
msgid "Must phone agency"
|
||||||
msgstr "Doit téléphoner à l'agence"
|
msgstr "Doit téléphoner à l'agence"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:23
|
#: sncfgtfs/models.py:30
|
||||||
msgid "Must coordinate with driver"
|
msgid "Must coordinate with driver"
|
||||||
msgstr "Doit se coordonner avec læ conducteurice"
|
msgstr "Doit se coordonner avec læ conducteurice"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:27
|
#: sncfgtfs/models.py:34
|
||||||
msgid "Tram"
|
msgid "Tram"
|
||||||
msgstr "Tram"
|
msgstr "Tram"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:28
|
#: sncfgtfs/models.py:35
|
||||||
msgid "Metro"
|
msgid "Metro"
|
||||||
msgstr "Métro"
|
msgstr "Métro"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:29
|
#: sncfgtfs/models.py:36
|
||||||
msgid "Rail"
|
msgid "Rail"
|
||||||
msgstr "Rail"
|
msgstr "Rail"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:30
|
#: sncfgtfs/models.py:37
|
||||||
msgid "Bus"
|
msgid "Bus"
|
||||||
msgstr "Bus"
|
msgstr "Bus"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:31
|
#: sncfgtfs/models.py:38
|
||||||
msgid "Ferry"
|
msgid "Ferry"
|
||||||
msgstr "Ferry"
|
msgstr "Ferry"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:32
|
#: sncfgtfs/models.py:39
|
||||||
msgid "Cable car"
|
msgid "Cable car"
|
||||||
msgstr "Câble"
|
msgstr "Câble"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:33
|
#: sncfgtfs/models.py:40
|
||||||
msgid "Gondola"
|
msgid "Gondola"
|
||||||
msgstr "Gondole"
|
msgstr "Gondole"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:34
|
#: sncfgtfs/models.py:41
|
||||||
msgid "Funicular"
|
msgid "Funicular"
|
||||||
msgstr "Funiculaire"
|
msgstr "Funiculaire"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:38
|
#: sncfgtfs/models.py:45
|
||||||
msgid "Outbound"
|
msgid "Outbound"
|
||||||
msgstr "Vers l'extérieur"
|
msgstr "Vers l'extérieur"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:39
|
#: sncfgtfs/models.py:46
|
||||||
msgid "Inbound"
|
msgid "Inbound"
|
||||||
msgstr "Vers l'intérieur"
|
msgstr "Vers l'intérieur"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:43
|
#: sncfgtfs/models.py:50
|
||||||
msgid "Recommended"
|
msgid "Recommended"
|
||||||
msgstr "Recommandé"
|
msgstr "Recommandé"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:44
|
#: sncfgtfs/models.py:51
|
||||||
msgid "Timed"
|
msgid "Timed"
|
||||||
msgstr "Correspondance programmée"
|
msgstr "Correspondance programmée"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:45
|
#: sncfgtfs/models.py:52
|
||||||
msgid "Minimum time"
|
msgid "Minimum time"
|
||||||
msgstr "Temps de correspondance minimum requis"
|
msgstr "Temps de correspondance minimum requis"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:53 sncfgtfs/models.py:177
|
#: sncfgtfs/models.py:57
|
||||||
|
msgid "Added"
|
||||||
|
msgstr "Ajouté"
|
||||||
|
|
||||||
|
#: sncfgtfs/models.py:58
|
||||||
|
msgid "Removed"
|
||||||
|
msgstr "Supprimé"
|
||||||
|
|
||||||
|
#: sncfgtfs/models.py:65 sncfgtfs/models.py:209
|
||||||
msgid "Agency ID"
|
msgid "Agency ID"
|
||||||
msgstr "ID de l'agence"
|
msgstr "ID de l'agence"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:59
|
#: sncfgtfs/models.py:71
|
||||||
msgid "Agency name"
|
msgid "Agency name"
|
||||||
msgstr "Nom de l'agence"
|
msgstr "Nom de l'agence"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:63
|
#: sncfgtfs/models.py:75
|
||||||
msgid "Agency URL"
|
msgid "Agency URL"
|
||||||
msgstr "URL de l'agence"
|
msgstr "URL de l'agence"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:68
|
#: sncfgtfs/models.py:80
|
||||||
msgid "Agency timezone"
|
msgid "Agency timezone"
|
||||||
msgstr "Fuseau horaire de l'agence"
|
msgstr "Fuseau horaire de l'agence"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:73
|
#: sncfgtfs/models.py:85
|
||||||
msgid "Agency language"
|
msgid "Agency language"
|
||||||
msgstr "Langue de l'agence"
|
msgstr "Langue de l'agence"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:78
|
#: sncfgtfs/models.py:91
|
||||||
|
msgid "Agency phone"
|
||||||
|
msgstr "Téléphone de l'agence"
|
||||||
|
|
||||||
|
#: sncfgtfs/models.py:96
|
||||||
|
msgid "Agency email"
|
||||||
|
msgstr "Adresse email de l'agence"
|
||||||
|
|
||||||
|
#: sncfgtfs/models.py:104
|
||||||
msgid "Agency"
|
msgid "Agency"
|
||||||
msgstr "Agence"
|
msgstr "Agence"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:79
|
#: sncfgtfs/models.py:105
|
||||||
msgid "Agencies"
|
msgid "Agencies"
|
||||||
msgstr "Agences"
|
msgstr "Agences"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:86 sncfgtfs/models.py:307
|
#: sncfgtfs/models.py:112 sncfgtfs/models.py:366
|
||||||
msgid "Stop ID"
|
msgid "Stop ID"
|
||||||
msgstr "ID de l'arrêt"
|
msgstr "ID de l'arrêt"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:91
|
#: sncfgtfs/models.py:117
|
||||||
msgid "Stop code"
|
msgid "Stop code"
|
||||||
msgstr "Code de l'arrêt"
|
msgstr "Code de l'arrêt"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:97
|
#: sncfgtfs/models.py:123
|
||||||
msgid "Stop name"
|
msgid "Stop name"
|
||||||
msgstr "Nom de l'arrêt"
|
msgstr "Nom de l'arrêt"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:102
|
#: sncfgtfs/models.py:128
|
||||||
msgid "Stop description"
|
msgid "Stop description"
|
||||||
msgstr "Description de l'arrêt"
|
msgstr "Description de l'arrêt"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:107
|
#: sncfgtfs/models.py:133
|
||||||
msgid "Stop longitude"
|
msgid "Stop longitude"
|
||||||
msgstr "Longitude de l'arrêt"
|
msgstr "Longitude de l'arrêt"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:111
|
#: sncfgtfs/models.py:137
|
||||||
msgid "Stop latitude"
|
msgid "Stop latitude"
|
||||||
msgstr "Latitude de l'arrêt"
|
msgstr "Latitude de l'arrêt"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:116
|
#: sncfgtfs/models.py:142
|
||||||
msgid "Zone ID"
|
msgid "Zone ID"
|
||||||
msgstr "ID de la zone"
|
msgstr "ID de la zone"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:120
|
#: sncfgtfs/models.py:146
|
||||||
msgid "Stop URL"
|
msgid "Stop URL"
|
||||||
msgstr "URL de l'arrêt"
|
msgstr "URL de l'arrêt"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:125
|
#: sncfgtfs/models.py:151
|
||||||
msgid "Location type"
|
msgid "Location type"
|
||||||
msgstr "Type de localisation"
|
msgstr "Type de localisation"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:134
|
#: sncfgtfs/models.py:160
|
||||||
msgid "Parent station"
|
msgid "Parent station"
|
||||||
msgstr "Gare parente"
|
msgstr "Gare parente"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:140
|
#: sncfgtfs/models.py:168
|
||||||
msgid "Stop timezone"
|
msgid "Stop timezone"
|
||||||
msgstr "Fuseau horaire de l'arrêt"
|
msgstr "Fuseau horaire de l'arrêt"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:146
|
#: sncfgtfs/models.py:174
|
||||||
msgid "Level ID"
|
msgid "Level ID"
|
||||||
msgstr "ID du niveau"
|
msgstr "ID du niveau"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:151
|
#: sncfgtfs/models.py:179
|
||||||
msgid "Wheelchair boarding"
|
msgid "Wheelchair boarding"
|
||||||
msgstr "Embarquement en fauteuil roulant"
|
msgstr "Embarquement en fauteuil roulant"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:159
|
#: sncfgtfs/models.py:187
|
||||||
msgid "Platform code"
|
msgid "Platform code"
|
||||||
msgstr "Code du quai"
|
msgstr "Code du quai"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:163
|
#: sncfgtfs/models.py:195
|
||||||
msgid "Stop"
|
msgid "Stop"
|
||||||
msgstr "Arrêt"
|
msgstr "Arrêt"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:164
|
#: sncfgtfs/models.py:196
|
||||||
msgid "Stops"
|
msgid "Stops"
|
||||||
msgstr "Arrêts"
|
msgstr "Arrêts"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:171 sncfgtfs/models.py:233
|
#: sncfgtfs/models.py:203 sncfgtfs/models.py:340 sncfgtfs/models.py:469
|
||||||
msgid "Route ID"
|
#: sncfgtfs/models.py:506
|
||||||
msgstr "ID de la ligne"
|
msgid "ID"
|
||||||
|
msgstr "Identifiant"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:182
|
#: sncfgtfs/models.py:215
|
||||||
msgid "Route short name"
|
msgid "Route short name"
|
||||||
msgstr "Nom court de la ligne"
|
msgstr "Nom court de la ligne"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:187
|
#: sncfgtfs/models.py:220
|
||||||
msgid "Route long name"
|
msgid "Route long name"
|
||||||
msgstr "Nom long de la ligne"
|
msgstr "Nom long de la ligne"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:192
|
#: sncfgtfs/models.py:225
|
||||||
msgid "Route description"
|
msgid "Route description"
|
||||||
msgstr "Description de la ligne"
|
msgstr "Description de la ligne"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:197
|
#: sncfgtfs/models.py:230
|
||||||
msgid "Route type"
|
msgid "Route type"
|
||||||
msgstr "Type de ligne"
|
msgstr "Type de ligne"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:202
|
#: sncfgtfs/models.py:235
|
||||||
msgid "Route URL"
|
msgid "Route URL"
|
||||||
msgstr "URL de la ligne"
|
msgstr "URL de la ligne"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:208
|
#: sncfgtfs/models.py:241
|
||||||
msgid "Route color"
|
msgid "Route color"
|
||||||
msgstr "Couleur de la ligne"
|
msgstr "Couleur de la ligne"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:214
|
#: sncfgtfs/models.py:247
|
||||||
msgid "Route text color"
|
msgid "Route text color"
|
||||||
msgstr "Couleur du texte de la ligne"
|
msgstr "Couleur du texte de la ligne"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:219
|
#: sncfgtfs/models.py:255 sncfgtfs/models.py:269
|
||||||
msgid "Route"
|
msgid "Route"
|
||||||
msgstr "Ligne"
|
msgstr "Ligne"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:220
|
#: sncfgtfs/models.py:256
|
||||||
msgid "Routes"
|
msgid "Routes"
|
||||||
msgstr "Lignes"
|
msgstr "Lignes"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:227 sncfgtfs/models.py:293
|
#: sncfgtfs/models.py:263
|
||||||
msgid "Trip ID"
|
msgid "Trip ID"
|
||||||
msgstr "ID du trajet"
|
msgstr "ID du trajet"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:238 sncfgtfs/models.py:349 sncfgtfs/models.py:397
|
#: sncfgtfs/models.py:276 sncfgtfs/models.py:475
|
||||||
msgid "Service ID"
|
msgid "Service"
|
||||||
msgstr "ID du service"
|
msgstr "Service"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:243
|
#: sncfgtfs/models.py:282
|
||||||
msgid "Trip headsign"
|
msgid "Trip headsign"
|
||||||
msgstr "Destination du trajet"
|
msgstr "Destination du trajet"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:249
|
#: sncfgtfs/models.py:288
|
||||||
msgid "Trip short name"
|
msgid "Trip short name"
|
||||||
msgstr "Nom court du trajet"
|
msgstr "Nom court du trajet"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:254
|
#: sncfgtfs/models.py:293
|
||||||
msgid "Direction"
|
msgid "Direction"
|
||||||
msgstr "Direction"
|
msgstr "Direction"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:261
|
#: sncfgtfs/models.py:300
|
||||||
msgid "Block ID"
|
msgid "Block ID"
|
||||||
msgstr "ID du bloc"
|
msgstr "ID du bloc"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:267
|
#: sncfgtfs/models.py:306
|
||||||
msgid "Shape ID"
|
msgid "Shape ID"
|
||||||
msgstr "ID de la forme"
|
msgstr "ID de la forme"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:272
|
#: sncfgtfs/models.py:311
|
||||||
msgid "Wheelchair accessible"
|
msgid "Wheelchair accessible"
|
||||||
msgstr "Accessible en fauteuil roulant"
|
msgstr "Accessible en fauteuil roulant"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:279
|
#: sncfgtfs/models.py:318
|
||||||
msgid "Bikes allowed"
|
msgid "Bikes allowed"
|
||||||
msgstr "Vélos autorisés"
|
msgstr "Vélos autorisés"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:285
|
#: sncfgtfs/models.py:332 sncfgtfs/models.py:346
|
||||||
msgid "Trip"
|
msgid "Trip"
|
||||||
msgstr "Trajet"
|
msgstr "Trajet"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:286
|
#: sncfgtfs/models.py:333
|
||||||
msgid "Trips"
|
msgid "Trips"
|
||||||
msgstr "Trajets"
|
msgstr "Trajets"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:297
|
#: sncfgtfs/models.py:351
|
||||||
msgid "Arrival time"
|
msgid "Arrival time"
|
||||||
msgstr "Heure d'arrivée"
|
msgstr "Heure d'arrivée"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:301
|
#: sncfgtfs/models.py:355
|
||||||
msgid "Departure time"
|
msgid "Departure time"
|
||||||
msgstr "Heure de départ"
|
msgstr "Heure de départ"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:311
|
#: sncfgtfs/models.py:359
|
||||||
|
msgid "Arrival next day"
|
||||||
|
msgstr "Arrivée le jour suivant"
|
||||||
|
|
||||||
|
#: sncfgtfs/models.py:371
|
||||||
msgid "Stop sequence"
|
msgid "Stop sequence"
|
||||||
msgstr "Séquence de l'arrêt"
|
msgstr "Séquence de l'arrêt"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:316
|
#: sncfgtfs/models.py:376
|
||||||
msgid "Stop headsign"
|
msgid "Stop headsign"
|
||||||
msgstr "Destination de l'arrêt"
|
msgstr "Destination de l'arrêt"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:321
|
#: sncfgtfs/models.py:381
|
||||||
msgid "Pickup type"
|
msgid "Pickup type"
|
||||||
msgstr "Type de prise en charge"
|
msgstr "Type de prise en charge"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:328
|
#: sncfgtfs/models.py:388
|
||||||
msgid "Drop off type"
|
msgid "Drop off type"
|
||||||
msgstr "Type de dépose"
|
msgstr "Type de dépose"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:335
|
#: sncfgtfs/models.py:395
|
||||||
msgid "Timepoint"
|
msgid "Timepoint"
|
||||||
msgstr "Ponctualité"
|
msgstr "Ponctualité"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:341
|
#: sncfgtfs/models.py:404
|
||||||
msgid "Stop time"
|
msgid "Stop time"
|
||||||
msgstr "Heure d'arrêt"
|
msgstr "Heure d'arrêt"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:342
|
#: sncfgtfs/models.py:405
|
||||||
msgid "Stop times"
|
msgid "Stop times"
|
||||||
msgstr "Heures d'arrêt"
|
msgstr "Heures d'arrêt"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:353
|
#: sncfgtfs/models.py:412
|
||||||
|
msgid "Service ID"
|
||||||
|
msgstr "ID du service"
|
||||||
|
|
||||||
|
#: sncfgtfs/models.py:416
|
||||||
msgid "Monday"
|
msgid "Monday"
|
||||||
msgstr "Lundi"
|
msgstr "Lundi"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:357
|
#: sncfgtfs/models.py:420
|
||||||
msgid "Tuesday"
|
msgid "Tuesday"
|
||||||
msgstr "Mardi"
|
msgstr "Mardi"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:361
|
#: sncfgtfs/models.py:424
|
||||||
msgid "Wednesday"
|
msgid "Wednesday"
|
||||||
msgstr "Mercredi"
|
msgstr "Mercredi"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:365
|
#: sncfgtfs/models.py:428
|
||||||
msgid "Thursday"
|
msgid "Thursday"
|
||||||
msgstr "Jeudi"
|
msgstr "Jeudi"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:369
|
#: sncfgtfs/models.py:432
|
||||||
msgid "Friday"
|
msgid "Friday"
|
||||||
msgstr "Vendredi"
|
msgstr "Vendredi"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:373
|
#: sncfgtfs/models.py:436
|
||||||
msgid "Saturday"
|
msgid "Saturday"
|
||||||
msgstr "Samedi"
|
msgstr "Samedi"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:377
|
#: sncfgtfs/models.py:440
|
||||||
msgid "Sunday"
|
msgid "Sunday"
|
||||||
msgstr "Dimanche"
|
msgstr "Dimanche"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:381
|
#: sncfgtfs/models.py:444
|
||||||
msgid "Start date"
|
msgid "Start date"
|
||||||
msgstr "Date de début"
|
msgstr "Date de début"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:385
|
#: sncfgtfs/models.py:448
|
||||||
msgid "End date"
|
msgid "End date"
|
||||||
msgstr "Date de fin"
|
msgstr "Date de fin"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:389
|
#: sncfgtfs/models.py:453 sncfgtfs/models.py:490
|
||||||
|
msgid "Transport type"
|
||||||
|
msgstr "Type de transport"
|
||||||
|
|
||||||
|
#: sncfgtfs/models.py:461
|
||||||
msgid "Calendar"
|
msgid "Calendar"
|
||||||
msgstr "Calendrier"
|
msgstr "Calendrier"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:390
|
#: sncfgtfs/models.py:462
|
||||||
msgid "Calendars"
|
msgid "Calendars"
|
||||||
msgstr "Calendriers"
|
msgstr "Calendriers"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:401
|
#: sncfgtfs/models.py:480
|
||||||
msgid "Date"
|
msgid "Date"
|
||||||
msgstr "Date"
|
msgstr "Date"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:405
|
#: sncfgtfs/models.py:484
|
||||||
msgid "Exception type"
|
msgid "Exception type"
|
||||||
msgstr "Type d'exception"
|
msgstr "Type d'exception"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:409
|
#: sncfgtfs/models.py:498
|
||||||
msgid "Calendar date"
|
msgid "Calendar date"
|
||||||
msgstr "Date du calendrier"
|
msgstr "Date du calendrier"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:410
|
#: sncfgtfs/models.py:499
|
||||||
msgid "Calendar dates"
|
msgid "Calendar dates"
|
||||||
msgstr "Dates du calendrier"
|
msgstr "Dates du calendrier"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:417
|
#: sncfgtfs/models.py:512
|
||||||
msgid "From stop"
|
msgid "From stop"
|
||||||
msgstr "Depuis l'arrêt"
|
msgstr "Depuis l'arrêt"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:424
|
#: sncfgtfs/models.py:519
|
||||||
msgid "To stop"
|
msgid "To stop"
|
||||||
msgstr "Jusqu'à l'arrêt"
|
msgstr "Jusqu'à l'arrêt"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:429
|
#: sncfgtfs/models.py:524
|
||||||
msgid "Transfer type"
|
msgid "Transfer type"
|
||||||
msgstr "Type de correspondance"
|
msgstr "Type de correspondance"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:435
|
#: sncfgtfs/models.py:530
|
||||||
msgid "Minimum transfer time"
|
msgid "Minimum transfer time"
|
||||||
msgstr "Temps de correspondance minimum"
|
msgstr "Temps de correspondance minimum"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:440
|
#: sncfgtfs/models.py:535
|
||||||
msgid "Transfer"
|
msgid "Transfer"
|
||||||
msgstr "Correspondance"
|
msgstr "Correspondance"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:441
|
#: sncfgtfs/models.py:536
|
||||||
msgid "Transfers"
|
msgid "Transfers"
|
||||||
msgstr "Correspondances"
|
msgstr "Correspondances"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:447
|
#: sncfgtfs/models.py:542
|
||||||
msgid "Feed ID"
|
|
||||||
msgstr "ID du flux"
|
|
||||||
|
|
||||||
#: sncfgtfs/models.py:452
|
|
||||||
msgid "Feed publisher name"
|
msgid "Feed publisher name"
|
||||||
msgstr "Nom de l'éditeur du flux"
|
msgstr "Nom de l'éditeur du flux"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:456
|
#: sncfgtfs/models.py:546
|
||||||
msgid "Feed publisher URL"
|
msgid "Feed publisher URL"
|
||||||
msgstr "URL de l'éditeur du flux"
|
msgstr "URL de l'éditeur du flux"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:461
|
#: sncfgtfs/models.py:551
|
||||||
msgid "Feed language"
|
msgid "Feed language"
|
||||||
msgstr "Langue du flux"
|
msgstr "Langue du flux"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:465
|
#: sncfgtfs/models.py:555
|
||||||
msgid "Feed start date"
|
msgid "Feed start date"
|
||||||
msgstr "Date de début du flux"
|
msgstr "Date de début du flux"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:469
|
#: sncfgtfs/models.py:559
|
||||||
msgid "Feed end date"
|
msgid "Feed end date"
|
||||||
msgstr "Date de fin du flux"
|
msgstr "Date de fin du flux"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:474
|
#: sncfgtfs/models.py:564
|
||||||
msgid "Feed version"
|
msgid "Feed version"
|
||||||
msgstr "Version du flux"
|
msgstr "Version du flux"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:478
|
#: sncfgtfs/models.py:568
|
||||||
msgid "Feed info"
|
msgid "Feed info"
|
||||||
msgstr "Information du flux"
|
msgstr "Information du flux"
|
||||||
|
|
||||||
#: sncfgtfs/models.py:479
|
#: sncfgtfs/models.py:569
|
||||||
msgid "Feed infos"
|
msgid "Feed infos"
|
||||||
msgstr "Informations du flux"
|
msgstr "Informations du flux"
|
||||||
|
|
||||||
|
#~ msgid "Route ID"
|
||||||
|
#~ msgstr "ID de la ligne"
|
||||||
|
|
||||||
|
#~ msgid "Feed ID"
|
||||||
|
#~ msgstr "ID du flux"
|
||||||
|
|
After Width: | Height: | Size: 286 KiB |
After Width: | Height: | Size: 9.9 KiB |
After Width: | Height: | Size: 20 KiB |
After Width: | Height: | Size: 7.2 KiB |
|
@ -0,0 +1,9 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<browserconfig>
|
||||||
|
<msapplication>
|
||||||
|
<tile>
|
||||||
|
<square150x150logo src="/assets/img/docs/favicons/mstile-150x150.png"/>
|
||||||
|
<TileColor>#00aba9</TileColor>
|
||||||
|
</tile>
|
||||||
|
</msapplication>
|
||||||
|
</browserconfig>
|
After Width: | Height: | Size: 1.1 KiB |
After Width: | Height: | Size: 1.6 KiB |
After Width: | Height: | Size: 15 KiB |
|
@ -0,0 +1,19 @@
|
||||||
|
{
|
||||||
|
"name": "",
|
||||||
|
"short_name": "",
|
||||||
|
"icons": [
|
||||||
|
{
|
||||||
|
"src": "/assets/img/docs/favicons/android-chrome-192x192.png",
|
||||||
|
"sizes": "192x192",
|
||||||
|
"type": "image/png"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"src": "/assets/img/docs/favicons/android-chrome-512x512.png",
|
||||||
|
"sizes": "512x512",
|
||||||
|
"type": "image/png"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"theme_color": "#ffffff",
|
||||||
|
"background_color": "#ffffff",
|
||||||
|
"display": "standalone"
|
||||||
|
}
|
After Width: | Height: | Size: 7.1 KiB |
|
@ -0,0 +1,90 @@
|
||||||
|
<?xml version="1.0" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||||
|
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||||
|
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||||
|
width="1596.000000pt" height="1596.000000pt" viewBox="0 0 1596.000000 1596.000000"
|
||||||
|
preserveAspectRatio="xMidYMid meet">
|
||||||
|
<metadata>
|
||||||
|
Created by potrace 1.11, written by Peter Selinger 2001-2013
|
||||||
|
</metadata>
|
||||||
|
<g transform="translate(0.000000,1596.000000) scale(0.100000,-0.100000)"
|
||||||
|
fill="#000000" stroke="none">
|
||||||
|
<path d="M688 12165 c-2 -2 -93 -6 -203 -9 -280 -9 -317 -16 -393 -73 -27 -20
|
||||||
|
-67 -77 -61 -85 2 -2 -3 -14 -11 -27 -10 -20 -12 -765 -12 -3990 l0 -3967 22
|
||||||
|
-52 c28 -64 96 -127 154 -143 44 -12 14060 -17 14124 -5 111 21 153 73 216
|
||||||
|
272 27 82 70 217 96 299 27 83 76 236 110 340 34 105 63 197 65 205 2 8 26 85
|
||||||
|
53 170 28 85 83 256 122 380 103 325 121 379 141 440 10 30 55 170 99 310 45
|
||||||
|
140 104 325 132 410 27 85 51 160 52 165 3 13 108 342 146 455 24 74 78 246
|
||||||
|
86 275 2 6 53 165 114 355 61 190 113 352 115 360 2 8 14 44 25 80 79 243 86
|
||||||
|
286 62 359 -8 24 -33 61 -55 82 -83 81 -646 418 -1102 659 -478 253 -1069 527
|
||||||
|
-1580 732 -82 33 -163 66 -180 73 -16 8 -96 38 -176 69 -579 220 -1264 448
|
||||||
|
-1854 615 -99 28 -202 58 -230 66 -27 8 -120 33 -205 55 -85 23 -177 48 -205
|
||||||
|
55 -50 14 -598 149 -645 159 -14 3 -115 26 -225 51 -110 25 -209 47 -220 50
|
||||||
|
-11 2 -96 20 -190 40 -191 40 -298 62 -336 69 -14 2 -73 13 -130 25 -57 11
|
||||||
|
-115 23 -129 25 -14 3 -50 9 -80 15 -30 6 -71 13 -90 16 -19 3 -42 8 -50 10
|
||||||
|
-8 2 -31 7 -50 10 -19 3 -57 10 -85 15 -27 5 -63 12 -80 15 -60 10 -621 104
|
||||||
|
-660 110 -22 3 -53 8 -70 11 -16 2 -43 6 -60 9 -41 6 -443 64 -480 70 -16 2
|
||||||
|
-84 11 -150 20 -66 8 -136 18 -155 21 -19 3 -54 7 -78 9 -23 3 -55 7 -70 9
|
||||||
|
-15 3 -52 8 -82 11 -30 3 -66 8 -80 10 -14 2 -50 7 -80 10 -30 3 -89 10 -130
|
||||||
|
15 -101 12 -156 19 -215 25 -99 11 -141 15 -230 25 -49 5 -117 12 -150 15 -33
|
||||||
|
3 -103 10 -155 15 -52 5 -122 12 -155 15 -57 5 -97 8 -217 20 -29 3 -84 8
|
||||||
|
-123 10 -38 3 -90 8 -115 10 -25 3 -83 7 -130 10 -47 3 -101 7 -120 10 -19 2
|
||||||
|
-82 7 -140 10 -58 3 -125 8 -150 10 -79 7 -233 17 -300 20 -36 2 -112 6 -170
|
||||||
|
9 -186 12 -262 16 -395 21 -71 3 -168 7 -215 10 -124 6 -382 16 -560 21 -176
|
||||||
|
6 -1717 13 -1722 9z m2979 -3469 c89 -4 170 -8 180 -10 10 -2 49 -7 86 -11 37
|
||||||
|
-3 76 -8 85 -10 9 -1 42 -6 72 -11 30 -4 57 -8 60 -9 3 -1 26 -5 53 -9 26 -5
|
||||||
|
47 -11 47 -15 0 -3 -16 -56 -35 -116 -19 -61 -56 -176 -82 -258 l-47 -147 -40
|
||||||
|
6 c-22 3 -43 7 -46 9 -3 2 -21 6 -40 9 -19 3 -46 8 -60 10 -149 28 -289 40
|
||||||
|
-470 40 -125 0 -283 -9 -330 -19 -13 -2 -42 -7 -65 -10 -204 -28 -404 -110
|
||||||
|
-533 -220 -35 -30 -84 -112 -98 -165 -43 -168 91 -283 616 -529 226 -106 587
|
||||||
|
-286 690 -345 368 -209 568 -396 651 -610 73 -187 36 -407 -106 -631 -21 -33
|
||||||
|
-41 -62 -45 -65 -3 -3 -14 -16 -23 -30 -60 -88 -237 -238 -372 -316 -63 -36
|
||||||
|
-100 -55 -200 -99 -90 -40 -332 -109 -455 -130 -19 -3 -60 -10 -90 -15 -30 -5
|
||||||
|
-80 -12 -110 -16 -30 -3 -66 -7 -80 -10 -106 -17 -603 -25 -760 -11 -78 7
|
||||||
|
-317 39 -385 52 -72 14 -303 66 -331 76 -17 5 -42 12 -55 14 -112 22 -619 201
|
||||||
|
-619 219 0 2 17 42 39 88 21 45 49 106 61 133 13 28 42 91 65 140 23 50 52
|
||||||
|
114 65 143 17 38 29 52 40 48 8 -2 73 -30 143 -60 185 -81 509 -185 659 -211
|
||||||
|
15 -3 59 -12 96 -20 38 -7 90 -17 118 -20 27 -3 61 -8 76 -11 160 -31 578 -36
|
||||||
|
743 -9 116 19 124 21 212 45 329 90 481 327 347 541 -51 81 -201 204 -364 298
|
||||||
|
-30 17 -156 81 -280 142 -541 265 -689 347 -864 478 -346 261 -458 537 -345
|
||||||
|
851 108 298 398 527 849 670 36 11 74 22 85 25 11 2 38 9 60 15 120 30 300 63
|
||||||
|
425 76 25 2 63 6 85 8 22 3 101 8 175 11 74 4 136 8 137 9 3 2 153 -1 310 -8z
|
||||||
|
m7368 0 c109 -9 276 -26 304 -31 9 -2 24 -4 34 -4 13 -1 16 -7 13 -23 -6 -28
|
||||||
|
-183 -545 -191 -558 -4 -6 -18 -8 -33 -5 -212 36 -760 41 -977 10 -22 -3 -56
|
||||||
|
-8 -75 -11 -270 -36 -614 -165 -835 -313 -212 -142 -374 -320 -479 -529 -58
|
||||||
|
-114 -107 -267 -120 -372 -3 -25 -8 -56 -11 -70 -8 -37 -8 -218 0 -275 55
|
||||||
|
-418 326 -723 767 -863 143 -46 258 -70 433 -89 144 -16 666 -8 785 12 14 2
|
||||||
|
41 6 60 9 19 3 60 10 90 16 30 6 66 14 80 16 14 3 28 8 31 12 3 4 26 72 52
|
||||||
|
152 25 80 82 260 127 400 45 140 111 347 147 460 36 113 78 243 93 290 15 47
|
||||||
|
37 117 49 155 37 116 162 507 176 550 8 22 48 148 90 280 64 200 216 679 230
|
||||||
|
723 3 6 10 12 17 13 61 2 2830 0 2833 -2 3 -4 -159 -532 -169 -548 -4 -5 -421
|
||||||
|
-9 -983 -9 -538 -1 -995 -1 -1015 -1 -36 -1 -38 -3 -52 -48 -8 -27 -35 -113
|
||||||
|
-61 -193 -96 -298 -215 -671 -215 -674 0 -2 381 -4 846 -4 465 0 848 -2 850
|
||||||
|
-4 2 -3 -7 -38 -20 -79 -13 -41 -51 -160 -85 -265 l-61 -191 -833 -1 c-457 -1
|
||||||
|
-842 -1 -853 -2 -20 0 -24 -6 -40 -65 -1 -5 -41 -131 -89 -280 -48 -148 -95
|
||||||
|
-297 -105 -330 -10 -33 -39 -125 -65 -205 -26 -80 -73 -228 -104 -329 -58
|
||||||
|
-183 -58 -184 -96 -202 -124 -61 -537 -170 -770 -204 -22 -4 -47 -8 -55 -10
|
||||||
|
-8 -2 -44 -7 -80 -11 -36 -3 -68 -8 -71 -10 -3 -2 -41 -6 -84 -10 -44 -3 -87
|
||||||
|
-7 -96 -9 -112 -22 -659 -22 -775 -1 -11 2 -50 7 -89 12 -38 4 -72 8 -75 9 -3
|
||||||
|
0 -27 5 -55 10 -243 42 -470 116 -690 227 -55 27 -107 56 -116 64 -8 8 -19 14
|
||||||
|
-23 14 -15 0 -163 109 -247 183 -214 187 -385 464 -444 717 -36 156 -34 152
|
||||||
|
-58 148 -23 -3 -37 -39 -135 -348 -17 -52 -53 -165 -80 -250 -28 -85 -78 -243
|
||||||
|
-112 -350 -34 -107 -69 -215 -77 -240 -8 -25 -16 -49 -17 -55 -2 -5 -9 -29
|
||||||
|
-16 -52 l-13 -43 -428 0 -428 0 -11 43 c-57 219 -251 780 -329 949 -11 26 -21
|
||||||
|
49 -21 52 0 3 -11 29 -24 58 -13 29 -40 91 -61 138 -126 280 -299 613 -475
|
||||||
|
915 -77 133 -181 298 -283 452 l-121 182 -17 -47 c-14 -38 -159 -483 -164
|
||||||
|
-502 -3 -11 -38 -120 -135 -420 -56 -173 -126 -391 -156 -485 -30 -93 -60
|
||||||
|
-172 -66 -176 -21 -13 -37 3 -54 54 -23 70 -78 179 -127 252 -48 70 -175 200
|
||||||
|
-264 269 -35 27 -63 52 -63 56 0 3 30 98 66 211 73 228 225 700 304 944 29 88
|
||||||
|
53 165 54 170 1 6 7 24 13 40 6 17 41 125 78 240 36 116 69 219 73 229 8 18
|
||||||
|
25 19 400 19 290 -1 396 -4 406 -13 8 -6 57 -66 108 -133 515 -672 973 -1477
|
||||||
|
1261 -2217 24 -63 50 -133 57 -155 l13 -40 28 85 c32 97 163 510 186 585 9 28
|
||||||
|
29 88 44 135 15 47 55 171 88 275 32 105 98 312 146 460 124 388 216 678 271
|
||||||
|
850 26 83 50 154 54 158 7 8 740 16 740 8 0 -2 -25 -80 -56 -175 -30 -94 -57
|
||||||
|
-175 -58 -181 -2 -5 -6 -17 -9 -25 -6 -15 -58 -185 -63 -205 -1 -5 -16 -51
|
||||||
|
-33 -102 -37 -111 -38 -123 -8 -123 14 0 58 35 127 101 86 83 268 229 356 287
|
||||||
|
153 99 365 206 549 275 104 39 331 107 405 122 14 3 63 12 110 21 47 9 92 18
|
||||||
|
101 19 9 2 40 6 69 10 29 4 62 8 72 10 11 2 63 7 116 11 53 3 99 8 101 10 6 6
|
||||||
|
612 -3 696 -10z"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 6.1 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 5.5 KiB |
After Width: | Height: | Size: 7.6 KiB |
After Width: | Height: | Size: 5.3 KiB |
After Width: | Height: | Size: 57 KiB |
After Width: | Height: | Size: 60 KiB |
|
@ -0,0 +1,22 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="26px" height="26px" viewBox="0 0 26 26" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch -->
|
||||||
|
<title>Icons/Langages/english</title>
|
||||||
|
<desc>Created with Sketch.</desc>
|
||||||
|
<defs></defs>
|
||||||
|
<g id="Icons/Langages/english" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<path d="M7.9224,24.9701 L7.9224,18.9461 L3.0644,21.3741 C4.3714,22.9231 6.0294,24.1661 7.9224,24.9701" id="Fill-1" fill="#00247D"></path>
|
||||||
|
<path d="M18.0781,24.9701 C19.9701,24.1661 21.6291,22.9231 22.9351,21.3741 L18.0781,18.9461 L18.0781,24.9701 Z" id="Fill-3" fill="#00247D"></path>
|
||||||
|
<path d="M3.064,4.6258 L7.922,7.0548 L7.922,1.0298 C6.03,1.8338 4.371,3.0768 3.064,4.6258" id="Fill-5" fill="#00247D"></path>
|
||||||
|
<path d="M18.0781,1.0301 L18.0781,7.0541 L22.9351,4.6261 C21.6291,3.0761 19.9701,1.8341 18.0781,1.0301" id="Fill-7" fill="#00247D"></path>
|
||||||
|
<path d="M7.9224,7.0545 L3.0644,4.6255 C2.8414,4.8885 2.6344,5.1645 2.4344,5.4455 L7.3864,7.9225 L1.0304,7.9225 C0.8704,8.2975 0.7304,8.6815 0.6064,9.0745 C0.5154,9.3615 0.4444,9.6575 0.3744,9.9535 L2.3644,9.9535 L9.9534,9.9535 L9.9534,9.2055 L9.9534,8.0705 L9.9534,0.3735 C9.2544,0.5415 8.5724,0.7535 7.9224,1.0305 L7.9224,7.0545 Z" id="Fill-9" fill="#FFFFFF"></path>
|
||||||
|
<path d="M25.626,9.9535 C25.555,9.6575 25.484,9.3615 25.394,9.0745 C25.27,8.6825 25.129,8.2975 24.97,7.9225 L18.613,7.9225 L23.566,5.4455 C23.365,5.1645 23.158,4.8895 22.936,4.6255 L18.078,7.0545 L18.078,1.0305 C17.428,0.7535 16.746,0.5415 16.047,0.3735 L16.047,8.0705 L16.047,9.2055 L16.047,9.9535 L23.636,9.9535 L25.626,9.9535 Z" id="Fill-11" fill="#FFFFFF"></path>
|
||||||
|
<path d="M0.374,16.0462 C0.445,16.3422 0.516,16.6382 0.606,16.9262 C0.73,17.3172 0.871,17.7022 1.03,18.0772 L7.387,18.0772 L2.434,20.5542 C2.635,20.8352 2.842,21.1102 3.064,21.3742 L7.922,18.9452 L7.922,24.9702 C8.572,25.2452 9.254,25.4572 9.953,25.6262 L9.953,17.9302 L9.953,16.7942 L9.953,16.0462 L2.365,16.0462 L0.374,16.0462 Z" id="Fill-13" fill="#FFFFFF"></path>
|
||||||
|
<path d="M16.0469,16.0462 L16.0469,16.7942 L16.0469,17.9302 L16.0469,25.6262 C16.7459,25.4572 17.4279,25.2452 18.0779,24.9702 L18.0779,18.9452 L22.9359,21.3742 C23.1579,21.1102 23.3649,20.8352 23.5669,20.5542 L18.6129,18.0772 L24.9699,18.0772 C25.1289,17.7022 25.2699,17.3172 25.3939,16.9252 C25.4849,16.6382 25.5549,16.3422 25.6259,16.0462 L23.6359,16.0462 L16.0469,16.0462 Z" id="Fill-15" fill="#FFFFFF"></path>
|
||||||
|
<path d="M23.5664,5.4456 L18.6134,7.9226 L24.9694,7.9226 C24.5954,7.0406 24.1174,6.2156 23.5664,5.4456" id="Fill-17" fill="#CF142B"></path>
|
||||||
|
<path d="M23.5664,20.554 C24.1174,19.784 24.5954,18.959 24.9694,18.077 L18.6134,18.077 L23.5664,20.554 Z" id="Fill-19" fill="#CF142B"></path>
|
||||||
|
<path d="M2.4341,20.554 L7.3871,18.077 L1.0301,18.077 C1.4051,18.959 1.8831,19.784 2.4341,20.554" id="Fill-21" fill="#CF142B"></path>
|
||||||
|
<path d="M2.4341,5.4456 C1.8831,6.2156 1.4051,7.0406 1.0301,7.9226 L7.3871,7.9226 L2.4341,5.4456 Z" id="Fill-23" fill="#CF142B"></path>
|
||||||
|
<path d="M25.6582,10.077 C25.6482,10.035 25.6362,9.995 25.6262,9.953 L23.6362,9.953 L16.0472,9.953 L16.0472,9.205 L16.0472,8.07 L16.0472,0.374 C15.0672,0.139 14.0512,0 13.0002,0 C11.9492,0 10.9322,0.139 9.9532,0.374 L9.9532,8.07 L9.9532,9.205 L9.9532,9.953 L2.3652,9.953 L0.3742,9.953 C0.3642,9.995 0.3512,10.035 0.3422,10.077 C0.1252,11.018 0.0002,11.994 0.0002,13 C0.0002,14.006 0.1252,14.982 0.3422,15.923 C0.3512,15.964 0.3642,16.005 0.3742,16.046 L2.3652,16.046 L9.9532,16.046 L9.9532,16.794 L9.9532,17.93 L9.9532,25.626 C10.9322,25.862 11.9492,26 13.0002,26 C14.0512,26 15.0672,25.862 16.0472,25.626 L16.0472,17.93 L16.0472,16.794 L16.0472,16.046 L23.6362,16.046 L25.6262,16.046 C25.6362,16.005 25.6482,15.964 25.6582,15.923 C25.8752,14.982 26.0002,14.006 26.0002,13 C26.0002,11.994 25.8752,11.018 25.6582,10.077" id="Fill-25" fill="#CF142B"></path>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 4.0 KiB |
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="26px" height="26px" viewBox="0 0 26 26" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch -->
|
||||||
|
<title>Icons/Langages/french</title>
|
||||||
|
<desc>Created with Sketch.</desc>
|
||||||
|
<defs></defs>
|
||||||
|
<g id="Icons/Langages/french" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<path d="M13,26 C14.637,26 16.195,25.688 17.636,25.14 L17.636,0.861 C16.195,0.313 14.637,0 13,0 C11.363,0 9.805,0.313 8.364,0.861 L8.364,25.14 C9.805,25.688 11.363,26 13,26" id="Fill-1" fill="#FFFFFF"></path>
|
||||||
|
<path d="M26,13 C26,7.437 22.531,2.723 17.636,0.861 L17.636,25.14 C22.531,23.277 26,18.562 26,13" id="Fill-3" fill="#FF0000"></path>
|
||||||
|
<path d="M0,13 C0,18.562 3.469,23.277 8.364,25.14 L8.364,0.861 C3.469,2.723 0,7.437 0,13" id="Fill-5" fill="#0088CE"></path>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 968 B |
|
@ -0,0 +1,12 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg width="26px" height="26px" viewBox="0 0 26 26" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
|
||||||
|
<!-- Generator: Sketch 49.3 (51167) - http://www.bohemiancoding.com/sketch -->
|
||||||
|
<title>Icons/Langages/deutsch</title>
|
||||||
|
<desc>Created with Sketch.</desc>
|
||||||
|
<defs></defs>
|
||||||
|
<g id="Icons/Langages/deutsch" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
|
||||||
|
<path d="M0,13 C0,14.637 0.313,16.195 0.861,17.636 L25.14,17.636 C25.687,16.195 26,14.637 26,13 C26,11.363 25.687,9.805 25.14,8.364 L0.861,8.364 C0.313,9.805 0,11.363 0,13" id="Fill-1" fill="#FF0000"></path>
|
||||||
|
<path d="M13,26 C18.562,26 23.277,22.531 25.14,17.636 L0.861,17.636 C2.723,22.531 7.437,26 13,26" id="Fill-3" fill="#FECE00"></path>
|
||||||
|
<path d="M13,0 C7.437,0 2.723,3.469 0.861,8.364 L25.14,8.364 C23.277,3.469 18.562,0 13,0" id="Fill-5" fill="#000000"></path>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 969 B |
|
@ -0,0 +1,53 @@
|
||||||
|
{% load static %}
|
||||||
|
|
||||||
|
<!doctype html>
|
||||||
|
<html lang="fr">
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<title>Horaires en gare de {{ stop.name }}</title>
|
||||||
|
|
||||||
|
<link title="Dark mode" rel="stylesheet" href="{% static "bootstrap-sncf.darkmode.min.css" %}">
|
||||||
|
|
||||||
|
<script src="{% static "bootstrap-sncf.min.js" %}"></script>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<h1>Horaires en gare de {{ stop.name }}</h1>
|
||||||
|
|
||||||
|
<form>
|
||||||
|
<div class="row">
|
||||||
|
<div class="col-auto">
|
||||||
|
<label for="date">Afficher le tableau à un autre moment</label>
|
||||||
|
</div>
|
||||||
|
<div class="col-auto">
|
||||||
|
<input name="date" type="date" class="form-control" value="{{ query_date|date:"Y-m-d" }}">
|
||||||
|
</div>
|
||||||
|
<div class="col-auto">
|
||||||
|
<input name="time" type="time" class="form-control form-inline" value="{{ query_time|time:"H:i" }}">
|
||||||
|
</div>
|
||||||
|
<div class="col-auto">
|
||||||
|
<input type="submit" class="form-control form-inline">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<table class="table table-striped table-hover">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th>Heure</th>
|
||||||
|
<th>Destination</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
{% for departure in next_departures %}
|
||||||
|
<tr>
|
||||||
|
<td>{{ departure.departure_time }}</td>
|
||||||
|
<td>
|
||||||
|
<h3>{{ departure.trip.destination }}</h3>
|
||||||
|
{% for trip_stop in departure.trip.stop_times.all %}{% if trip_stop.stop_sequence > departure.stop_sequence %}{% if trip_stop.drop_off_type == 0 %}{{ trip_stop.stop.name }}{% if trip_stop.pickup_type == 0 %}, {% endif %}{% endif %}{% endif %}{% endfor %}
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
{% endfor %}
|
||||||
|
</table>
|
||||||
|
</body>
|
||||||
|
</html>
|
|
@ -0,0 +1,7 @@
|
||||||
|
from django.urls import path
|
||||||
|
|
||||||
|
from sncfgtfs import views
|
||||||
|
|
||||||
|
urlpatterns = [
|
||||||
|
path('gare/<str:gare>/', views.GareView.as_view(), name='gare'),
|
||||||
|
]
|
|
@ -1,3 +1,46 @@
|
||||||
from django.shortcuts import render
|
from datetime import date, datetime, time
|
||||||
|
|
||||||
# Create your views here.
|
from django.db.models import Q
|
||||||
|
from django.views.generic import TemplateView
|
||||||
|
|
||||||
|
from sncfgtfs.models import Stop, StopTime, CalendarDate, Calendar
|
||||||
|
|
||||||
|
|
||||||
|
class GareView(TemplateView):
|
||||||
|
template_name = "sncfgtfs/gare.html"
|
||||||
|
|
||||||
|
def get_context_data(self, **kwargs):
|
||||||
|
context = super().get_context_data(**kwargs)
|
||||||
|
stop = Stop.objects.get(name__iexact=kwargs["gare"], location_type=1)
|
||||||
|
context['stop'] = stop
|
||||||
|
next_departures = []
|
||||||
|
|
||||||
|
now = datetime.now()
|
||||||
|
if self.request.GET.get('date', None):
|
||||||
|
query_date = date.fromisoformat(self.request.GET['date'])
|
||||||
|
else:
|
||||||
|
query_date = now.date()
|
||||||
|
if self.request.GET.get('time', None):
|
||||||
|
query_time = time.fromisoformat(self.request.GET['time'])
|
||||||
|
else:
|
||||||
|
query_time = now.time()
|
||||||
|
context['query_date'] = query_date
|
||||||
|
context['query_time'] = query_time
|
||||||
|
|
||||||
|
qs = StopTime.objects.none()
|
||||||
|
for child in Stop.objects.filter(name__iexact=kwargs["gare"], location_type=0).all():
|
||||||
|
qs_child = StopTime.objects.filter(stop=child, pickup_type=0, departure_time__gte=query_time)
|
||||||
|
qs_child = qs_child.filter(Q(trip__service_id__in=CalendarDate.objects.filter(
|
||||||
|
date=query_date, exception_type=1).values_list('service_id'))
|
||||||
|
| Q(trip__service_id__in=Calendar.objects.filter(
|
||||||
|
start_date__lte=query_date,
|
||||||
|
end_date__gte=query_date,
|
||||||
|
**{f"{query_date:%A}".lower(): True})
|
||||||
|
.filter(~Q(id__in=CalendarDate.objects.filter(
|
||||||
|
date=query_date, exception_type=2).values_list('service_id')))
|
||||||
|
.values_list('id')))
|
||||||
|
qs = qs.union(qs_child)
|
||||||
|
next_departures += qs.order_by("departure_time")[:20].all()
|
||||||
|
print(len(next_departures))
|
||||||
|
context['next_departures'] = next_departures
|
||||||
|
return context
|
||||||
|
|