Mercurial > gemma
view pkg/imports/email.go @ 4306:2336f75637d1
sections: Use blown up axis as geometry. (Nicked from current stretches)
As using the waterway area geometry just imposes another sources of
errors (and failed on me repeatedly) this change eliminates these
potential problems.
author | Sascha Wilde <wilde@intevation.de> |
---|---|
date | Mon, 02 Sep 2019 18:26:12 +0200 |
parents | 92812bf2f008 |
children | 5f47eeea988d |
line wrap: on
line source
// This is Free Software under GNU Affero General Public License v >= 3.0 // without warranty, see README.md and license for details. // // SPDX-License-Identifier: AGPL-3.0-or-later // License-Filename: LICENSES/AGPL-3.0.txt // // Copyright (C) 2018 by via donau // – Österreichische Wasserstraßen-Gesellschaft mbH // Software engineering by Intevation GmbH // // Author(s): // * Sascha L. Teichmann <sascha.teichmann@intevation.de> package imports import ( "context" "database/sql" "log" "strings" "text/template" "gemma.intevation.de/gemma/pkg/auth" "gemma.intevation.de/gemma/pkg/config" "gemma.intevation.de/gemma/pkg/misc" ) const ( selectEmailSQL = `SELECT email_address FROM users.list_users WHERE username = $1` importNotificationMailSubject = `Gemma: import notification mail` ) var ( importNotificationMailTmpl = template.Must( template.New("notification").Parse(`Dear {{ .User }}, a {{ .Description }} import on server {{ .Server }} triggered this email notification. {{ if eq .State "accepted" }}The imported data were successfully integrated into the database. {{ end -}} {{ if eq .State "unchanged" }}The import has not changed any data in the database. {{ end -}} {{ if eq .State "failed" }}The import failed for some reasons. {{ end -}} {{ if eq .State "pending" }}The imported data could be integrated into the database but your final decision is needed. {{ end -}} Please follow this link to have a closer look at the details: {{ .Server }}/#/imports/overview/{{ .ID }} Best regards Your service team`)) ) func sendNotificationMail(user, description, state string, id int64) { config.WaitReady() ctx := context.Background() var email string if err := auth.RunAs(ctx, user, func(conn *sql.Conn) error { return conn.QueryRowContext(ctx, selectEmailSQL, user).Scan(&email) }, ); err != nil { log.Printf("error: %v\n", err) return } data := struct { User string Description string Server string State string ID int64 }{ User: user, Description: description, Server: config.ExternalURL(), State: state, ID: id, } var body strings.Builder if err := importNotificationMailTmpl.Execute(&body, &data); err != nil { log.Printf("error: %v\n", err) return } if err := misc.SendMail(email, importNotificationMailSubject, body.String()); err != nil { log.Printf("error: %v\n", err) } }