Mercurial > gemma
view pkg/imports/email.go @ 5369:4d126cf58fbc extented-report
Re-phrased the text of the email send for reports a bit.
author | Sascha L. Teichmann <sascha.teichmann@intevation.de> |
---|---|
date | Thu, 24 Jun 2021 10:53:44 +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) } }