cacert-boardvoting/actions.go

65 lines
1.5 KiB
Go

package main
import (
"fmt"
"github.com/Masterminds/sprig"
"os"
"text/template"
)
func CreateMotion(decision *Decision, voter *Voter) (err error) {
decision.ProponentId = voter.Id
err = decision.Save()
if err != nil {
logger.Println("Error saving motion:", err)
return
}
type mailContext struct {
Decision
Name string
Sender string
Recipient string
VoteURL string
UnvotedURL string
}
voteURL := fmt.Sprintf("%s/vote", config.BaseURL)
unvotedURL := fmt.Sprintf("%s/motions/?unvoted=1", config.BaseURL)
context := mailContext{
*decision, voter.Name, config.NoticeSenderAddress,
config.BoardMailAddress, voteURL,
unvotedURL}
t, err := template.New("create_motion_mail.txt").Funcs(
sprig.GenericFuncMap()).ParseFiles("templates/create_motion_mail.txt")
if err != nil {
logger.Fatal(err)
}
t.Execute(os.Stdout, context)
// TODO: implement mail sending
return
}
func WithdrawMotion(decision *Decision, voter *Voter) (err error) {
// load template, fill name, tag, title, content
type mailContext struct {
*Decision
Name string
Sender string
Recipient string
}
context := mailContext{decision, voter.Name, config.NoticeSenderAddress, config.BoardMailAddress}
// fill withdraw_mail.txt
t, err := template.New("withdraw_mail.txt").Funcs(
sprig.GenericFuncMap()).ParseFiles("templates/withdraw_mail.txt")
if err != nil {
logger.Fatal(err)
}
// TODO: send mail
t.Execute(os.Stdout, context)
// TODO: implement call decision.Close()
return
}