Commit bba67217 authored by Birte Kristina Friesel's avatar Birte Kristina Friesel
Browse files

Allow journey editing, keep track of edited journey attributes

Provides a workaround for #2
parent 3ae6bda0
Loading
Loading
Loading
Loading
+10 −8
Original line number Diff line number Diff line
@@ -277,7 +277,7 @@ sub startup {
			return $self->app->dbh->prepare(
				qq{
					update user_actions
					set sched_time = to_timestamp(?), edited = 1
					set sched_time = to_timestamp(?), edited = edited | 1
					where id = ? and action_id = ?
				}
			);
@@ -291,7 +291,7 @@ sub startup {
			return $self->app->dbh->prepare(
				qq{
					update user_actions
					set real_time = to_timestamp(?), edited = 1
					set real_time = to_timestamp(?), edited = edited | 2
					where id = ? and action_id = ?
				}
			);
@@ -304,12 +304,12 @@ sub startup {
			return $self->app->dbh->prepare(
				qq{
			insert into user_actions (
				user_id, action_id, station_id, action_time,
				user_id, action_id, station_id, action_time, edited,
				train_type, train_line, train_no, train_id,
				sched_time, real_time,
				route, messages
			) values (
				?, ?, ?, to_timestamp(?),
				?, ?, ?, to_timestamp(?), ?
				?, ?, ?, ?,
				to_timestamp(?), to_timestamp(?),
				?, ?
@@ -665,6 +665,7 @@ qq{select * from pending_mails where email = ? and num_tries > 1;}
							name  => $status->{station_name}
						),
						DateTime->now( time_zone => 'Europe/Berlin' )->epoch,
						0,
						$train->type,
						$train->line_no,
						$train->train_no,
@@ -778,8 +779,8 @@ qq{select * from pending_mails where email = ? and num_tries > 1;}
							name  => $status->{station_name}
						),
						$now->epoch,
						undef, undef, undef, undef, undef,
						undef, undef, undef
						0,     undef, undef, undef, undef,
						undef, undef, undef, undef
					);
					if ( defined $success ) {
						$self->invalidate_stats_cache;
@@ -807,6 +808,7 @@ qq{select * from pending_mails where email = ? and num_tries > 1;}
						name  => $status->{station_name}
					),
					$now->epoch,
					0,
					$train->type,
					$train->line_no,
					$train->train_no,
@@ -1289,7 +1291,7 @@ qq{select * from pending_mails where email = ? and num_tries > 1;}
							? [ split( qr{[|]}, $raw_route ) ]
							: undef,
							completed => 0,
							edited    => $edited // 0,
							edited    => $edited << 8,
						}
					);
				}
@@ -1313,7 +1315,7 @@ qq{select * from pending_mails where email = ? and num_tries > 1;}
					$ref->{no}       //= $train_no;
					$ref->{messages} //= [ split( qr{[|]}, $raw_messages ) ];
					$ref->{route}    //= [ split( qr{[|]}, $raw_route ) ];
					$ref->{edited} += $edited;
					$ref->{edited} |= $edited;

					if ( $opt{verbose} ) {
						my @parsed_messages;
+15 −1
Original line number Diff line number Diff line
@@ -46,6 +46,7 @@ sub initialize_db {
				action_id smallint not null,
				station_id int references stations (id),
				action_time timestamptz not null,
				edited not null,
				train_type varchar(16),
				train_line varchar(16),
				train_no varchar(16),
@@ -66,7 +67,7 @@ sub initialize_db {
				token varchar(80) not null,
				primary key (user_id, type)
			);
			insert into schema_version values (0);
			insert into schema_version values (2);
		}
	);
}
@@ -92,6 +93,19 @@ my @migrations = (
			}
		);
	},

	# v1 -> v2
	sub {
		my ($dbh) = @_;
		return $dbh->do(
			qq{
				update user_actions set edited = 0;
				alter table user_actions
					alter column edited set not null;
				update schema_version set version = 2;
			}
		);
	},
);

sub run {
+12 −1
Original line number Diff line number Diff line
@@ -27,7 +27,9 @@
				<b><%= $journey->{sched_departure}->strftime('%d.%m.%Y') %></b>
			</p>
			% if ($journey->{edited}) {
				<p>Die Ankunfts- und Abfahrtsdaten wurden nachträglich bearbeitet.</p>
				<p>
					∗ Daten wurden manuell eingetragen
				</p>
			% }
			<table class="striped">
				<tr>
@@ -54,6 +56,9 @@
						% else {
							%= $journey->{sched_departure}->strftime('%H:%M');
						% }
						% if ($journey->{edited} & 0x0003) {

						% }
					</td>
				</tr>
				<tr>
@@ -76,6 +81,9 @@
						% else {
							%= $journey->{sched_arrival}->strftime('%H:%M');
						% }
						% if ($journey->{edited} & 0x0300) {

						% }
					</td>
				</tr>
				<tr>
@@ -92,6 +100,9 @@
					<td>
						∅ <%= sprintf('%.f', $journey->{kmh_route}) %> km/h
						(<%= sprintf('%.f', $journey->{kmh_beeline}) %> km/h)
						% if ($journey->{edited} & 0x0303) {

						% }
					</td>
				</tr>
				<tr>