]> source.dussan.org Git - gitea.git/commitdiff
Move org functions (#19753)
authorLunny Xiao <xiaolunwen@gmail.com>
Fri, 20 May 2022 10:20:51 +0000 (18:20 +0800)
committerGitHub <noreply@github.com>
Fri, 20 May 2022 10:20:51 +0000 (12:20 +0200)
* Move org functions

* Fix comment

models/organization/org_user.go
models/organization/org_user_test.go
models/userlist.go [deleted file]
models/userlist_test.go [deleted file]
routers/web/org/members.go

index b679246d0b14ea87b1bd0251758ab124ffce8407..a7bc8f7d4c1a8778088a1275c75aa77b36d869be 100644 (file)
@@ -6,6 +6,7 @@ package organization
 
 import (
        "context"
+       "fmt"
 
        "code.gitea.io/gitea/models/db"
        user_model "code.gitea.io/gitea/models/user"
@@ -81,3 +82,43 @@ func CanCreateOrgRepo(orgID, uid int64) (bool, error) {
                And("team_user.org_id = ?", orgID).
                Exist(new(Team))
 }
+
+// IsUserOrgOwner returns true if user is in the owner team of given organization.
+func IsUserOrgOwner(users user_model.UserList, orgID int64) map[int64]bool {
+       results := make(map[int64]bool, len(users))
+       for _, user := range users {
+               results[user.ID] = false // Set default to false
+       }
+       ownerMaps, err := loadOrganizationOwners(db.DefaultContext, users, orgID)
+       if err == nil {
+               for _, owner := range ownerMaps {
+                       results[owner.UID] = true
+               }
+       }
+       return results
+}
+
+func loadOrganizationOwners(ctx context.Context, users user_model.UserList, orgID int64) (map[int64]*TeamUser, error) {
+       if len(users) == 0 {
+               return nil, nil
+       }
+       ownerTeam, err := GetOwnerTeam(ctx, orgID)
+       if err != nil {
+               if IsErrTeamNotExist(err) {
+                       log.Error("Organization does not have owner team: %d", orgID)
+                       return nil, nil
+               }
+               return nil, err
+       }
+
+       userIDs := users.GetUserIDs()
+       ownerMaps := make(map[int64]*TeamUser)
+       err = db.GetEngine(ctx).In("uid", userIDs).
+               And("org_id=?", orgID).
+               And("team_id=?", ownerTeam.ID).
+               Find(&ownerMaps)
+       if err != nil {
+               return nil, fmt.Errorf("find team users: %v", err)
+       }
+       return ownerMaps, nil
+}
index b32300293416ac04777013c09b351c37f6eec742..5fee253c47094fb660c4f9d00688652772e5cbe0 100644 (file)
@@ -70,3 +70,57 @@ func testIsUserOrgOwner(t *testing.T, uid, orgID int64, expected bool) {
        assert.NoError(t, err)
        assert.Equal(t, expected, is)
 }
+
+func TestUserListIsPublicMember(t *testing.T) {
+       assert.NoError(t, unittest.PrepareTestDatabase())
+       tt := []struct {
+               orgid    int64
+               expected map[int64]bool
+       }{
+               {3, map[int64]bool{2: true, 4: false, 28: true}},
+               {6, map[int64]bool{5: true, 28: true}},
+               {7, map[int64]bool{5: false}},
+               {25, map[int64]bool{24: true}},
+               {22, map[int64]bool{}},
+       }
+       for _, v := range tt {
+               t.Run(fmt.Sprintf("IsPublicMemberOfOrdIg%d", v.orgid), func(t *testing.T) {
+                       testUserListIsPublicMember(t, v.orgid, v.expected)
+               })
+       }
+}
+
+func testUserListIsPublicMember(t *testing.T, orgID int64, expected map[int64]bool) {
+       org, err := GetOrgByID(orgID)
+       assert.NoError(t, err)
+       _, membersIsPublic, err := org.GetMembers()
+       assert.NoError(t, err)
+       assert.Equal(t, expected, membersIsPublic)
+}
+
+func TestUserListIsUserOrgOwner(t *testing.T) {
+       assert.NoError(t, unittest.PrepareTestDatabase())
+       tt := []struct {
+               orgid    int64
+               expected map[int64]bool
+       }{
+               {3, map[int64]bool{2: true, 4: false, 28: false}},
+               {6, map[int64]bool{5: true, 28: false}},
+               {7, map[int64]bool{5: true}},
+               {25, map[int64]bool{24: false}}, // ErrTeamNotExist
+               {22, map[int64]bool{}},          // No member
+       }
+       for _, v := range tt {
+               t.Run(fmt.Sprintf("IsUserOrgOwnerOfOrdIg%d", v.orgid), func(t *testing.T) {
+                       testUserListIsUserOrgOwner(t, v.orgid, v.expected)
+               })
+       }
+}
+
+func testUserListIsUserOrgOwner(t *testing.T, orgID int64, expected map[int64]bool) {
+       org, err := GetOrgByID(orgID)
+       assert.NoError(t, err)
+       members, _, err := org.GetMembers()
+       assert.NoError(t, err)
+       assert.Equal(t, expected, IsUserOrgOwner(members, orgID))
+}
diff --git a/models/userlist.go b/models/userlist.go
deleted file mode 100644 (file)
index fbe1995..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2019 The Gitea Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package models
-
-import (
-       "context"
-       "fmt"
-
-       "code.gitea.io/gitea/models/db"
-       "code.gitea.io/gitea/models/organization"
-       user_model "code.gitea.io/gitea/models/user"
-       "code.gitea.io/gitea/modules/log"
-)
-
-// IsUserOrgOwner returns true if user is in the owner team of given organization.
-func IsUserOrgOwner(users user_model.UserList, orgID int64) map[int64]bool {
-       results := make(map[int64]bool, len(users))
-       for _, user := range users {
-               results[user.ID] = false // Set default to false
-       }
-       ownerMaps, err := loadOrganizationOwners(db.DefaultContext, users, orgID)
-       if err == nil {
-               for _, owner := range ownerMaps {
-                       results[owner.UID] = true
-               }
-       }
-       return results
-}
-
-func loadOrganizationOwners(ctx context.Context, users user_model.UserList, orgID int64) (map[int64]*organization.TeamUser, error) {
-       if len(users) == 0 {
-               return nil, nil
-       }
-       ownerTeam, err := organization.GetOwnerTeam(ctx, orgID)
-       if err != nil {
-               if organization.IsErrTeamNotExist(err) {
-                       log.Error("Organization does not have owner team: %d", orgID)
-                       return nil, nil
-               }
-               return nil, err
-       }
-
-       userIDs := users.GetUserIDs()
-       ownerMaps := make(map[int64]*organization.TeamUser)
-       err = db.GetEngine(ctx).In("uid", userIDs).
-               And("org_id=?", orgID).
-               And("team_id=?", ownerTeam.ID).
-               Find(&ownerMaps)
-       if err != nil {
-               return nil, fmt.Errorf("find team users: %v", err)
-       }
-       return ownerMaps, nil
-}
diff --git a/models/userlist_test.go b/models/userlist_test.go
deleted file mode 100644 (file)
index 9b3c796..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2019 The Gitea Authors. All rights reserved.
-// Use of this source code is governed by a MIT-style
-// license that can be found in the LICENSE file.
-
-package models
-
-import (
-       "fmt"
-       "testing"
-
-       "code.gitea.io/gitea/models/organization"
-       "code.gitea.io/gitea/models/unittest"
-
-       "github.com/stretchr/testify/assert"
-)
-
-func TestUserListIsPublicMember(t *testing.T) {
-       assert.NoError(t, unittest.PrepareTestDatabase())
-       tt := []struct {
-               orgid    int64
-               expected map[int64]bool
-       }{
-               {3, map[int64]bool{2: true, 4: false, 28: true}},
-               {6, map[int64]bool{5: true, 28: true}},
-               {7, map[int64]bool{5: false}},
-               {25, map[int64]bool{24: true}},
-               {22, map[int64]bool{}},
-       }
-       for _, v := range tt {
-               t.Run(fmt.Sprintf("IsPublicMemberOfOrdIg%d", v.orgid), func(t *testing.T) {
-                       testUserListIsPublicMember(t, v.orgid, v.expected)
-               })
-       }
-}
-
-func testUserListIsPublicMember(t *testing.T, orgID int64, expected map[int64]bool) {
-       org, err := organization.GetOrgByID(orgID)
-       assert.NoError(t, err)
-       _, membersIsPublic, err := org.GetMembers()
-       assert.NoError(t, err)
-       assert.Equal(t, expected, membersIsPublic)
-}
-
-func TestUserListIsUserOrgOwner(t *testing.T) {
-       assert.NoError(t, unittest.PrepareTestDatabase())
-       tt := []struct {
-               orgid    int64
-               expected map[int64]bool
-       }{
-               {3, map[int64]bool{2: true, 4: false, 28: false}},
-               {6, map[int64]bool{5: true, 28: false}},
-               {7, map[int64]bool{5: true}},
-               {25, map[int64]bool{24: false}}, // ErrTeamNotExist
-               {22, map[int64]bool{}},          // No member
-       }
-       for _, v := range tt {
-               t.Run(fmt.Sprintf("IsUserOrgOwnerOfOrdIg%d", v.orgid), func(t *testing.T) {
-                       testUserListIsUserOrgOwner(t, v.orgid, v.expected)
-               })
-       }
-}
-
-func testUserListIsUserOrgOwner(t *testing.T, orgID int64, expected map[int64]bool) {
-       org, err := organization.GetOrgByID(orgID)
-       assert.NoError(t, err)
-       members, _, err := org.GetMembers()
-       assert.NoError(t, err)
-       assert.Equal(t, expected, IsUserOrgOwner(members, orgID))
-}
index add8e724bda79e37cda176d92c8ac1a5c461a559..374c89357523051904d562d25e3d4f9f87ba74ae 100644 (file)
@@ -63,7 +63,7 @@ func Members(ctx *context.Context) {
        ctx.Data["Page"] = pager
        ctx.Data["Members"] = members
        ctx.Data["MembersIsPublicMember"] = membersIsPublic
-       ctx.Data["MembersIsUserOrgOwner"] = models.IsUserOrgOwner(members, org.ID)
+       ctx.Data["MembersIsUserOrgOwner"] = organization.IsUserOrgOwner(members, org.ID)
        ctx.Data["MembersTwoFaStatus"] = members.GetTwoFaStatus()
 
        ctx.HTML(http.StatusOK, tplMembers)