Mercurial > gemma
view pkg/imports/email.go @ 1903:7247ac316cb7 dev-pdf-generation
client: pdf-gen: improve layout and ui
* Remove download or display options, because they are not working anyway.
* Add page info and about box.
* Use a fixed generic logo text image and a placer holder text for the
disclaimer.
* Add string to translation files.
* Adjust scale bar layout.
author | Bernhard Reiter <bernhard@intevation.de> |
---|---|
date | Fri, 18 Jan 2019 16:52:20 +0100 |
parents | c354631e0018 |
children | d966f03ea819 |
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 = `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 "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 }}/#/?{{ if eq .State "pending" }}review{{ else }}importlog{{ end }}={{ .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) } }