Browse Source

get user info from email

new fucntion GetUserByActiveEmail
tags/v1.21.9.2
avadesian 4 years ago
parent
commit
59887aa865
2 changed files with 33 additions and 10 deletions
  1. +16
    -0
      models/user.go
  2. +17
    -10
      routers/repo/view.go

+ 16
- 0
models/user.go View File

@@ -1543,6 +1543,22 @@ func ValidateCommitsWithEmails(oldCommits *list.List) *list.List {
return newCommits
}

// GetUserByActivateEmail returns the user object by given e-mail if exists.
/*This function will search email table only*/
func GetUserByActivateEmail(email string) (*User, error) {
ctx := DefaultDBContext()
var users []User
if err := ctx.e.Join("INNER", "email_address", "email_address.uid = \"user\".id").
Where("email_address.email= ?", email).
Find(&users); err != nil {
return nil,err
}
if len(users) >= 1 {
return &users[0],nil
}else {
return nil, errors.New("cannot find user by email")
}
}
// GetUserByEmail returns the user object by given e-mail if exists.
func GetUserByEmail(email string) (*User, error) {
return GetUserByEmailContext(DefaultDBContext(), email)


+ 17
- 10
routers/repo/view.go View File

@@ -15,6 +15,7 @@ import (
"net/url"
"path"
"strings"
"time"

"code.gitea.io/gitea/models"
"code.gitea.io/gitea/modules/base"
@@ -588,39 +589,45 @@ func Home(ctx *context.Context) {
//get repo contributors info
contributors, err := git.GetContributors(ctx.Repo.Repository.RepoPath())
if err == nil && contributors != nil {
startTime := time.Now()
var contributorInfos []*ContributorInfo
contributorInfoHash:= make(map[string]*ContributorInfo)
for _, c := range contributors {
if strings.Compare(c.Email,"") == 0 {
continue
}
// get user info from committer email
user, err := models.GetUserByEmail(c.Email)
user, err := models.GetUserByActivateEmail(c.Email)
if err == nil {
// committer is system user, get info through user's primary email
existedContributorInfo := getContributorInfo(contributorInfos,user.Email)
if existedContributorInfo != nil {
if existedContributorInfo,ok:=contributorInfoHash[user.Email];ok {
// existed: same primary email, different committer name
existedContributorInfo.CommitCnt += c.CommitCnt
}else{
// new committer info
contributorInfos = append(contributorInfos, &ContributorInfo{
var newContributor = &ContributorInfo{
user, user.Email,c.CommitCnt,
})
}
contributorInfos = append(contributorInfos, newContributor )
contributorInfoHash[user.Email] = newContributor
}
} else {
// committer is not system user
existedContributorInfo := getContributorInfo(contributorInfos,c.Email)
if existedContributorInfo != nil {
if existedContributorInfo,ok:=contributorInfoHash[c.Email];ok {
// existed: same primary email, different committer name
existedContributorInfo.CommitCnt += c.CommitCnt
}else{
contributorInfos = append(contributorInfos, &ContributorInfo{
nil, c.Email,c.CommitCnt,
})
var newContributor = &ContributorInfo{
user, c.Email,c.CommitCnt,
}
contributorInfos = append(contributorInfos, newContributor)
contributorInfoHash[c.Email] = newContributor
}
}
}
ctx.Data["ContributorInfo"] = contributorInfos
var duration = time.Since(startTime)
log.Info("getContributorInfo cost: %v seconds",duration.Seconds())
}
if ctx.Repo.Repository.IsBeingCreated() {
task, err := models.GetMigratingTask(ctx.Repo.Repository.ID)


Loading…
Cancel
Save