0
0
mirror of https://github.com/go-gitea/gitea.git synced 2026-04-04 12:26:12 +02:00

fix get default column

This commit is contained in:
wxiaoguang 2026-03-30 15:35:49 +08:00
parent 4f73bab9c0
commit a6811b0493
3 changed files with 26 additions and 29 deletions

View File

@ -257,9 +257,11 @@ func (p *Project) GetColumns(ctx context.Context) (ColumnList, error) {
return columns, nil
}
// getDefaultColumn return default column and ensure only one exists
func (p *Project) getDefaultColumn(ctx context.Context) (*Column, error) {
// GetDefaultColumnWithFallback return default column if one exists, otherwise return the first column by sorting and set it as default column
func (p *Project) GetDefaultColumnWithFallback(ctx context.Context) (*Column, error) {
var column Column
// try to find a column "default=true"
has, err := db.GetEngine(ctx).
Where("project_id=? AND `default` = ?", p.ID, true).
Desc("id").Get(&column)
@ -270,23 +272,9 @@ func (p *Project) getDefaultColumn(ctx context.Context) (*Column, error) {
if has {
return &column, nil
}
return nil, ErrProjectColumnNotExist{ColumnID: 0}
}
// MustDefaultColumn returns the default column for a project.
// If one exists, it is returned
// If none exists, the first column will be elevated to the default column of this project
func (p *Project) MustDefaultColumn(ctx context.Context) (*Column, error) {
c, err := p.getDefaultColumn(ctx)
if err != nil && !IsErrProjectColumnNotExist(err) {
return nil, err
}
if c != nil {
return c, nil
}
var column Column
has, err := db.GetEngine(ctx).Where("project_id=?", p.ID).OrderBy("sorting, id").Get(&column)
// try to first the first column by sorting
has, err = db.GetEngine(ctx).Where("project_id=?", p.ID).OrderBy("sorting, id").Get(&column)
if err != nil {
return nil, err
}
@ -298,8 +286,24 @@ func (p *Project) MustDefaultColumn(ctx context.Context) (*Column, error) {
return &column, nil
}
return nil, ErrProjectColumnNotExist{ColumnID: 0}
}
// MustDefaultColumn returns the default column for a project.
// If one exists, it is returned
// If none exists, the first column will be elevated to the default column of this project
// If there is no column, it creates a default column and returns it
func (p *Project) MustDefaultColumn(ctx context.Context) (*Column, error) {
c, err := p.GetDefaultColumnWithFallback(ctx)
if err != nil && !IsErrProjectColumnNotExist(err) {
return nil, err
}
if c != nil {
return c, nil
}
// create a default column if none is found
column = Column{
column := Column{
ProjectID: p.ID,
Default: true,
Title: "Uncategorized",

View File

@ -183,14 +183,6 @@ func (d *IssuePageMetaData) retrieveProjectData(ctx *context.Context) {
ctx.ServerError("ProjectColumnID", err)
return
}
if columnID == 0 {
defaultColumn, err := d.Issue.Project.MustDefaultColumn(ctx)
if err != nil {
ctx.ServerError("MustDefaultColumn", err)
return
}
columnID = defaultColumn.ID
}
for _, col := range columns {
if col.ID == columnID {
d.ProjectsData.SelectedProjectColumn = col

View File

@ -12,6 +12,7 @@ import (
project_model "code.gitea.io/gitea/models/project"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/optional"
"code.gitea.io/gitea/modules/util"
)
// MoveIssuesOnProjectColumn moves or keeps issues in a column and sorts them inside that column
@ -100,9 +101,9 @@ func LoadIssuesFromProject(ctx context.Context, project *project_model.Project,
return nil, err
}
defaultColumn, err := project.MustDefaultColumn(ctx)
defaultColumn, err := project.GetDefaultColumnWithFallback(ctx)
if err != nil {
return nil, err
return nil, util.Iif(errors.Is(err, util.ErrNotExist), nil, err)
}
issueColumnMap, err := issues_model.LoadProjectIssueColumnMap(ctx, project.ID, defaultColumn.ID)