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
44ced8056c
add_route_timestamps: change log severity to debug
...
we cannot do much about backend errors
2022-12-23 21:22:03 +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
6594d74edd
show expected utilization alongsie train route
2022-11-12 11:10:58 +01:00
Daniel Friesel
2f7bdf99e8
Traewelling: Use API v1 for checkin as well
2022-11-10 17:50:31 +01:00
Daniel Friesel
fa94447f10
only show important HIM messages
2022-11-10 17:46:43 +01:00
Daniel Friesel
df74dd5cf9
route: handle stops without real-time data
2022-11-09 19:28:48 +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
Daniel Friesel
1712694011
mov get_connection_targets helper to Journeys Model
2022-07-29 10:10:34 +02:00
Daniel Friesel
2da48e05be
move get_connecting_trains call from _checkeed_in to controller
2022-07-27 13:54:20 +02:00
Daniel Friesel
52ff756577
only show cancellation alternatives at original station
2022-07-26 15:36:45 +02:00
Daniel Friesel
1594ba9327
_checked_out: move get_connecting_trains call to controller
2022-07-26 15:36:22 +02:00
Daniel Friesel
960de27f0e
move get_connecting_trains out of _cancelled_departure template
2022-07-26 14:51:57 +02:00
Daniel Friesel
35338125bc
departure board: move get_connecting_trains call to controller
...
this is in preparation for turning it into a promise
2022-07-26 13:19:29 +02:00
Daniel Friesel
e0b824693f
Users: update DBF from 'show_realtime=1' to 'rt=1'
2022-07-26 12:48:08 +02:00
Daniel Friesel
bb6acc0c6b
Use async IRIS API for /s/
2022-07-26 10:41:44 +02:00
Daniel Friesel
116becccb0
.
2022-07-16 20:34:11 +02:00
Daniel Friesel
ff290c78e0
services: add marudor.de/regional
2022-07-16 13:55:36 +02:00
Daniel Friesel
8c15966bd1
dbf: link to currently checked in train
2022-07-15 22:26:50 +02:00
Daniel Friesel
c756f045b2
Users: use_external_services: correctly handle := 0
2022-07-15 21:01:34 +02:00
Daniel Friesel
e2214dfdcd
repair /offline.html
2022-07-15 19:27:47 +02:00
Daniel Friesel
5eab0c14f4
optionally link to external departure boards where sensible (WiP)
2022-07-11 22:09:26 +02:00
Daniel Friesel
4deb0bde0b
.
2022-07-11 22:08:02 +02:00
Daniel Friesel
af82619915
database: fix missing word in workflow example
2022-07-11 20:52:12 +02:00
Daniel Friesel
b3d06a8eb4
HAFAS: Borders may be annotated as (Gr) or ...(...)Gr
2022-07-10 20:07:02 +02:00
Daniel Friesel
86e0108649
maintenance: traewelling and webhooks TODO has been resolved a while ago
2022-07-10 10:42:15 +02:00
Daniel Friesel
105fc8a4a1
maintenance: show details when about to delete a large amount of UIDs
2022-07-10 10:42:05 +02:00
Daniel Friesel
a88dea059b
Traewelling Pull: Only fetch most recent status
...
This feature was recently added to Traewelling and should improve
efficiency on all sides.
2022-07-09 23:10:56 +02:00
Daniel Friesel
40ff05aefe
traewelling pull: skip API request for checked-in users
2022-07-09 19:39:01 +02:00
Daniel Friesel
7587cf4277
munin: add push sync stats
2022-07-09 16:16:08 +02:00
Daniel Friesel
e1a0a6e132
munin: add traewelling pull sync stats
2022-07-09 16:04:29 +02:00
Daniel Friesel
85f4e5b763
Traewelling: Custom log message für 409 Conflict; include raw error otherwise
2022-07-03 12:14:38 +02:00
Daniel Friesel
3082316697
Traewelling: Fix utf8 in log messages
2022-07-03 12:13:58 +02:00
Daniel Friesel
18c575f6fe
Traewelling: Use newly added EVA IDs for station mapping
2022-05-28 11:35:44 +02:00
Daniel Friesel
7f8e7a1a5f
limit number of concurrent traewelling requests to five per second
2022-05-27 12:04:51 +02:00
Daniel Friesel
5ff9e5c7a1
history map: allow filtering by train type
2022-04-02 18:14:21 +02:00
Daniel Friesel
5dfbdd8644
history map: add filter by date
2022-04-02 15:24:39 +02:00
Daniel Friesel
5cd25d442f
hafas: more generic fix for invalid XML
2022-03-30 18:29:00 +02:00
Daniel Friesel
13b4572a2f
limit password length to 10000 characters
...
that should be sufficient…
2022-03-07 18:12:43 +01:00
Daniel Friesel
e2e33de7e1
Traewelling: checkin: HTTP 401 is mostly harmless, too
...
401 typically indicates an expired login token
2022-03-06 23:13:51 +01:00
Daniel Friesel
01aec7e977
fix ajax refresh of public status card (trim .html suffix)
2022-02-20 21:45:51 +01:00
Daniel Friesel
209e291821
Move webhook database queries to Users model
2022-02-20 17:35:30 +01:00
Daniel Friesel
0d108e4334
work: move DB manipulation to InTransit helper
2022-02-20 13:30:51 +01:00
Daniel Friesel
15b510de32
worker: run maintenance every 10 hours
2022-02-19 16:32:43 +01:00
Daniel Friesel
01053f9d41
maintenance: Log deletion notification to stdout
2022-02-18 17:21:49 +01:00
Daniel Friesel
582bfbe661
Traewelling: more consistent error messages
2022-02-17 21:40:47 +01:00
Daniel Friesel
6e95180a3c
handle missing 'base_url' in travelynx.conf
2022-02-16 21:29:28 +01:00
Daniel Friesel
167b01fa42
link traewelling profile from travelynx profile; show traewelling status
2022-02-16 20:56:28 +01:00
Daniel Friesel
ef3252863e
Traewelling::get: Use named args
2022-02-16 20:39:49 +01:00
Daniel Friesel
8f906da9c2
traewelling: log an error if pull sync fails
2022-02-16 20:39:00 +01:00
Daniel Friesel
faf8952b87
Send inactivity notification prior to account deletion
2022-02-14 21:58:30 +01:00
Daniel Friesel
6fc21cac41
Use correct base URL when running a command job (work/maintenance)
2022-02-14 21:41:32 +01:00
Daniel Friesel
170c7e420e
Controller/Account: refactor mail notifications into separate functions
2022-01-19 19:25:03 +01:00
Daniel Friesel
1233796866
Traewelling: Use API v1 for pull sync
...
API v0 has occasional performance issues and is not a preferable
maintenance target
2022-01-08 14:36:31 +01:00
Daniel Friesel
71fa446800
traewelling sync: push first, then pull
2022-01-08 10:46:31 +01:00
Daniel Friesel
879b3b3815
fix caching fuckup introduced in 2e5a1b0a79
2021-12-12 17:24:24 +01:00
Daniel Friesel
e8054faf76
checkout: throw an error when called with empty $station
2021-12-12 17:13:51 +01:00
Daniel Friesel
2e5a1b0a79
DBDB: only use apps-bahn wagon order API for now
2021-12-12 16:38:26 +01:00
Daniel Friesel
ac3c70597d
Account: do not disclose denylist filename on open error
2021-10-30 10:03:40 +02:00
Daniel Friesel
ed0054fa50
Allow usage of custom hafas-rest-api instances
2021-10-30 10:02:58 +02:00
Daniel Friesel
3dc5575d5a
Switch from Geo::Distance (deprecated) to GIS::Distance
2021-10-23 22:20:41 +02:00
Daniel Friesel
a34a67b2f9
Add account add / delete CLI for sites with web registration disabled
2021-09-13 20:55:11 +02:00
Daniel Friesel
79b55c430d
allow registration to be disabled via config
2021-09-12 08:15:59 +02:00
Daniel Friesel
9d4f3f8ce1
Ensure that database timezone matches IRIS time zone
...
All travelynx and IRIS timestamps are Europe/Berlin. And the DateTime objects
know that they are Europe/Berlin. However, when inserting into a timestamp with
time zone column, Mojo::Pg or one of the backend DBI/DBD libraries does not
respect the time zone. So, UTC+1 or UTC+2 timestamps are treated as UTC+0,
resulting in major mayhem.
2021-09-03 20:24:54 +02:00
Daniel Friesel
39ab6e57d3
allow registration to be denied for certain IPs, e.g. known spammers
...
(yes, there are actually spambots flooding people with unsolicited
registration e-mails)
2021-08-20 22:52:02 +02:00
Daniel Friesel
37a0b8f2ab
Handle another case of funky HAFAS html ("foo <> bar")
2021-07-12 19:16:14 +02:00
Daniel Friesel
7b01cae7d5
Pass scheduled arrival and departure times to Traewelling API
...
This ensures unambiguous checkins for ring lines. See
eaf975a333
2021-07-01 19:44:09 +02:00
Daniel Friesel
255d0610f1
Journeys->add: Support complete routes, not just intermediate stops
2021-06-21 17:54:09 +02:00
Daniel Friesel
95674ee2ea
Add explanation to name change page
2021-06-14 19:30:58 +02:00
Daniel Friesel
1803a1723c
move user name validation to Users model
2021-06-13 08:48:08 +02:00
Daniel Friesel
581aae081d
Model/Users: Remove superfluous "check_if_" prefix from check functions
2021-06-13 06:20:21 +02:00
Daniel Friesel
6cee1e20ef
allow users to change their name
2021-06-12 19:00:42 +02:00
Daniel Friesel
08abde269b
user_status: Use first available dep_info
2021-06-12 17:33:16 +02:00
Daniel Friesel
9221ddce85
HAFAS: Work around yet another case of invalid XML
2021-06-05 14:17:49 +02:00
Daniel Friesel
16c1d12373
remove arbitrary HTML tags from HAFAS HIMMessage attribute content
2021-04-24 09:11:18 +02:00
Daniel Friesel
810945f8bc
munin: add pending_user_count
2021-04-20 23:10:22 +02:00
Daniel Friesel
aad2a53459
attempt to prevent registration spam
2021-04-20 21:59:17 +02:00
Daniel Friesel
aabf3104b1
munin: Do not crash on CET -> CEST DST transition
2021-04-05 09:46:28 +02:00
Daniel Friesel
1f3b3c742c
munin: fix date range calculation
...
TODO: handle CET -> CEST transition (there's a day each year where 2am does not
exist and DateTime does not like it)
2021-04-05 09:46:28 +02:00
Daniel Friesel
11727e0f99
*sigh* oh hafas, you so hafas
2021-03-29 20:58:35 +02:00
Daniel Friesel
0358cd51d5
also show wagon order when sections are unknown
2021-03-08 21:02:19 +01:00
Daniel Friesel
574e83d567
Move incomplete checkin removal from "maintenance" to "work" task
2021-03-07 19:06:21 +01:00
Daniel Friesel
a21826a055
Traewelling: Ignore HTTP 406 on checkin as well
...
HTTP 406 indicates that a user has not accepted the ToS / privacy policy
2021-02-21 21:13:09 +01:00
Daniel Friesel
9666a2c6bc
Do not warn on HAFAS "extra content at the end" (that's just an in-band 404)
2021-02-08 18:08:19 +01:00
Daniel Friesel
3f33341a2e
HAFAS: Remove all illegal linebreaks from attributes, not just the first
2021-02-06 18:06:09 +01:00
Daniel Friesel
6c015a91b8
Traewelling: Do not warn on 409 Conflict
2021-02-06 16:34:03 +01:00
Daniel Friesel
9223ba5fa1
fall back to apps-bahn if ist-wr does not know about a train
2021-02-06 12:31:35 +01:00
Daniel Friesel
5b1841ccce
HAFAS: Handle <br> tags in HTML attributes
2021-02-06 12:13:25 +01:00
Daniel Friesel
0088f11eb0
Remove workaround for https://github.com/Traewelling/traewelling/issues/72
...
Issue has been fixed
2021-02-02 18:20:49 +01:00
Daniel Friesel
5bef0bdda9
Switch to a more performant wagon order backend
2021-02-02 18:17:45 +01:00
Daniel Friesel
a4ff5e8ad8
Switch to AGPL3+
2021-01-29 18:32:13 +01:00
Daniel Friesel
db39b2a177
Handle invalid HAFAS XML containing "Wagen \d+ & \d+"
2021-01-05 22:27:46 +01:00
Daniel Friesel
5e29b99d61
remove superfluous ->app call
2020-12-17 20:58:47 +01:00
Daniel Friesel
8b86d0680a
Helper/IRIS: fex error message encoding (use utf8)
2020-12-09 21:12:10 +01:00
Daniel Friesel
2ee5332ee5
warn if a connecting train may not be reached
2020-12-07 19:44:18 +01:00
Daniel Friesel
2613fc0e58
use stats-enabled list view for year list as well
2020-12-03 22:15:09 +01:00
Daniel Friesel
a5ab4fa6a8
regularly generate statistics in the background
2020-12-03 21:42:17 +01:00
Daniel Friesel
77ecd6d034
move statistics cache to a separate model class
2020-11-28 21:03:51 +01:00
Daniel Friesel
b70ecc7c7c
Add a bunch of licensing data
2020-11-27 22:12:56 +01:00
Daniel Friesel
0addce7bff
month overview: distinguish between no stats and no journeys
2020-11-21 15:39:21 +01:00
Daniel Friesel
ccfdd8007e
testing a more organized history navigation
2020-11-21 15:34:06 +01:00
Daniel Friesel
bed4ebe4cc
another log level adjustment
2020-11-09 22:58:56 +01:00
Daniel Friesel
c8832e410e
add_route_timestamps: adjust log severity
...
we can't do anything about "trainlink not found", so it really shouldn't be
a warning.
2020-11-08 18:44:32 +01:00
Daniel Friesel
5e96745121
HAFAS: Distinguish between disguised HTTP 404 and invalid XML
2020-11-06 11:23:22 +01:00
Daniel Friesel
c70280a935
Merge HAFAS XML fix from DBF
2020-10-25 16:35:43 +01:00
Daniel Friesel
dc7bc5a5f4
work: Fix travelynx->Traewelling sync when several users are checked in
...
I made a derp
2020-10-19 19:33:40 +02:00
Daniel Friesel
8123797cf1
Traewelling: use the recently added login token expiry field
2020-10-17 11:03:47 +02:00
Daniel Friesel
e61550f751
Move remaining journeys queries to journeys model class
2020-10-11 21:08:22 +02:00
Daniel Friesel
8abb8206ce
maintenance: delete webhooks and traewelling entries
2020-10-11 20:10:14 +02:00
Daniel Friesel
b1348c7d4a
move in_transit queries to an InTransit model class
2020-10-11 19:38:01 +02:00
Daniel Friesel
b6330217f0
calculate tripid from trainsearch.exe.
...
Removes the need for an additional transport.rest request.
2020-10-11 12:04:33 +02:00
Daniel Friesel
fffe8dcdfa
Switch to transport.rest v5 for polyline requests
2020-10-11 11:34:39 +02:00
Daniel Friesel
4575beb6ff
HAFAS: Turn backend warnings into info messages
...
We can't do anything about them, after all
2020-10-08 20:05:31 +02:00
Daniel Friesel
3ca18af9b6
make unknown stations warning more helpful
2020-10-08 20:04:25 +02:00
Daniel Friesel
e8ff730320
Stats: Fix handling of negative cumulative arrival/departure delays
2020-10-06 19:28:00 +02:00
Daniel Friesel
9acc9822e4
also allow regionalExpress, just to be safe
2020-10-04 13:09:47 +02:00
Daniel Friesel
9ad3b3c9e8
Traewelling can't seem to decide on date formats
2020-10-04 13:05:06 +02:00
Daniel Friesel
ce88fe440c
HAFAS "national" trips are also trains
2020-10-04 13:04:52 +02:00
Daniel Friesel
c56d126d89
Traewelling: Add missing "Accept: application/json" header to API requests
2020-10-04 12:59:08 +02:00
Daniel Friesel
e13b5afe4f
Traewelling checkin: Handle invalid / revoked bearer tokens
2020-10-04 12:47:09 +02:00
Daniel Friesel
562dd7ccae
add toot and tweet settings to traewelling checkin
2020-10-04 12:27:20 +02:00
Daniel Friesel
80b02a47b4
Traewelling: Warn when bearer token is about to expire
2020-10-04 10:38:09 +02:00
Daniel Friesel
5e2813e36e
Traewelling: note that traewelling.de doesn't yet return statusId on checkin
2020-10-04 10:35:04 +02:00
Daniel Friesel
2cc31422b7
sync travelynx -> Träwelling: add comment
2020-10-03 14:33:56 +02:00
Daniel Friesel
b0de6628b3
ooopsie
2020-10-01 19:55:06 +02:00
Daniel Friesel
8d53f7f5c8
log error when trip_id is missing
2020-10-01 19:52:11 +02:00
Daniel Friesel
64c9b5b160
traewelling checkin: the time limitation isn't needed
2020-10-01 19:48:18 +02:00
Daniel Friesel
07e0f89706
allow checking into traewelling
2020-10-01 19:36:35 +02:00
Daniel Friesel
89e709d8d5
Allow linking a Träwelling account, auto-sync Träwelling→travelynx
...
travelynx→Träwelling is still work-in-progress
Squashed commit of the following:
commit 97faa6e2e6c8d20fba30f2d0f6e78187ceeb72e6
Author: Daniel Friesel <derf@finalrewind.org>
Date: Wed Sep 30 18:50:05 2020 +0200
improve traewelling log and tx handling
commit 487d7dd728b9d45b731bdc7098cf3358ea2e206e
Author: Daniel Friesel <derf@finalrewind.org>
Date: Wed Sep 30 18:02:41 2020 +0200
add missing traewelling template
commit 0148da2f48d9a52dcddc0ab81f83d8f8ac3062ab
Author: Daniel Friesel <derf@finalrewind.org>
Date: Wed Sep 30 18:02:35 2020 +0200
improve traewelling pull sync
commit 4861a9750f9f2d7621043361d0af6b0a8869a0df
Author: Daniel Friesel <derf@finalrewind.org>
Date: Tue Sep 29 22:14:24 2020 +0200
wip checkin from traewelling
commit f6aeb6f06998a2a7a80f63a7b1b688b1a26b66bd
Author: Daniel Friesel <derf@finalrewind.org>
Date: Tue Sep 29 18:37:53 2020 +0200
refactor traewelling integration. login and logout are less of a hack now.
checkin and checkout are not supported at the moment.
2020-09-30 19:12:29 +02:00
Daniel Friesel
952740969c
add opengraph metadata output
2020-09-21 20:31:08 +02:00
Daniel Friesel
362db912fa
add twitter card to public journey view
2020-09-21 20:15:01 +02:00
Daniel Friesel
870e4333a8
improve promise->reject error messages
2020-09-21 19:47:54 +02:00
Daniel Friesel
e27e37190e
add explicit empty return statements to promise handlers
2020-09-20 10:01:03 +02:00
Daniel Friesel
2788f97f32
get_stationinfo_p: cache negative replies
2020-09-20 09:55:28 +02:00
Daniel Friesel
874de11298
handle rejected promises; do not accidentally duplicate rejections
2020-09-10 21:20:26 +02:00
Daniel Friesel
eb93ee40c9
passengerrights: fix a typo
2020-09-08 21:15:46 +02:00
Daniel Friesel
4171fe22ca
add DBDB helper for wagonorder and stationinfo
2020-09-06 12:55:25 +02:00
Daniel Friesel
a3149adddd
Fix checkin via API. Broken by 717cc18a40
...
Closes #44
2020-09-05 21:51:52 +02:00
Daniel Friesel
7eb5f967f2
profile: limit history to four weeks by default
2020-09-04 18:38:35 +02:00
Daniel Friesel
482fa975b5
add public profile page and public journey details
2020-09-03 22:27:50 +02:00
Daniel Friesel
47b957361e
Move most journey code to newly introduced Journey model
2020-08-16 21:20:23 +02:00
Daniel Friesel
d9624ee308
Remove now-useless include
2020-08-15 08:25:24 +02:00
Daniel Friesel
717cc18a40
Move get_departures to a separate IRIS helper
2020-08-06 16:04:12 +02:00
Daniel Friesel
adaf65dc63
HAFAS: Error handling, perltidy
2020-07-28 14:19:55 +02:00
Daniel Friesel
56c275875c
Move HAFAS helpers to a separate Helper module
2020-07-28 13:01:44 +02:00
Daniel Friesel
f08bdaca5c
Move user model to a separate module
2020-07-27 18:53:22 +02:00
Daniel Friesel
f5fd6d42e1
Add CSV Export
2020-04-19 18:26:20 +02:00
Daniel Friesel
346f1474bb
commute stats: attempt to weed out non-work stations for auto-fill
2020-04-19 17:49:14 +02:00
Daniel Friesel
5ce4bc6995
improve commute station heuristic
...
Select top station on work days (Mo .. Fr) with arrival < 13:00 or
departure >= 13:00.
2020-04-19 17:40:39 +02:00
Daniel Friesel
a3cfa598a6
use german locale in epoch_to_dt helper
2020-04-19 17:09:02 +02:00
Daniel Friesel
94ea5a089f
Commute stats: count days, not journeys
2020-04-19 17:03:02 +02:00
Daniel Friesel
0a87135e35
get_top_destinations: order by count desc
...
order is ascending by default, resulting in flop instead of top destinations.
2020-04-19 16:50:50 +02:00
Daniel Friesel
94932c4102
add commute stats. not linked from nav yet.
2020-04-19 16:49:31 +02:00
Daniel Friesel
a3ea4fde95
fix a typo
2020-04-16 16:52:19 +02:00
Daniel Friesel
da05a0e981
maintenance: backpropagate polylines to route entries using pre-1.9.4 format
2020-04-16 16:29:34 +02:00
Daniel Friesel
ac2a23c3fa
Fix occasionally incorrect TripIDs (and thus incorrect polylines)
...
Until now, tripIDs were cached based on station and departure timestamp.
These are identical for any two trains departing at the same time at the same
station, leading to one of those getting being assigned a wrong tripID.
From now on, only the JSON reported by transport.rest is cached -- tripIDs
are always recomputed based on it.
2020-04-16 09:47:31 +02:00
Daniel Friesel
d66cf00d9d
log train number when encountering a timestamp error
2020-04-16 04:55:04 +02:00
Daniel Friesel
e5f273ced3
ignore missing timestamps when performing a force checkout
2020-04-16 04:54:41 +02:00
Daniel Friesel
4cc510d710
use polyline when computing monthly/yearly distance travelled
...
Closes #40
2020-04-14 18:22:49 +02:00
Daniel Friesel
6826c03386
show select past departures in checkin suggestion list
...
Previously, for each destination, up to two departures between now and
now + 40 minutes were shown.
When performing a fresh checkin (i.e., the has not logged a journey in the
past few minutes and is not currently checked in), the departure list now
additionally contains all departures between now - 5 minutes and now.
When checking in from a train (i.e., the user has recently checked out at
the station or is still checked in), it additionally contains all departures
between arrival time and now.
Closes #33
2020-04-14 17:45:09 +02:00
Daniel Friesel
56f355741c
Well, that was stupid
2020-03-14 14:57:30 +01:00
Daniel Friesel
e7a6cfa931
Correctly encode non-ASCII e-mail content. Fixes spamfilter issues.
...
New dependency: MIME::Entity
2020-03-14 14:56:02 +01:00
Daniel Friesel
871a44f15e
Do not hardcode From mail address
2020-03-13 18:28:13 +01:00
Daniel Friesel
e6b74ef087
show QoS pictograms in connection list
2020-03-03 18:29:37 +01:00
Daniel Friesel
d7f251e51f
public user status: show polyline if available
2020-02-26 18:43:34 +01:00
Daniel Friesel
3c897ad62a
polyline sanity check: Handle border stations and incomplete IRIS routes
2020-02-25 21:25:53 +01:00
Daniel Friesel
1d2b37f849
Ignore polylines which do not agree with IRIS route
2020-02-25 17:55:19 +01:00
Daniel Friesel
5c05ed609f
journey details: show route on map if available
2020-02-23 19:04:05 +01:00
Daniel Friesel
82f043e734
Move map data generation to a global helper function
2020-02-23 18:35:56 +01:00
Daniel Friesel
a15dc1791c
calculate journey distance using polyline, if available
2020-02-21 23:31:50 +01:00
Daniel Friesel
0011e4a18d
user_status: Improve TS lookup performance
2020-02-20 20:58:58 +01:00
Daniel Friesel
57f686b688
allow showing past journeys on shared status page
2020-02-19 20:58:38 +01:00
Daniel Friesel
2652ea6bab
auto-checkout for cancelled departure: guard against destination changes
2020-02-18 17:38:53 +01:00
Daniel Friesel
cc7439dd5e
handle departure cancellation after checkin
2020-02-17 21:13:07 +01:00
Daniel Friesel
a1865fa69e
add privacy setting for showing history and latest arrival timestamp
2020-02-14 16:29:44 +01:00
Daniel Friesel
6cbbc2b16f
avoid stale data when marking cancelled arrivals
2020-02-13 18:35:42 +01:00
Daniel Friesel
a830acc698
Handle cancelled arrival at checkout when departure at checkin is not cancelled
2020-02-12 20:38:24 +01:00
Daniel Friesel
ee38d48a55
Add another fix for invalid HAFAS XML
2020-02-12 20:35:27 +01:00
Daniel Friesel
7564ec34db
munin: Add polyline compression ratio
2020-02-10 20:06:55 +01:00
Daniel Friesel
3ddd1a1cf4
Improve map performance by passing actual polylines for train routes
2020-02-07 23:19:01 +01:00
Daniel Friesel
c2e0f377be
maintenance: consider station renames whan backpropagating polylines
2020-02-06 17:54:23 +01:00
Daniel Friesel
0457a53f65
maintenance: only fetch polylines from journeys which were not edited
2020-02-04 21:23:22 +01:00
Daniel Friesel
eb3f4aed05
allow checkin and checkout station to be edited
2020-02-01 16:15:20 +01:00
Daniel Friesel
5439dbad34
Fix cancellation line in journey view.
...
Broken by 993f6be6c9
2020-02-01 14:28:10 +01:00
Daniel Friesel
a29568711f
fix uninitialized value warning when handling odd trains (trains without type)
2020-02-01 10:59:46 +01:00
Daniel Friesel
aa7a7db2bc
map: show polylines by default
2020-01-31 18:16:00 +01:00
Daniel Friesel
7e92e6b5d4
retroactively add polylines to non-polyline journeys
2020-01-30 18:06:04 +01:00
Daniel Friesel
dadb0f6637
map: improve polyline duplicate detection
2020-01-29 19:54:32 +01:00
Daniel Friesel
993f6be6c9
map: set bounds on stations; move polyline feature to staging
2020-01-29 18:48:58 +01:00
Daniel Friesel
fca6a5df6c
journey_sanity_check: handle duration == 0
2020-01-28 20:01:00 +01:00
Daniel Friesel
297718603c
munin: return number of stored polylines
2020-01-27 20:33:35 +01:00
Daniel Friesel
b47a29d484
Store journey polylines in DB
...
Squashed commit of the following:
commit d60c7d3c98d88a8f5b0e3ced6c11b56053e1e44b
Author: Daniel Friesel <derf@finalrewind.org>
Date: Mon Jan 27 20:22:46 2020 +0100
fix bugs related to users without past journeys
commit 707fcc937ac7f6bc3dc29024273f5e74963f7f15
Author: Daniel Friesel <derf@finalrewind.org>
Date: Mon Jan 27 20:19:14 2020 +0100
work around Cache::file turning floats into strings
commit 55831121eb30bc30ed20134bbb48e4bee9772feb
Author: Daniel Friesel <derf@finalrewind.org>
Date: Mon Jan 27 19:43:29 2020 +0100
store journey polylines for later use
commit 1971d511037ff2b8fbc9699cb98e4f8fd51261e5
Author: Daniel Friesel <derf@finalrewind.org>
Date: Sat Jan 25 16:49:48 2020 +0100
set preliminary database schema for polyline storage.
deduplication will follow at a later stage
2020-01-27 20:32:15 +01:00
Daniel Friesel
47171500b7
fix bugs related to users without past journeys
2020-01-27 20:25:02 +01:00
Daniel Friesel
cc25a56864
Api: Import: Set correct route key for add_journey
2020-01-26 16:04:08 +01:00
Daniel Friesel
21234707fc
add_journey: allow up to 99 journeys per 24 hours
2020-01-26 15:31:01 +01:00
Daniel Friesel
d7c69acf41
import API: route -> intermediateStops
2020-01-26 10:50:21 +01:00
Daniel Friesel
ba62df34ea
validate_journey: handle 0 timestamps
2020-01-26 10:48:14 +01:00
Daniel Friesel
c31254e996
import API: Add deprecated field, remove development check
2020-01-26 10:47:51 +01:00
Daniel Friesel
1723f8c1fb
import API: invalidate stats cache after adding a journey
2020-01-26 10:08:46 +01:00
Daniel Friesel
ce6237b9fb
status API: nextStops -> intermediateStops; documentation
2020-01-26 09:59:45 +01:00
Daniel Friesel
3e9807b393
map, journey view: handle renamed stations
2020-01-25 15:46:42 +01:00
Daniel Friesel
1028e47a35
map: list skipped journeys
2020-01-25 14:55:51 +01:00
Daniel Friesel
ee1285e8fa
map: support multiple polyline groups with different colors
2020-01-25 14:41:33 +01:00
Daniel Friesel
8157f38854
JSON Status API: Add experimental and undocumented nextStops key
2020-01-23 18:18:50 +01:00
Daniel Friesel
75363c35cc
work: Fix race condition
...
When a user changes their destination station or checks into a new train
while work is updating data for their in_transit entry, values for no longer
valid database entrie would be entered.
2020-01-23 17:14:01 +01:00
Daniel Friesel
cda8e53b34
has_wagonorder: Fix promise result mixup
2020-01-22 20:18:37 +01:00
Daniel Friesel
9232cdaa5f
Return HTTP 404 for unknown journeys
2020-01-19 19:21:14 +01:00
Daniel Friesel
2764826da0
/journey/ 🆔 verify that id is numeric
...
As a side effect, this turns the response of GET /journey/edit (which should
never happen in the first place) from an exception into a 404 error (#36 )
2020-01-19 19:15:53 +01:00
Daniel Friesel
243302b9bb
Fix IOLoop crashes caused by using log->warning instead of log->warn
...
The issue manifested itself by the ioloop using 100%cpu without making any
progress.
2020-01-15 22:13:20 +01:00
Daniel Friesel
263fe6da63
do not store wagonorder error results in database
2020-01-15 21:48:50 +01:00
Daniel Friesel
e8b610f3e6
fetch trip ID when checked in
2020-01-08 18:42:17 +01:00
Daniel Friesel
172c8a3d00
move old station names to external JSON as well
2020-01-06 18:24:28 +01:00
Daniel Friesel
8a73a65656
Switch back to JSON::XS for decoding
2020-01-06 18:03:50 +01:00
Daniel Friesel
f99e069928
Move ICE names to a separate JSON file
2020-01-06 17:59:40 +01:00
Markus Heinrich
d1c005606c
remove unnecessary whitespace
2020-01-06 11:22:03 +01:00
Daniel Friesel
62b68b5010
map ICE train numbers to names where possible
2020-01-04 18:48:46 +01:00
Daniel Friesel
a9a7fa4492
Release Travel API
2019-12-31 13:27:14 +01:00
Daniel Friesel
61889603f7
Checkin API: error out if fromStation / toStation are ambiguous
2019-12-30 01:31:26 +01:00
Daniel Friesel
5435f34aa1
Set travelynx UserAgent for webhook requests
2019-12-29 23:06:51 +01:00
Daniel Friesel
6fde013585
Strip newline from version string
2019-12-29 23:06:39 +01:00
Daniel Friesel
f8436b9b4b
perltidy
2019-12-28 15:01:21 +01:00
Knuspel
d8b46dff89
Added links for old/new station names.
2019-12-28 14:35:07 +01:00
Daniel Friesel
d9126b927f
fix connections display
2019-12-26 22:48:50 +01:00
Daniel Friesel
fe6340abeb
Handle undefined user data in conncetion suggestion with no previous journey
...
Closes #30
2019-12-26 21:39:24 +01:00
Daniel Friesel
f9f1eec499
Use EVA IDs instead of travelynx-internal station IDs. Not 100% tested yet.
2019-12-23 22:57:45 +01:00
Daniel Friesel
c6634b4097
maintenance: remove checkins which were entered more than 48 hours ago
2019-12-20 18:56:57 +01:00
Daniel Friesel
e7f278574f
more travel API documentation
2019-12-20 18:33:59 +01:00
Daniel Friesel
11a2e94a04
travel API: more helpful errors on invalid input
2019-12-20 16:39:15 +01:00
Daniel Friesel
bd372d57e2
Travel API: Add "deprecated" field
2019-12-20 16:23:41 +01:00
Daniel Friesel
ebb7c22a4b
checkin api: only set comment if checkin was successful
2019-12-20 16:18:32 +01:00
Daniel Friesel
e0a2b9aa26
save all the wagon orders we can get
2019-12-19 20:16:10 +01:00
Daniel Friesel
b0ddada5d1
munin: Add 'currently checked in' counter
2019-12-19 19:22:56 +01:00
Daniel Friesel
69f961a23c
disable import and checkin API endpoints in production mode
2019-12-19 19:20:06 +01:00
Daniel Friesel
f895d34f31
undo: pass UID to invalidate_stats_cache
2019-12-19 18:18:26 +01:00
Daniel Friesel
c8695ecb1c
travel, import API: Verify that payload is a hash
2019-12-17 20:41:36 +01:00
Daniel Friesel
934a9ac21a
api/import: More helpful errors, fix "lax" support
2019-12-17 20:09:02 +01:00
Daniel Friesel
ae21896982
API: Add lax option
2019-12-17 20:01:39 +01:00
Daniel Friesel
9adec3ee8d
remove debug output
2019-12-16 22:17:40 +01:00
Daniel Friesel
bb22915fc3
Fix has_wagonorder_p logic. request success ≠ result success!
2019-12-16 22:15:37 +01:00
Daniel Friesel
cabf159f46
Handle Berlin Ringbahn and other transfer-at-destination trains
...
Requires Travel::Status::DE::IRIS v1.38 (not released yet)
2019-12-15 13:42:11 +01:00
Daniel Friesel
7ae60f2ea4
Travel API: comment support
2019-12-14 23:46:36 +01:00
Daniel Friesel
46fc64de48
Add travel (checkin/checkout/undo) API
2019-12-14 21:53:23 +01:00
Daniel Friesel
5fe4174feb
Add API entry point for journey import
2019-12-14 20:46:02 +01:00
Daniel Friesel
ba97fd2a3c
do not insert duplicate wagongroups
2019-12-13 20:37:51 +01:00
Daniel Friesel
f6bff01f76
save wagongroups if available
2019-12-13 17:28:52 +01:00
Daniel Friesel
b211e0842a
permanently store wagon numbers and types when available
2019-12-12 19:21:39 +01:00
Daniel Friesel
e6160d75de
show wagon order for regional trains too, if available
2019-12-11 21:36:41 +01:00
Daniel Friesel
315a94affe
allow a journey's cancellation status to be edited
...
Closes #27
2019-12-08 19:46:45 +01:00
Daniel Friesel
561ff4574b
Allow status visibility to be limited to travelynx users
2019-12-08 11:06:17 +01:00
Daniel Friesel
402a5597f5
Account: unset public_comment when public_status is disabled
2019-12-08 10:32:22 +01:00
Daniel Friesel
07ee4d216a
add hash tables for is_public and journey edited bitmasks
2019-12-08 10:29:25 +01:00
Daniel Friesel
fb126c6928
optionally show journey comment in public user status
...
Closes #19
2019-12-06 21:44:31 +01:00
Daniel Friesel
094c536eb4
Allow comments to be entered while still in transit
2019-12-06 21:40:51 +01:00
Daniel Friesel
119f0a6b7d
Do not show cancelled journeys without substitute in passengerrights list
2019-11-27 21:09:49 +01:00
Daniel Friesel
0e2e8cd78e
history map: Add checkbox to display manually added journeys
2019-11-27 18:26:15 +01:00
Daniel Friesel
4f0fee7783
show cancelled trains in connections list
2019-11-25 21:18:57 +01:00
Daniel Friesel
613f7d6087
Passengerrights: Fix typo
2019-11-24 20:32:24 +01:00
Daniel Friesel
b3b0a055b9
improve get_user_travels performance, most notably when rendering map
...
only create DateTime objects when needed
2019-11-24 20:29:52 +01:00
Daniel Friesel
8aced49bc3
Log unknown route entries on checkout
2019-11-22 17:59:50 +01:00
Daniel Friesel
57f47d2a3c
allow routes to be edited after recording a journey
2019-11-20 17:41:21 +01:00
Daniel Friesel
b80613b8a8
allow route input when adding journeys manually ( #26 )
2019-11-19 19:46:39 +01:00
Daniel Friesel
13e59b3aa1
add journey: make realtime data optional (default to schedule data)
...
Closes #25
2019-11-18 21:02:57 +01:00
Daniel Friesel
783a540cb0
history map: show time range; handle users with no journeys
2019-11-16 23:47:18 +01:00
Daniel Friesel
e0187c5308
history map: Do not show route for manually added journeys
2019-11-16 23:46:45 +01:00
Daniel Friesel
cea4b71ca3
history map: skip duplicates earlier
2019-11-16 21:24:35 +01:00
Daniel Friesel
4f2eac9cef
map_history: uniq_by_route did not consider the actual passenger route, scrap it
2019-11-16 16:03:03 +01:00
Daniel Friesel
733fe2d853
map: add legend, link to history map from history page
2019-11-16 15:57:09 +01:00
Daniel Friesel
77e4998708
move station -> location map to generic helper
2019-11-16 15:24:16 +01:00