Birte Kristina Friesel
19cd9f7a8d
account: add a list of sent follow requests
2023-07-16 23:01:23 +02:00
Birte Kristina Friesel
f9d1c266ce
action#checkin: re-add auto checkout
...
was removed from $self->checkin in 1074f248cc
2023-07-16 17:20:36 +02:00
Birte Kristina Friesel
b0bb69d87e
show followee checkins in departure board
2023-07-16 10:30:47 +02:00
Birte Kristina Friesel
40bec7774b
cleanup; perltidy
2023-07-16 10:30:23 +02:00
Birte Kristina Friesel
1cca278baa
add timeline / current checkins
2023-07-15 19:20:37 +02:00
Birte Kristina Friesel
40cd1d06fe
postprocess timeline; move user-related parts to get_user_status
2023-07-15 19:07:21 +02:00
Birte Kristina Friesel
5006bf6249
database: change maximum comment length
2023-07-15 17:10:24 +02:00
Birte Kristina Friesel
3c59efe2d4
timeline: minimum visibility is followers-only, not unlisted
2023-07-15 16:12:09 +02:00
Birte Kristina Friesel
cdce746afd
increase maximum comment length
2023-07-15 16:11:21 +02:00
Birte Kristina Friesel
b446b68e67
Move InTransit post-processing to InTransit module
2023-07-15 13:28:54 +02:00
Birte Kristina Friesel
d43c44e81c
add view for followees in transit
2023-07-15 08:36:26 +02:00
Birte Kristina Friesel
ca3cd1580f
Journeys->get_latest: Fix uninitialized value warning
2023-07-14 18:48:46 +02:00
Birte Kristina Friesel
5e74e35dfe
get_pushable_accounts: obtain all values from in_transit_str
2023-07-13 21:08:12 +02:00
Birte Kristina Friesel
83df6f41e2
perltidy
2023-07-13 20:56:30 +02:00
networkException
0c1993f28e
Checkin: Use correct visibility when pushing to Träwelling
2023-07-13 20:17:51 +02:00
Birte Kristina Friesel
8a422d16f7
Api: use get_departures_p
2023-07-09 19:23:11 +02:00
Birte Kristina Friesel
5b88a4bb3d
station board: fix HTTP status and IRIS error handling
2023-07-09 17:42:12 +02:00
Birte Kristina Friesel
2123a67ba0
IRIS->get_departures_p: return string in first rejection argument
...
This is consistent with other promises within travelynx
2023-07-09 17:41:51 +02:00
Birte Kristina Friesel
1074f248cc
use promises for checkin and traewelling_to_travelynx
2023-07-09 14:46:28 +02:00
Birte Kristina Friesel
b5723264a7
HAFAS station board: fix station name display
2023-07-09 07:07:31 +02:00
Derf Null
c9bae6fcee
journeys: simplify visibily check
2023-07-03 18:12:34 +02:00
Derf Null
a608ca6781
update ALL the copyright notices!
2023-07-03 17:59:25 +02:00
Derf Null
4dd2cc9d9e
show hours and minutes until arrival, not just minutes
2023-07-02 10:48:34 +02:00
Derf Null
66e8dcb925
Profile: remove unused compute_effective_visibility function
2023-06-30 19:58:37 +02:00
Derf Null
0e4bafafd8
Profile: refactor visibility checks
2023-06-30 19:58:12 +02:00
Derf Null
a73e2edc86
profile: use effective visibility from journey object
2023-06-29 21:54:25 +02:00
Derf Null
f794d3c0a4
profile: treat self as follower
2023-06-29 21:52:18 +02:00
Derf Null
00ee3de6c1
Journey->add_from_in_transit: return ID of added journey
2023-06-28 22:21:51 +02:00
Derf Null
bb43a2e8e3
journeys: return effective visibility
2023-06-27 21:50:28 +02:00
Derf Null
8cb0de1b70
compute effective visibility in database view
2023-06-26 20:53:08 +02:00
Derf Null
16237bfe21
use small stations database for some tests
2023-06-26 20:18:27 +02:00
Derf Null
0702a0edca
Move hash_password to Model/Users
2023-06-26 19:50:49 +02:00
Derf Null
05924f2c67
Login: return HTTP 400 on invalid password or unconfirmed account
2023-06-25 23:28:38 +02:00
Derf Null
e14966c488
Users->add: correctly specify default visibility
2023-06-25 11:09:51 +02:00
Derf Null
b44b770ec3
fine-graned visibility selection of history / past checkins
...
most notably, adds a 'history for followers only' mode
2023-06-24 21:25:14 +02:00
Derf Null
085d77a1fa
time to flush the name cache
2023-06-24 18:36:59 +02:00
Derf Null
ee6470e0d8
status card / profile: fix users being unable to see own travelynx-only status
2023-06-23 22:46:15 +02:00
Derf Null
c5957fbdfd
User: remove legacy public_level / is_public field
2023-06-23 22:43:41 +02:00
Derf Null
a249be1d8b
run webhook when updating checkin comment or visibility
2023-06-18 08:38:55 +02:00
Molly Miller
beb59221e7
Add app version to default stashed values.
...
This means that the version no longer needs to be passed to every version
manually, and is automatically populated in templates where the parameter is
not explicitly provided.
2023-06-12 20:48:01 +02:00
Derf Null
619646b533
warn when trying to check out at invalid unscheduled station
...
Closes #72
2023-06-08 10:20:13 +02:00
Derf Null
bdc05e0b8e
fix missing join condition in followers view
2023-06-04 22:59:22 +02:00
Derf Null
ee0480854f
show follower-only checkins and journeys when viewing own profile
2023-06-04 19:37:35 +02:00
Derf Null
ab04bc19b9
consistently return HTTP 404 on not found errors
2023-06-04 19:37:16 +02:00
Derf Null
c1635e24fb
use a separate bad_request page for CSRF errors
2023-06-04 19:25:24 +02:00
Derf Null
34665da2a0
do not accept follows / follow requests by default
2023-06-04 19:05:20 +02:00
Derf Null
42252ee96d
Account: add rel="me" to profile links
2023-06-04 18:56:43 +02:00
Derf Null
00eb6af1bd
expose follows / social interaction in frontend
2023-06-04 18:21:36 +02:00
Derf Null
0172f0ce8a
add profile editor
2023-06-04 14:28:04 +02:00
Derf Null
d4a6470141
Users: support notifications about pending follow requests
2023-06-03 10:42:14 +02:00
Derf Null
b2feb1b664
Users: Add unfollow action
2023-06-01 22:07:01 +02:00
Derf Null
9332f60a43
prepare for follow relations and follow-only checkins
2023-05-31 22:16:27 +02:00
Derf Null
aab9fa7fe2
Profile#user_status: use account.name, not just name
2023-05-29 14:45:02 +02:00
Derf Null
b3f36b750a
Profile#user_status: return 404 if the user does not exist
2023-05-29 14:44:10 +02:00
Derf Null
dadb94a473
Traveling: remove unused JSON import
2023-05-29 14:30:58 +02:00
Derf Null
7580497cea
get_user_status_json_v1: expose visibility
2023-05-24 21:41:51 +02:00
Derf Null
ac816c09b2
rename get_privacy_by_name to get_privacy_by, allow requests by uid
2023-05-24 21:36:06 +02:00
Daniel Friesel
68468379e5
user_status: request public json entry
2023-05-23 21:16:59 +02:00
Derf Null
9b83e1a8f1
/status/:user: respond to JSON
2023-05-21 19:57:56 +02:00
Derf Null
dbc5c38968
get_user_status_json_v1: add public flag to hide actionTime
2023-05-21 19:44:43 +02:00
Derf Null
2e10115072
user_status: return no status if visibility is insufficient
2023-05-21 19:26:30 +02:00
Derf Null
e4a07dc06c
journey: show times of intermediate stops, if available
2023-05-01 10:06:30 +02:00
Daniel Friesel
f681aa41db
Perl is hard
2023-04-06 15:16:52 +02:00
Daniel Friesel
3b6297b785
work: real_arr_ts may be undefined
2023-04-02 17:05:13 +02:00
Derf Null
852c7797b0
Update HAFAS polylines prior to checkout
...
In case of diversions, the polyline fetched at checkin time may no longer be
accurate. Request a new polyline prior to checkout to address this.
Closes #66
2023-04-01 18:05:32 +02:00
Derf Null
c3c7a0c78b
stationboard: add HAFAS support
2023-03-27 21:03:25 +02:00
Derf Null
3acee2b285
API: import: fix get_api_token signature
2023-03-26 15:55:33 +02:00
Derf Null
402fcc4d6f
move profile / public data to a separate controller
2023-03-13 21:06:53 +01:00
Derf Null
abc1e4e3a8
work: avoid race conditions with frontend when calling checkout
2023-03-10 17:18:08 +01:00
Derf Null
f79e34fb62
worker: select on arr and dep eva for all arr/dep updates
...
still missing (TODO): add_route_timestamps
2023-03-10 16:57:31 +01:00
Daniel Friesel
609d7b3ebc
remove unused journey_edit_mask attrs
2023-03-09 19:10:08 +01:00
Daniel Friesel
c0fb7c1b13
webfinger: adjust profile visibility
2023-03-04 13:23:19 +01:00
Daniel Friesel
5461326f01
always show /p/user if /status/user exists; only limit past journeys
2023-03-04 13:22:13 +01:00
Daniel Friesel
67dc1c203a
nvm -> dbf?hafas=1
2023-03-04 10:59:35 +01:00
Daniel Friesel
26814aa470
user status: add footer
2023-03-04 09:33:44 +01:00
Daniel Friesel
e1231b88e2
status/profile: re-add ability to show latest checkout, if desired
...
got lost in 1.30.0
2023-03-04 09:03:50 +01:00
Daniel Friesel
2406fc4efe
token: do not expose full checkin timestamp
2023-03-03 15:05:43 +01:00
Daniel Friesel
b725d7d52c
set default visibility to unlisted
2023-03-03 15:05:28 +01:00
Daniel Friesel
a3cc2456a7
Travelynx journey_details: token is added by template
2023-03-02 22:04:23 +01:00
Daniel Friesel
aa56023788
user_status redirect: check visibility independent of token
2023-03-02 21:54:17 +01:00
Daniel Friesel
6a734a094b
visibility_form: use visibility_str
2023-03-02 21:20:59 +01:00
Daniel Friesel
f0e991a90d
profile: respect profile visibility setting
2023-03-02 18:43:29 +01:00
Daniel Friesel
1c46f56b50
fix comment visibilitiy check
2023-03-02 18:34:01 +01:00
Daniel Friesel
792ab9fe23
journey details: require valid token if too old
2023-03-02 18:31:17 +01:00
Daniel Friesel
d35c49b55d
user status: only redirect to journey if journey is visible
2023-03-02 17:54:09 +01:00
Daniel Friesel
09a4f1ce0b
User->add: set default privacy level to 'private'
2023-03-01 22:02:48 +01:00
Daniel Friesel
77ac39f389
user status: pass token to journey on redirect
2023-03-01 17:59:20 +01:00
Daniel Friesel
ae42028a71
Journeys->get: allow filtering by departure timestamp
2023-03-01 17:58:58 +01:00
Daniel Friesel
ba483a9daf
journey: add token to share link if non-public
2023-02-28 19:45:27 +01:00
Daniel Friesel
6d261197e3
set visibility per journey (wip)
...
some odds and ends left to polish, but ready for testing
2023-02-27 22:14:54 +01:00
Daniel Friesel
fb3878665b
update ze copyright
2023-02-19 09:35:38 +01:00
Daniel Friesel
978c7b03c2
journey: add share button
2023-02-15 20:01:43 +01:00
Daniel Friesel
1e1c71cfd8
journey details: include delay and distance in og card
2023-02-14 21:31:46 +01:00
Daniel Friesel
192af42d04
DBDB: apps-bahn wagenreihung no longer exists
2023-02-13 18:27:26 +01:00
Daniel Friesel
3da22fc8f9
improve inconsistency list
2023-02-04 22:17:57 +01:00
Daniel Friesel
6b4a82da32
inconsistent journeys: link to journeys
2023-02-04 21:17:45 +01:00
Daniel Friesel
f115283cb8
account: implement immediate deletion
2023-01-22 13:07:59 +01:00
Daniel Friesel
3499311154
Move account deletion to Users model
2023-01-22 13:07:46 +01:00
Daniel Friesel
1c63574245
users: rename "add_user" to "add" and "get_data" to "get"
2023-01-22 12:44:19 +01:00
Daniel Friesel
8e94fcea5f
move token type to ID map from Travelynx.pm to Model/Users
2023-01-22 12:33:02 +01:00
Daniel Friesel
59e9a24aa6
move get_api_token to users model
2023-01-22 11:34:53 +01:00
Daniel Friesel
af82c46d57
get latets stations: remove duplicates
2023-01-22 10:32:06 +01:00
Daniel Friesel
3e2491a9bc
API documentation: do not perform database requests from template helpers
2023-01-21 08:36:25 +01:00
Daniel Friesel
9b205229a3
latest checkout stations: order by journey id rather than timestamp
2023-01-18 18:48:32 +01:00
Daniel Friesel
3f08f86ac2
migration: only select required fields
2023-01-18 18:36:11 +01:00
Daniel Friesel
e937324617
landing page: show past stops if geolocation is unavailable
2023-01-18 18:13:35 +01:00
Daniel Friesel
eb1ed1bb48
do not overwrite route timestamps when updating route data
2023-01-17 19:11:38 +01:00
Daniel Friesel
1be5d4d0b0
Journeys: perltidy
2023-01-15 20:29:30 +01:00
Daniel Friesel
4abc43b72e
change route/stop layout to [name, eva, {data}]
2023-01-15 16:37:32 +01:00
Daniel Friesel
e42b7030d0
update integritycheck to use internal station database
2023-01-15 06:48:06 +01:00
Daniel Friesel
9b57a74831
webfinger: remove superfluous acct: in response
2023-01-08 10:02:45 +01:00
Daniel Friesel
ad253e48e8
webfinger queries are prefixed with acct:
2023-01-08 10:01:51 +01:00
Daniel Friesel
04817690e8
... derp
2023-01-08 10:00:42 +01:00
Daniel Friesel
6c96626214
webfinger: obtain base urls
2023-01-08 09:58:58 +01:00
Daniel Friesel
7b2cd23c39
add webfinger "profile-page" support (for public profiles only)
2023-01-08 09:40:49 +01:00
Daniel Friesel
dbd9d9951f
decrease amount of traewelling get_status requests
2023-01-07 13:57:47 +01:00
Daniel Friesel
61b91fe4b2
log traewelling sync HTTP status to influxdb
2023-01-07 13:31:14 +01:00
Daniel Friesel
628bd319d6
work, traewelling: only push to influxdb in prod mode
2023-01-07 13:07:29 +01:00
Daniel Friesel
5c9adc4710
Traewelling: fix 'already checked in' error for API v1
2023-01-07 12:32:57 +01:00
Daniel Friesel
57a1ecbf76
traewelling checkin: add missing ibnr field to API payload
2023-01-07 12:29:56 +01:00
Daniel Friesel
04d096014e
Api: Fix 'uninitialized value' warning when no token is set
2023-01-03 10:12:53 +01:00
Daniel Friesel
cf7f993309
review: skip journeys with negative duration
2023-01-02 15:05:37 +01:00
Daniel Friesel
4c1ae6d045
influxdb command: directly write to db rather than stdout
2023-01-02 06:20:07 +01:00
Daniel Friesel
4b8fd09b27
move traewelling sync to a separate command
2023-01-02 05:59:38 +01:00
Daniel Friesel
c5969fc1dc
work: count errors
2022-12-30 19:49:17 +01:00
Daniel Friesel
dc53e4774b
review: shop travelynx version
2022-12-30 16:46:56 +01:00
Daniel Friesel
7dc1b80ece
work: separate durations for main and traewelling
2022-12-30 16:46:18 +01:00
Daniel Friesel
59f844103d
worker: optionally publish influxdb stats
2022-12-30 16:27:51 +01:00
Daniel Friesel
ccc93413a2
review: link to list of all single-trip checkins
2022-12-29 14:14:12 +01:00
Daniel Friesel
09463d7d11
influxdb: report total checkins rather than windows
2022-12-28 17:41:17 +01:00
Daniel Friesel
c5ac07c375
add influxdb command
2022-12-28 16:04:45 +01:00
Daniel Friesel
18bb069da3
review: fix percentage locale
2022-12-27 22:22:34 +01:00
Daniel Friesel
3fa9df942f
derp #2
2022-12-27 22:17:08 +01:00
Daniel Friesel
2eed83e02a
derp
2022-12-27 22:15:24 +01:00
Daniel Friesel
34a19ee1bf
top trips: handle return trips
2022-12-27 22:12:15 +01:00
Daniel Friesel
3156d5f372
review: add top and bottom trips
2022-12-27 22:04:09 +01:00
Daniel Friesel
9dfe1c60ab
review: hide blocks without data
2022-12-27 17:56:44 +01:00
Daniel Friesel
ed63cae012
year in review: further delay stats
2022-12-27 17:29:34 +01:00
Daniel Friesel
e586fd4020
compute_review: handle duplicate iris messages; german locale for numbers
2022-12-27 11:19:25 +01:00
Daniel Friesel
3abe6aed5c
it's a secret to everybody.
2022-12-27 11:07:16 +01:00
Daniel Friesel
73fa1a960c
work: Fix log invocation
2022-12-27 09:46:15 +01:00
Daniel Friesel
68bc276bff
connecting trains: fix warning when encountering unknown platforms
2022-12-26 20:47:43 +01:00
Daniel Friesel
d256a1956a
history: return 404 if no journeys have been logged for requested period
2022-12-26 16:50:39 +01:00
Daniel Friesel
f12bec530a
yearly/monthly history: return 404 for invalid dates
2022-12-26 15:35:33 +01:00
Daniel Friesel
e15778be0d
always store traewelling errors in debug mode
...
for the most part, they're not actionable. also, they're already available in
user logs.
2022-12-23 21:30:28 +01:00
Daniel Friesel
2534cae31f
work: not finding a departing train is not critical
2022-12-23 21:20:32 +01:00
Daniel Friesel
4b37560640
database migration: track previosu travelynx version; offer rollback hints
2022-12-12 22:35:08 +01:00
Daniel Friesel
2f7669a520
database IRIS sync: update ds100, name, lat, lon from IRIS DB
2022-12-12 20:21:44 +01:00
Daniel Friesel
54c46ac9f0
database: has-current-schema: check IRIS version
2022-12-12 20:13:07 +01:00
Daniel Friesel
aa4e408df8
change 'ignoring polyline' log severity to debug
2022-12-12 20:00:48 +01:00
Daniel Friesel
e91495775c
Journeys: Handle "Betriebsstelle nicht bekannt"
2022-12-12 19:57:14 +01:00
Daniel Friesel
fc9562f790
Improve "Betriebsstelle nicht bekannt" handling
2022-12-12 18:20:40 +01:00
Daniel Friesel
5de6dfb4e1
database: refactor schema/iris version check
2022-12-11 20:10:58 +01:00
Daniel Friesel
115e07f35c
move grep_unknown_stations to Stations model
2022-12-08 18:22:09 +01:00
Daniel Friesel
afedcef266
get name/ds100 from db and lat/lon from dict
...
result: significant performance improvement for stats generation
2022-12-07 22:46:04 +01:00
Daniel Friesel
2f9ba6e017
switch to internal station database; add out-of-service stations for old journeys
2022-12-07 19:42:48 +01:00
Daniel Friesel
d791825123
maintenance: remove polyline code. polylines were added more than two years ago
2022-12-04 22:07:20 +01:00
Daniel Friesel
e2b756f06e
integritycheck: process journeys row by row rather than at once
2022-12-04 21:04:43 +01:00
Daniel Friesel
37cb85e60d
integritycheck: also check station names in routes
2022-12-04 20:57:27 +01:00
Daniel Friesel
8f1bf57a65
rename missingstations command to integritycheck
2022-12-04 18:52:01 +01:00
Daniel Friesel
22069102a7
add missingstations maintenance command
2022-11-25 18:26:32 +01:00
Daniel Friesel
3851f05518
get_travel_distance: warn about removed stations (TODO: re-add them)
2022-11-24 21:26:45 +01:00
Daniel Friesel
90d2e0357c
show expected load of suggested connections, if available
2022-11-12 18:37:00 +01:00
Daniel Friesel
2f7bdf99e8
Traewelling: Use API v1 for checkin as well
2022-11-10 17:50:31 +01:00
Daniel Friesel
fd805597f5
HAFAS: filter out border stations
2022-11-09 18:17:05 +01:00
Daniel Friesel
d75ae5eb45
travelynx no longer requires XML::LibXML
2022-11-09 18:15:18 +01:00
Daniel Friesel
c26c8820f2
Switch to internal HAFAS client for connection details
2022-11-09 18:14:07 +01:00
Daniel Friesel
528f59dbd2
obtain polylines via mgate (T-S-DE-HAFAS)
2022-11-05 22:01:51 +01:00
Daniel Friesel
087d3871e1
Use Travel::Status::DE::HAFAS instead of traininfo.exe for journey details
2022-11-05 19:19:52 +01:00
Daniel Friesel
bde6346401
Traewelling: Use API v1 for login/logout. v1 checkin does not work yet.
2022-10-31 20:58:27 +01:00
Daniel Friesel
6f107754fb
get_connecting_trains: departure delay is relevant for connecting trains
2022-09-28 19:40:31 +02:00
Daniel Friesel
9f06b52a00
get_connecting_trains_p: leave loops when done
2022-09-28 19:37:20 +02:00
Daniel Friesel
f3ad5a5ef3
connecting trains: HAFAS: Handle delay and pass it to frontend
2022-09-25 16:54:06 +02:00
Daniel Friesel
e54130ad6e
optionally show local transit connections as well
2022-09-24 18:53:04 +02:00
Daniel Friesel
e83cfc5303
connections: show expected arrival at destination
2022-09-24 16:11:51 +02:00
Daniel Friesel
208b818d7c
HAFAS->get_json_p: accept cache and encoding parameters
2022-09-24 15:01:24 +02:00
Daniel Friesel
906a8a4f55
departure board: add footer
2022-09-23 19:25:17 +02:00
Daniel Friesel
8198c9fe23
Static: remove unused $travelynx_version
2022-09-23 19:22:22 +02:00
Daniel Friesel
4367085887
add legend (not referenced yet)
2022-09-23 17:35:02 +02:00
Daniel Friesel
6bae226d5c
always show 'run' icon when an interchange is short
2022-09-23 17:32:27 +02:00
Daniel Friesel
8c511f955c
Controller/Traveling: perltidy
2022-09-07 18:08:27 +02:00
Daniel Friesel
ffeeb11e5a
get_connecting_trains_p: remove trains with identical routes to current one
2022-09-05 21:06:05 +02:00
Daniel Friesel
0a7188d2e2
get_connecting_trains_p: use has_str_in_list helper more often
2022-09-05 21:00:20 +02:00
Daniel Friesel
3b9db4bfd4
get_connecting_trains_p: handle uninitialized arr_countdown
2022-09-03 17:58:12 +02:00
Daniel Friesel
dd151dc686
get_connecting_trains_p: we're doing boolean arithmetic here
...
(fixes 'useless use of numeric lt in void context' warning)
2022-09-03 16:58:54 +02:00
Daniel Friesel
2f2624a80a
get_connecting_trains: set lookahead to (expected arrival // now) + 40 minutes
2022-09-03 16:46:48 +02:00
Daniel Friesel
6aca1692e4
get_connecting_trains_p: increase lookahead to 60
2022-08-26 18:56:50 +02:00
Daniel Friesel
ff317c5c2a
show connections up to 40 minutes before arrival (rather than just 20)
2022-08-26 18:38:54 +02:00
Daniel Friesel
e0d2c42a39
sb_templates: name/key can be changed as well
2022-08-19 18:13:13 +02:00
marudor
dbe379a34d
use bahn.expert as new domain for marudor.de
2022-08-19 18:13:13 +02:00
Daniel Friesel
0e14df21d2
traewelling: more detailed error messages
2022-08-17 21:51:24 +02:00
Daniel Friesel
1a2ff8262d
... 'status' is a reserved renderer key. oops.
2022-08-04 14:07:25 +02:00
Daniel Friesel
d0c061569d
Traveling: Rename log_action to travel_action
2022-08-02 22:22:10 +02:00
Daniel Friesel
c348b2dff8
log requested station when throwing an ambiguous station name error
2022-08-01 20:03:34 +02:00
Daniel Friesel
d3c8daf84c
fetch connecting trains asynchronously
2022-08-01 10:07:24 +02:00
Daniel Friesel
c06d653195
Traveling: sort helpers <-> controllers
2022-07-30 10:47:18 +02:00
Daniel Friesel
de73024f1b
Passengerrights: section headers; perltidy
2022-07-30 10:45:18 +02:00
Daniel Friesel
aa19f4b00c
Api: section headers for helpers / controllers; perltidy
2022-07-30 10:42:21 +02:00
Daniel Friesel
0e01485952
Account: Move helpers to a separate section
2022-07-30 10:41:31 +02:00
Daniel Friesel
83954508f0
move get_connecting_trains helper to Traveling controller
2022-07-30 10:27:57 +02:00