misc/dashboard/codereview: send mail immediately, and fill in time.Time fields.

If we delay the mail sending, we can't send as the current user.
If we don't fill in the time.Time fields, datastore.Put will fail
because the zero time.Time value is out of its range.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/6136053
This commit is contained in:
David Symonds 2012-05-01 11:33:25 +10:00
parent 4de15a5cda
commit dae2992c98
2 changed files with 9 additions and 4 deletions

View File

@ -16,7 +16,6 @@ import (
"appengine"
"appengine/datastore"
"appengine/delay"
"appengine/mail"
"appengine/taskqueue"
"appengine/urlfetch"
@ -105,8 +104,6 @@ func (cl *CL) ModifiedAgo() string {
return "just now"
}
var sendMailLater = delay.Func("send-mail", mail.Send)
func handleAssign(w http.ResponseWriter, r *http.Request) {
c := appengine.NewContext(r)
@ -196,7 +193,9 @@ func handleAssign(w http.ResponseWriter, r *http.Request) {
}
// TODO(dsymonds): Use cl.LastMessageID as the In-Reply-To header
// when the appengine/mail package supports that.
sendMailLater.Call(c, msg)
if err := mail.Send(c, msg); err != nil {
c.Errorf("mail.Send: %v", err)
}
}
}
}

View File

@ -45,6 +45,12 @@ func handleMail(w http.ResponseWriter, r *http.Request) {
if err != nil && err != datastore.ErrNoSuchEntity {
return err
}
if err == datastore.ErrNoSuchEntity {
// Must set sentinel values for time.Time fields
// if this is a new entity.
cl.Created = time.Unix(0, 0)
cl.Modified = time.Unix(0, 0)
}
cl.LastMessageID = msg.Header.Get("Message-ID")
_, err = datastore.Put(c, key, cl)
return err