mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 16:40:24 +08:00 
			
		
		
		
	Move organization related structs into sub package (#18518)
* Move organization related structs into sub package * Fix test * Fix lint * Move more functions into sub packages * Fix bug * Fix test * Update models/organization/team_repo.go Co-authored-by: KN4CK3R <admin@oldschoolhack.me> * Apply suggestions from code review Co-authored-by: KN4CK3R <admin@oldschoolhack.me> * Fix fmt * Follow suggestion from @Gusted * Fix test * Fix test * Fix bug * Use ctx but db.DefaultContext on routers * Fix bug * Fix bug * fix bug * Update models/organization/team_user.go * Fix bug Co-authored-by: KN4CK3R <admin@oldschoolhack.me> Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
This commit is contained in:
		@@ -13,6 +13,7 @@ import (
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
	"code.gitea.io/gitea/models"
 | 
			
		||||
	"code.gitea.io/gitea/models/organization"
 | 
			
		||||
	"code.gitea.io/gitea/models/perm"
 | 
			
		||||
	repo_model "code.gitea.io/gitea/models/repo"
 | 
			
		||||
	unit_model "code.gitea.io/gitea/models/unit"
 | 
			
		||||
@@ -43,7 +44,7 @@ func Teams(ctx *context.Context) {
 | 
			
		||||
	ctx.Data["PageIsOrgTeams"] = true
 | 
			
		||||
 | 
			
		||||
	for _, t := range ctx.Org.Teams {
 | 
			
		||||
		if err := t.GetMembers(&models.SearchMembersOptions{}); err != nil {
 | 
			
		||||
		if err := t.GetMembersCtx(ctx); err != nil {
 | 
			
		||||
			ctx.ServerError("GetMembers", err)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
@@ -69,11 +70,11 @@ func TeamsAction(ctx *context.Context) {
 | 
			
		||||
			ctx.Error(http.StatusNotFound)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		err = ctx.Org.Team.AddMember(ctx.Doer.ID)
 | 
			
		||||
		err = models.AddTeamMember(ctx.Org.Team, ctx.Doer.ID)
 | 
			
		||||
	case "leave":
 | 
			
		||||
		err = ctx.Org.Team.RemoveMember(ctx.Doer.ID)
 | 
			
		||||
		err = models.RemoveTeamMember(ctx.Org.Team, ctx.Doer.ID)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			if models.IsErrLastOrgOwner(err) {
 | 
			
		||||
			if organization.IsErrLastOrgOwner(err) {
 | 
			
		||||
				ctx.Flash.Error(ctx.Tr("form.last_org_owner"))
 | 
			
		||||
			} else {
 | 
			
		||||
				log.Error("Action(%s): %v", ctx.Params(":action"), err)
 | 
			
		||||
@@ -94,9 +95,9 @@ func TeamsAction(ctx *context.Context) {
 | 
			
		||||
			ctx.Error(http.StatusNotFound)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		err = ctx.Org.Team.RemoveMember(uid)
 | 
			
		||||
		err = models.RemoveTeamMember(ctx.Org.Team, uid)
 | 
			
		||||
		if err != nil {
 | 
			
		||||
			if models.IsErrLastOrgOwner(err) {
 | 
			
		||||
			if organization.IsErrLastOrgOwner(err) {
 | 
			
		||||
				ctx.Flash.Error(ctx.Tr("form.last_org_owner"))
 | 
			
		||||
			} else {
 | 
			
		||||
				log.Error("Action(%s): %v", ctx.Params(":action"), err)
 | 
			
		||||
@@ -139,14 +140,14 @@ func TeamsAction(ctx *context.Context) {
 | 
			
		||||
		if ctx.Org.Team.IsMember(u.ID) {
 | 
			
		||||
			ctx.Flash.Error(ctx.Tr("org.teams.add_duplicate_users"))
 | 
			
		||||
		} else {
 | 
			
		||||
			err = ctx.Org.Team.AddMember(u.ID)
 | 
			
		||||
			err = models.AddTeamMember(ctx.Org.Team, u.ID)
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		page = "team"
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		if models.IsErrLastOrgOwner(err) {
 | 
			
		||||
		if organization.IsErrLastOrgOwner(err) {
 | 
			
		||||
			ctx.Flash.Error(ctx.Tr("form.last_org_owner"))
 | 
			
		||||
		} else {
 | 
			
		||||
			log.Error("Action(%s): %v", ctx.Params(":action"), err)
 | 
			
		||||
@@ -191,13 +192,13 @@ func TeamsRepoAction(ctx *context.Context) {
 | 
			
		||||
			ctx.ServerError("GetRepositoryByName", err)
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
		err = ctx.Org.Team.AddRepository(repo)
 | 
			
		||||
		err = models.AddRepository(ctx.Org.Team, repo)
 | 
			
		||||
	case "remove":
 | 
			
		||||
		err = ctx.Org.Team.RemoveRepository(ctx.FormInt64("repoid"))
 | 
			
		||||
		err = models.RemoveRepository(ctx.Org.Team, ctx.FormInt64("repoid"))
 | 
			
		||||
	case "addall":
 | 
			
		||||
		err = ctx.Org.Team.AddAllRepositories()
 | 
			
		||||
		err = models.AddAllRepositories(ctx.Org.Team)
 | 
			
		||||
	case "removeall":
 | 
			
		||||
		err = ctx.Org.Team.RemoveAllRepositories()
 | 
			
		||||
		err = models.RemoveAllRepositories(ctx.Org.Team)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if err != nil {
 | 
			
		||||
@@ -220,7 +221,7 @@ func NewTeam(ctx *context.Context) {
 | 
			
		||||
	ctx.Data["Title"] = ctx.Org.Organization.FullName
 | 
			
		||||
	ctx.Data["PageIsOrgTeams"] = true
 | 
			
		||||
	ctx.Data["PageIsOrgTeamsNew"] = true
 | 
			
		||||
	ctx.Data["Team"] = &models.Team{}
 | 
			
		||||
	ctx.Data["Team"] = &organization.Team{}
 | 
			
		||||
	ctx.Data["Units"] = unit_model.Units
 | 
			
		||||
	ctx.HTML(http.StatusOK, tplTeamNew)
 | 
			
		||||
}
 | 
			
		||||
@@ -251,7 +252,7 @@ func NewTeamPost(ctx *context.Context) {
 | 
			
		||||
		p = unit_model.MinUnitAccessMode(unitPerms)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	t := &models.Team{
 | 
			
		||||
	t := &organization.Team{
 | 
			
		||||
		OrgID:                   ctx.Org.Organization.ID,
 | 
			
		||||
		Name:                    form.TeamName,
 | 
			
		||||
		Description:             form.Description,
 | 
			
		||||
@@ -261,9 +262,9 @@ func NewTeamPost(ctx *context.Context) {
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if t.AccessMode < perm.AccessModeAdmin {
 | 
			
		||||
		units := make([]*models.TeamUnit, 0, len(unitPerms))
 | 
			
		||||
		units := make([]*organization.TeamUnit, 0, len(unitPerms))
 | 
			
		||||
		for tp, perm := range unitPerms {
 | 
			
		||||
			units = append(units, &models.TeamUnit{
 | 
			
		||||
			units = append(units, &organization.TeamUnit{
 | 
			
		||||
				OrgID:      ctx.Org.Organization.ID,
 | 
			
		||||
				Type:       tp,
 | 
			
		||||
				AccessMode: perm,
 | 
			
		||||
@@ -291,7 +292,7 @@ func NewTeamPost(ctx *context.Context) {
 | 
			
		||||
	if err := models.NewTeam(t); err != nil {
 | 
			
		||||
		ctx.Data["Err_TeamName"] = true
 | 
			
		||||
		switch {
 | 
			
		||||
		case models.IsErrTeamAlreadyExist(err):
 | 
			
		||||
		case organization.IsErrTeamAlreadyExist(err):
 | 
			
		||||
			ctx.RenderWithErr(ctx.Tr("form.team_name_been_taken"), tplTeamNew, &form)
 | 
			
		||||
		default:
 | 
			
		||||
			ctx.ServerError("NewTeam", err)
 | 
			
		||||
@@ -307,7 +308,7 @@ func TeamMembers(ctx *context.Context) {
 | 
			
		||||
	ctx.Data["Title"] = ctx.Org.Team.Name
 | 
			
		||||
	ctx.Data["PageIsOrgTeams"] = true
 | 
			
		||||
	ctx.Data["PageIsOrgTeamMembers"] = true
 | 
			
		||||
	if err := ctx.Org.Team.GetMembers(&models.SearchMembersOptions{}); err != nil {
 | 
			
		||||
	if err := ctx.Org.Team.GetMembersCtx(ctx); err != nil {
 | 
			
		||||
		ctx.ServerError("GetMembers", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
@@ -320,7 +321,7 @@ func TeamRepositories(ctx *context.Context) {
 | 
			
		||||
	ctx.Data["Title"] = ctx.Org.Team.Name
 | 
			
		||||
	ctx.Data["PageIsOrgTeams"] = true
 | 
			
		||||
	ctx.Data["PageIsOrgTeamRepos"] = true
 | 
			
		||||
	if err := ctx.Org.Team.GetRepositories(&models.SearchOrgTeamOptions{}); err != nil {
 | 
			
		||||
	if err := ctx.Org.Team.GetRepositoriesCtx(ctx); err != nil {
 | 
			
		||||
		ctx.ServerError("GetRepositories", err)
 | 
			
		||||
		return
 | 
			
		||||
	}
 | 
			
		||||
@@ -374,17 +375,17 @@ func EditTeamPost(ctx *context.Context) {
 | 
			
		||||
	}
 | 
			
		||||
	t.Description = form.Description
 | 
			
		||||
	if t.AccessMode < perm.AccessModeAdmin {
 | 
			
		||||
		units := make([]models.TeamUnit, 0, len(unitPerms))
 | 
			
		||||
		units := make([]organization.TeamUnit, 0, len(unitPerms))
 | 
			
		||||
		for tp, perm := range unitPerms {
 | 
			
		||||
			units = append(units, models.TeamUnit{
 | 
			
		||||
			units = append(units, organization.TeamUnit{
 | 
			
		||||
				OrgID:      t.OrgID,
 | 
			
		||||
				TeamID:     t.ID,
 | 
			
		||||
				Type:       tp,
 | 
			
		||||
				AccessMode: perm,
 | 
			
		||||
			})
 | 
			
		||||
		}
 | 
			
		||||
		if err := models.UpdateTeamUnits(t, units); err != nil {
 | 
			
		||||
			ctx.Error(http.StatusInternalServerError, "LoadIssue", err.Error())
 | 
			
		||||
		if err := organization.UpdateTeamUnits(t, units); err != nil {
 | 
			
		||||
			ctx.Error(http.StatusInternalServerError, "UpdateTeamUnits", err.Error())
 | 
			
		||||
			return
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
@@ -403,7 +404,7 @@ func EditTeamPost(ctx *context.Context) {
 | 
			
		||||
	if err := models.UpdateTeam(t, isAuthChanged, isIncludeAllChanged); err != nil {
 | 
			
		||||
		ctx.Data["Err_TeamName"] = true
 | 
			
		||||
		switch {
 | 
			
		||||
		case models.IsErrTeamAlreadyExist(err):
 | 
			
		||||
		case organization.IsErrTeamAlreadyExist(err):
 | 
			
		||||
			ctx.RenderWithErr(ctx.Tr("form.team_name_been_taken"), tplTeamNew, &form)
 | 
			
		||||
		default:
 | 
			
		||||
			ctx.ServerError("UpdateTeam", err)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user