Mercurial > gemma
comparison 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 |
comparison
equal
deleted
inserted
replaced
1193:58acc343b1b6 | 1194:7db850de0952 |
---|---|
20 "log" | 20 "log" |
21 "net/http" | 21 "net/http" |
22 "strconv" | 22 "strconv" |
23 "strings" | 23 "strings" |
24 | 24 |
25 "gemma.intevation.de/gemma/pkg/auth" | |
25 "gemma.intevation.de/gemma/pkg/imports" | 26 "gemma.intevation.de/gemma/pkg/imports" |
26 "gemma.intevation.de/gemma/pkg/models" | 27 "gemma.intevation.de/gemma/pkg/models" |
27 "github.com/gorilla/mux" | 28 "github.com/gorilla/mux" |
28 "github.com/jackc/pgx/pgtype" | 29 "github.com/jackc/pgx/pgtype" |
29 ) | 30 ) |
33 SELECT | 34 SELECT |
34 id, | 35 id, |
35 state::varchar, | 36 state::varchar, |
36 enqueued, | 37 enqueued, |
37 kind, | 38 kind, |
38 username | 39 username, |
40 signer | |
39 FROM waterway.imports | 41 FROM waterway.imports |
40 ` | 42 ` |
41 | 43 |
42 selectHasImportSQL = ` | 44 selectHasImportSQL = ` |
43 SELECT true FROM Waterway.imports WHERE id = $1` | 45 SELECT true FROM Waterway.imports WHERE id = $1` |
165 &it.ID, | 167 &it.ID, |
166 &it.State, | 168 &it.State, |
167 &it.Enqueued, | 169 &it.Enqueued, |
168 &it.Kind, | 170 &it.Kind, |
169 &it.User, | 171 &it.User, |
172 &it.Signer, | |
170 ); err != nil { | 173 ); err != nil { |
171 return | 174 return |
172 } | 175 } |
173 imports = append(imports, &it) | 176 imports = append(imports, &it) |
174 } | 177 } |
293 const ( | 296 const ( |
294 isPendingSQL = ` | 297 isPendingSQL = ` |
295 SELECT state = 'pending'::waterway.import_state, kind WHERE id = $1` | 298 SELECT state = 'pending'::waterway.import_state, kind WHERE id = $1` |
296 | 299 |
297 reviewSQL = ` | 300 reviewSQL = ` |
298 UPDATE waterway.imports SET state = $1::waterway.import_state | 301 UPDATE waterway.imports SET |
299 WHERE id = $2` | 302 state = $1::waterway.import_state, |
303 signer = $2 | |
304 WHERE id = $3` | |
300 | 305 |
301 deleteImportDataSQL = `SELECT waterway.del_import($1)` | 306 deleteImportDataSQL = `SELECT waterway.del_import($1)` |
302 | 307 |
303 deleteImportTrackSQL = ` | 308 deleteImportTrackSQL = ` |
304 DELETE FROM waterway.track_imports WHERE import_id = $1` | 309 DELETE FROM waterway.track_imports WHERE import_id = $1` |
310 | |
311 logDecisionSQL = ` | |
312 INSERT INTO waterway.import_logs (import_id, msg) VALUES ($1, $2)` | |
305 ) | 313 ) |
306 | 314 |
307 func reviewImport( | 315 func reviewImport( |
308 _ interface{}, | 316 _ interface{}, |
309 req *http.Request, | 317 req *http.Request, |
356 if _, err = tx.ExecContext(ctx, deleteImportDataSQL, id); err != nil { | 364 if _, err = tx.ExecContext(ctx, deleteImportDataSQL, id); err != nil { |
357 return | 365 return |
358 } | 366 } |
359 } | 367 } |
360 | 368 |
361 if _, err = tx.ExecContext(ctx, reviewSQL, state, id); err != nil { | 369 // Log the decision and set the final state. |
370 session, _ := auth.GetSession(req) | |
371 who := session.User | |
372 | |
373 if _, err = tx.ExecContext(ctx, logDecisionSQL, id, | |
374 fmt.Sprintf("User '%s' %s import %d.", who, state, id)); err != nil { | |
375 return | |
376 } | |
377 | |
378 if _, err = tx.ExecContext(ctx, reviewSQL, state, who, id); err != nil { | |
362 return | 379 return |
363 } | 380 } |
364 | 381 |
365 if err = tx.Commit(); err != nil { | 382 if err = tx.Commit(); err != nil { |
366 return | 383 return |