diff pkg/controllers/importqueue.go @ 1194:7db850de0952

Added a signer who makes the final decison on an import. Generate a log entry when the final decison is made.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Sun, 18 Nov 2018 18:29:25 +0100
parents 58acc343b1b6
children 486d66a9565c
line wrap: on
line diff
--- a/pkg/controllers/importqueue.go	Fri Nov 16 18:35:09 2018 +0100
+++ b/pkg/controllers/importqueue.go	Sun Nov 18 18:29:25 2018 +0100
@@ -22,6 +22,7 @@
 	"strconv"
 	"strings"
 
+	"gemma.intevation.de/gemma/pkg/auth"
 	"gemma.intevation.de/gemma/pkg/imports"
 	"gemma.intevation.de/gemma/pkg/models"
 	"github.com/gorilla/mux"
@@ -35,7 +36,8 @@
   state::varchar,
   enqueued,
   kind,
-  username
+  username,
+  signer
 FROM waterway.imports
 `
 
@@ -167,6 +169,7 @@
 			&it.Enqueued,
 			&it.Kind,
 			&it.User,
+			&it.Signer,
 		); err != nil {
 			return
 		}
@@ -295,13 +298,18 @@
 SELECT state = 'pending'::waterway.import_state, kind WHERE id = $1`
 
 	reviewSQL = `
-UPDATE waterway.imports SET state = $1::waterway.import_state
-WHERE id = $2`
+UPDATE waterway.imports SET
+  state = $1::waterway.import_state,
+  signer = $2
+WHERE id = $3`
 
 	deleteImportDataSQL = `SELECT waterway.del_import($1)`
 
 	deleteImportTrackSQL = `
 DELETE FROM waterway.track_imports WHERE import_id = $1`
+
+	logDecisionSQL = `
+INSERT INTO waterway.import_logs (import_id, msg) VALUES ($1, $2)`
 )
 
 func reviewImport(
@@ -358,7 +366,16 @@
 		}
 	}
 
-	if _, err = tx.ExecContext(ctx, reviewSQL, state, id); err != nil {
+	// Log the decision and set the final state.
+	session, _ := auth.GetSession(req)
+	who := session.User
+
+	if _, err = tx.ExecContext(ctx, logDecisionSQL, id,
+		fmt.Sprintf("User '%s' %s import %d.", who, state, id)); err != nil {
+		return
+	}
+
+	if _, err = tx.ExecContext(ctx, reviewSQL, state, who, id); err != nil {
 		return
 	}