mirror of
				https://gitee.com/gitea/gitea
				synced 2025-11-04 00:20:25 +08:00 
			
		
		
		
	Part of #27065 This reduces the usage of `db.DefaultContext`. I think I've got enough files for the first PR. When this is merged, I will continue working on this. Considering how many files this PR affect, I hope it won't take to long to merge, so I don't end up in the merge conflict hell. --------- Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
		
			
				
	
	
		
			62 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
// Copyright 2023 The Gitea Authors. All rights reserved.
 | 
						|
// SPDX-License-Identifier: MIT
 | 
						|
 | 
						|
package doctor
 | 
						|
 | 
						|
import (
 | 
						|
	"context"
 | 
						|
 | 
						|
	"code.gitea.io/gitea/models"
 | 
						|
	"code.gitea.io/gitea/models/db"
 | 
						|
	org_model "code.gitea.io/gitea/models/organization"
 | 
						|
	"code.gitea.io/gitea/models/perm"
 | 
						|
	"code.gitea.io/gitea/modules/log"
 | 
						|
 | 
						|
	"xorm.io/builder"
 | 
						|
)
 | 
						|
 | 
						|
func fixOwnerTeamCreateOrgRepo(ctx context.Context, logger log.Logger, autofix bool) error {
 | 
						|
	count := 0
 | 
						|
 | 
						|
	err := db.Iterate(
 | 
						|
		ctx,
 | 
						|
		builder.Eq{"authorize": perm.AccessModeOwner, "can_create_org_repo": false},
 | 
						|
		func(ctx context.Context, team *org_model.Team) error {
 | 
						|
			team.CanCreateOrgRepo = true
 | 
						|
			count++
 | 
						|
 | 
						|
			if !autofix {
 | 
						|
				return nil
 | 
						|
			}
 | 
						|
 | 
						|
			return models.UpdateTeam(ctx, team, false, false)
 | 
						|
		},
 | 
						|
	)
 | 
						|
	if err != nil {
 | 
						|
		logger.Critical("Unable to iterate across repounits to fix incorrect can_create_org_repo: Error %v", err)
 | 
						|
		return err
 | 
						|
	}
 | 
						|
 | 
						|
	if !autofix {
 | 
						|
		if count == 0 {
 | 
						|
			logger.Info("Found no team with incorrect can_create_org_repo")
 | 
						|
		} else {
 | 
						|
			logger.Warn("Found %d teams with incorrect can_create_org_repo", count)
 | 
						|
		}
 | 
						|
		return nil
 | 
						|
	}
 | 
						|
	logger.Info("Fixed %d teams with incorrect can_create_org_repo", count)
 | 
						|
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
func init() {
 | 
						|
	Register(&Check{
 | 
						|
		Title:     "Check for incorrect can_create_org_repo for org owner teams",
 | 
						|
		Name:      "fix-owner-team-create-org-repo",
 | 
						|
		IsDefault: false,
 | 
						|
		Run:       fixOwnerTeamCreateOrgRepo,
 | 
						|
		Priority:  7,
 | 
						|
	})
 | 
						|
}
 |