forked from gitea/gitea
		
	 76659b1114
			
		
	
	
		76659b1114
		
			
		
	
	
	
	
		
			
			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,
 | |
| 	})
 | |
| }
 |