Make the scouting webserver accept prescouting data

This patch makes it so that the webserver parses the pre-scouting bit
when actions are submitted. The web page doesn't currently support
this, but will in a future patch.

Signed-off-by: Philipp Schrader <philipp.schrader@gmail.com>
Change-Id: I8c324c1dfed37ca1ad391667ebb00d8a711f7846
diff --git a/scouting/webserver/requests/messages/submit_actions.fbs b/scouting/webserver/requests/messages/submit_actions.fbs
index a0f7913..d435913 100644
--- a/scouting/webserver/requests/messages/submit_actions.fbs
+++ b/scouting/webserver/requests/messages/submit_actions.fbs
@@ -70,4 +70,8 @@
     actions_list:[Action] (id:4);
     //TODO: delete this field
     collected_by:string (id: 5);
+    // If this is for pre-scouting, then the server should accept this
+    // submission. I.e. checking that the match information exists in the match
+    // list should be skipped.
+    pre_scouting:bool (id: 6);
 }
diff --git a/scouting/webserver/requests/requests.go b/scouting/webserver/requests/requests.go
index 25bb6b7..1f4fcd1 100644
--- a/scouting/webserver/requests/requests.go
+++ b/scouting/webserver/requests/requests.go
@@ -377,7 +377,9 @@
 	cycles := int64(0)
 	picked_up := false
 	lastPlacedTime := int64(0)
-	stat := db.Stats2023{TeamNumber: string(submitActions.TeamNumber()), MatchNumber: submitActions.MatchNumber(), SetNumber: submitActions.SetNumber(), CompLevel: string(submitActions.CompLevel()),
+	stat := db.Stats2023{
+		PreScouting: submitActions.PreScouting(),
+		TeamNumber:  string(submitActions.TeamNumber()), MatchNumber: submitActions.MatchNumber(), SetNumber: submitActions.SetNumber(), CompLevel: string(submitActions.CompLevel()),
 		StartingQuadrant: 0, LowCubesAuto: 0, MiddleCubesAuto: 0, HighCubesAuto: 0, CubesDroppedAuto: 0,
 		LowConesAuto: 0, MiddleConesAuto: 0, HighConesAuto: 0, ConesDroppedAuto: 0, LowCubes: 0, MiddleCubes: 0, HighCubes: 0,
 		CubesDropped: 0, LowCones: 0, MiddleCones: 0, HighCones: 0, ConesDropped: 0, SuperchargedPieces: 0, AvgCycle: 0, CollectedBy: string(submitActions.CollectedBy()),
@@ -825,6 +827,7 @@
 		request.ActionsList(&action, i)
 
 		dbAction := db.Action{
+			PreScouting: request.PreScouting(),
 			TeamNumber:  string(request.TeamNumber()),
 			MatchNumber: request.MatchNumber(),
 			SetNumber:   request.SetNumber(),
diff --git a/scouting/webserver/requests/requests_test.go b/scouting/webserver/requests/requests_test.go
index c2bc750..5561829 100644
--- a/scouting/webserver/requests/requests_test.go
+++ b/scouting/webserver/requests/requests_test.go
@@ -408,6 +408,7 @@
 				Timestamp: 4200,
 			},
 		},
+		PreScouting: false,
 	}).Pack(builder))
 
 	submitActions := submit_actions.GetRootAsSubmitActions(builder.FinishedBytes(), 0)
@@ -418,7 +419,8 @@
 	}
 
 	expected := db.Stats2023{
-		TeamNumber: "4244", MatchNumber: 3, SetNumber: 1,
+		PreScouting: false,
+		TeamNumber:  "4244", MatchNumber: 3, SetNumber: 1,
 		CompLevel: "quals", StartingQuadrant: 1, LowCubesAuto: 1,
 		MiddleCubesAuto: 0, HighCubesAuto: 0, CubesDroppedAuto: 1,
 		LowConesAuto: 0, MiddleConesAuto: 0, HighConesAuto: 0,
@@ -824,6 +826,7 @@
 				Timestamp: 1009,
 			},
 		},
+		PreScouting: true,
 	}).Pack(builder))
 
 	_, err := debug.SubmitActions("http://localhost:8080", builder.FinishedBytes())
@@ -860,6 +863,7 @@
 
 	expectedActions := []db.Action{
 		{
+			PreScouting:     true,
 			TeamNumber:      "1234",
 			MatchNumber:     4,
 			SetNumber:       1,
@@ -869,6 +873,7 @@
 			Timestamp:       2400,
 		},
 		{
+			PreScouting:     true,
 			TeamNumber:      "1234",
 			MatchNumber:     4,
 			SetNumber:       1,