Lint/issue &mail (#243)
* Lint models/release.go * Lint models/ issue_label, issue_mail & mail.go
This commit is contained in:
		
							parent
							
								
									081c2a9395
								
							
						
					
					
						commit
						c0ca6644ad
					
				
					 4 changed files with 35 additions and 27 deletions
				
			
		|  | @ -62,6 +62,7 @@ type Label struct { | |||
| 	IsChecked       bool `xorm:"-"` | ||||
| } | ||||
| 
 | ||||
| // APIFormat converts a Label to the api.Label format
 | ||||
| func (label *Label) APIFormat() *api.Label { | ||||
| 	return &api.Label{ | ||||
| 		ID:    label.ID, | ||||
|  | @ -77,9 +78,9 @@ func (label *Label) CalOpenIssues() { | |||
| 
 | ||||
| // ForegroundColor calculates the text color for labels based
 | ||||
| // on their background color.
 | ||||
| func (l *Label) ForegroundColor() template.CSS { | ||||
| 	if strings.HasPrefix(l.Color, "#") { | ||||
| 		if color, err := strconv.ParseUint(l.Color[1:], 16, 64); err == nil { | ||||
| func (label *Label) ForegroundColor() template.CSS { | ||||
| 	if strings.HasPrefix(label.Color, "#") { | ||||
| 		if color, err := strconv.ParseUint(label.Color[1:], 16, 64); err == nil { | ||||
| 			r := float32(0xFF & (color >> 16)) | ||||
| 			g := float32(0xFF & (color >> 8)) | ||||
| 			b := float32(0xFF & color) | ||||
|  |  | |||
|  | @ -14,7 +14,7 @@ import ( | |||
| 	"code.gitea.io/gitea/modules/setting" | ||||
| ) | ||||
| 
 | ||||
| func (issue *Issue) MailSubject() string { | ||||
| func (issue *Issue) mailSubject() string { | ||||
| 	return fmt.Sprintf("[%s] %s (#%d)", issue.Repo.Name, issue.Title, issue.Index) | ||||
| } | ||||
| 
 | ||||
|  |  | |||
|  | @ -20,23 +20,24 @@ import ( | |||
| ) | ||||
| 
 | ||||
| const ( | ||||
| 	MailAuthActivate       base.TplName = "auth/activate" | ||||
| 	MailAuthActivateEmail  base.TplName = "auth/activate_email" | ||||
| 	MailAuthResetPassword  base.TplName = "auth/reset_passwd" | ||||
| 	MailAuthRegisterNotify base.TplName = "auth/register_notify" | ||||
| 	mailAuthActivate       base.TplName = "auth/activate" | ||||
| 	mailAuthActivateEmail  base.TplName = "auth/activate_email" | ||||
| 	mailAuthResetPassword  base.TplName = "auth/reset_passwd" | ||||
| 	mailAuthRegisterNotify base.TplName = "auth/register_notify" | ||||
| 
 | ||||
| 	MailIssueComment base.TplName = "issue/comment" | ||||
| 	MailIssueMention base.TplName = "issue/mention" | ||||
| 	mailIssueComment base.TplName = "issue/comment" | ||||
| 	mailIssueMention base.TplName = "issue/mention" | ||||
| 
 | ||||
| 	MailNotifyCollaborator base.TplName = "notify/collaborator" | ||||
| 	mailNotifyCollaborator base.TplName = "notify/collaborator" | ||||
| ) | ||||
| 
 | ||||
| type MailRender interface { | ||||
| type mailRenderInterface interface { | ||||
| 	HTMLString(string, interface{}, ...macaron.HTMLOptions) (string, error) | ||||
| } | ||||
| 
 | ||||
| var mailRender MailRender | ||||
| var mailRender mailRenderInterface | ||||
| 
 | ||||
| // InitMailRender initializes the macaron mail renderer
 | ||||
| func InitMailRender(dir, appendDir string, funcMap []template.FuncMap) { | ||||
| 	opt := &macaron.RenderOptions{ | ||||
| 		Directory:         dir, | ||||
|  | @ -53,10 +54,12 @@ func InitMailRender(dir, appendDir string, funcMap []template.FuncMap) { | |||
| 	} | ||||
| } | ||||
| 
 | ||||
| // SendTestMail sends a test mail
 | ||||
| func SendTestMail(email string) error { | ||||
| 	return gomail.Send(&mailer.Sender{}, mailer.NewMessage([]string{email}, "Gogs Test Email!", "Gogs Test Email!").Message) | ||||
| } | ||||
| 
 | ||||
| // SendUserMail sends a mail to the user
 | ||||
| func SendUserMail(c *macaron.Context, u *User, tpl base.TplName, code, subject, info string) { | ||||
| 	data := map[string]interface{}{ | ||||
| 		"Username":          u.DisplayName(), | ||||
|  | @ -76,15 +79,17 @@ func SendUserMail(c *macaron.Context, u *User, tpl base.TplName, code, subject, | |||
| 	mailer.SendAsync(msg) | ||||
| } | ||||
| 
 | ||||
| // SendActivateAccountMail sends an activation mail to the user
 | ||||
| func SendActivateAccountMail(c *macaron.Context, u *User) { | ||||
| 	SendUserMail(c, u, MailAuthActivate, u.GenerateActivateCode(), c.Tr("mail.activate_account"), "activate account") | ||||
| 	SendUserMail(c, u, mailAuthActivate, u.GenerateActivateCode(), c.Tr("mail.activate_account"), "activate account") | ||||
| } | ||||
| 
 | ||||
| // SendResetPasswordMail sends a password reset mail to the user
 | ||||
| func SendResetPasswordMail(c *macaron.Context, u *User) { | ||||
| 	SendUserMail(c, u, MailAuthResetPassword, u.GenerateActivateCode(), c.Tr("mail.reset_password"), "reset password") | ||||
| 	SendUserMail(c, u, mailAuthResetPassword, u.GenerateActivateCode(), c.Tr("mail.reset_password"), "reset password") | ||||
| } | ||||
| 
 | ||||
| // SendActivateAccountMail sends confirmation email.
 | ||||
| // SendActivateEmailMail sends confirmation email.
 | ||||
| func SendActivateEmailMail(c *macaron.Context, u *User, email *EmailAddress) { | ||||
| 	data := map[string]interface{}{ | ||||
| 		"Username":        u.DisplayName(), | ||||
|  | @ -92,7 +97,7 @@ func SendActivateEmailMail(c *macaron.Context, u *User, email *EmailAddress) { | |||
| 		"Code":            u.GenerateEmailActivateCode(email.Email), | ||||
| 		"Email":           email.Email, | ||||
| 	} | ||||
| 	body, err := mailRender.HTMLString(string(MailAuthActivateEmail), data) | ||||
| 	body, err := mailRender.HTMLString(string(mailAuthActivateEmail), data) | ||||
| 	if err != nil { | ||||
| 		log.Error(3, "HTMLString: %v", err) | ||||
| 		return | ||||
|  | @ -109,7 +114,7 @@ func SendRegisterNotifyMail(c *macaron.Context, u *User) { | |||
| 	data := map[string]interface{}{ | ||||
| 		"Username": u.DisplayName(), | ||||
| 	} | ||||
| 	body, err := mailRender.HTMLString(string(MailAuthRegisterNotify), data) | ||||
| 	body, err := mailRender.HTMLString(string(mailAuthRegisterNotify), data) | ||||
| 	if err != nil { | ||||
| 		log.Error(3, "HTMLString: %v", err) | ||||
| 		return | ||||
|  | @ -131,7 +136,7 @@ func SendCollaboratorMail(u, doer *User, repo *Repository) { | |||
| 		"RepoName": repoName, | ||||
| 		"Link":     repo.HTMLURL(), | ||||
| 	} | ||||
| 	body, err := mailRender.HTMLString(string(MailNotifyCollaborator), data) | ||||
| 	body, err := mailRender.HTMLString(string(mailNotifyCollaborator), data) | ||||
| 	if err != nil { | ||||
| 		log.Error(3, "HTMLString: %v", err) | ||||
| 		return | ||||
|  | @ -152,7 +157,7 @@ func composeTplData(subject, body, link string) map[string]interface{} { | |||
| } | ||||
| 
 | ||||
| func composeIssueMessage(issue *Issue, doer *User, tplName base.TplName, tos []string, info string) *mailer.Message { | ||||
| 	subject := issue.MailSubject() | ||||
| 	subject := issue.mailSubject() | ||||
| 	body := string(markdown.RenderSpecialLink([]byte(issue.Content), issue.Repo.HTMLURL(), issue.Repo.ComposeMetas())) | ||||
| 	data := composeTplData(subject, body, issue.HTMLURL()) | ||||
| 	data["Doer"] = doer | ||||
|  | @ -171,7 +176,7 @@ func SendIssueCommentMail(issue *Issue, doer *User, tos []string) { | |||
| 		return | ||||
| 	} | ||||
| 
 | ||||
| 	mailer.SendAsync(composeIssueMessage(issue, doer, MailIssueComment, tos, "issue comment")) | ||||
| 	mailer.SendAsync(composeIssueMessage(issue, doer, mailIssueComment, tos, "issue comment")) | ||||
| } | ||||
| 
 | ||||
| // SendIssueMentionMail composes and sends issue mention emails to target receivers.
 | ||||
|  | @ -179,5 +184,5 @@ func SendIssueMentionMail(issue *Issue, doer *User, tos []string) { | |||
| 	if len(tos) == 0 { | ||||
| 		return | ||||
| 	} | ||||
| 	mailer.SendAsync(composeIssueMessage(issue, doer, MailIssueMention, tos, "issue mention")) | ||||
| 	mailer.SendAsync(composeIssueMessage(issue, doer, mailIssueMention, tos, "issue mention")) | ||||
| } | ||||
|  |  | |||
|  | @ -38,12 +38,14 @@ type Release struct { | |||
| 	CreatedUnix int64 | ||||
| } | ||||
| 
 | ||||
| // BeforeInsert is invoked from XORM before inserting an object of this type.
 | ||||
| func (r *Release) BeforeInsert() { | ||||
| 	if r.CreatedUnix == 0 { | ||||
| 		r.CreatedUnix = time.Now().Unix() | ||||
| 	} | ||||
| } | ||||
| 
 | ||||
| // AfterSet is invoked from XORM after setting the value of a field of this object.
 | ||||
| func (r *Release) AfterSet(colName string, _ xorm.Cell) { | ||||
| 	switch colName { | ||||
| 	case "created_unix": | ||||
|  | @ -151,15 +153,15 @@ func GetReleasesByRepoID(repoID int64, page, pageSize int) (rels []*Release, err | |||
| 	return rels, err | ||||
| } | ||||
| 
 | ||||
| type ReleaseSorter struct { | ||||
| type releaseSorter struct { | ||||
| 	rels []*Release | ||||
| } | ||||
| 
 | ||||
| func (rs *ReleaseSorter) Len() int { | ||||
| func (rs *releaseSorter) Len() int { | ||||
| 	return len(rs.rels) | ||||
| } | ||||
| 
 | ||||
| func (rs *ReleaseSorter) Less(i, j int) bool { | ||||
| func (rs *releaseSorter) Less(i, j int) bool { | ||||
| 	diffNum := rs.rels[i].NumCommits - rs.rels[j].NumCommits | ||||
| 	if diffNum != 0 { | ||||
| 		return diffNum > 0 | ||||
|  | @ -167,13 +169,13 @@ func (rs *ReleaseSorter) Less(i, j int) bool { | |||
| 	return rs.rels[i].Created.After(rs.rels[j].Created) | ||||
| } | ||||
| 
 | ||||
| func (rs *ReleaseSorter) Swap(i, j int) { | ||||
| func (rs *releaseSorter) Swap(i, j int) { | ||||
| 	rs.rels[i], rs.rels[j] = rs.rels[j], rs.rels[i] | ||||
| } | ||||
| 
 | ||||
| // SortReleases sorts releases by number of commits and created time.
 | ||||
| func SortReleases(rels []*Release) { | ||||
| 	sorter := &ReleaseSorter{rels: rels} | ||||
| 	sorter := &releaseSorter{rels: rels} | ||||
| 	sort.Sort(sorter) | ||||
| } | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
		Reference in a new issue