1
0

fix(views): do not create task bucket and task position entries when duplicating a project

Resolves https://github.com/go-vikunja/vikunja/issues/297
Resolves https://community.vikunja.io/t/duplicating-a-board-puts-the-buckets-in-the-original-board/2579

(cherry picked from commit b83448b7a6d78fea07e3e88af45a468b7d5b968b)
This commit is contained in:
kolaente 2024-08-12 15:53:51 +02:00
parent 2b9b77bef2
commit 0434a96c3a
No known key found for this signature in database
GPG Key ID: F40E70337AB24C9B
2 changed files with 20 additions and 13 deletions

View File

@ -180,7 +180,7 @@ func duplicateViews(s *xorm.Session, pd *ProjectDuplicate, doer web.Auth, taskMa
view.ID = 0
view.ProjectID = pd.Project.ID
err = createProjectView(s, view, doer, false)
err = createProjectView(s, view, doer, false, false)
if err != nil {
return
}
@ -225,8 +225,9 @@ func duplicateViews(s *xorm.Session, pd *ProjectDuplicate, doer web.Auth, taskMa
taskBuckets := []*TaskBucket{}
for _, tb := range oldTaskBuckets {
taskBuckets = append(taskBuckets, &TaskBucket{
BucketID: bucketMap[tb.BucketID],
TaskID: taskMap[tb.TaskID],
BucketID: bucketMap[tb.BucketID],
TaskID: taskMap[tb.TaskID],
ProjectViewID: viewMap[tb.ProjectViewID],
})
}

View File

@ -259,10 +259,10 @@ func (pv *ProjectView) Delete(s *xorm.Session, _ web.Auth) (err error) {
// @Failure 500 {object} models.Message "Internal error"
// @Router /projects/{project}/views [put]
func (pv *ProjectView) Create(s *xorm.Session, a web.Auth) (err error) {
return createProjectView(s, pv, a, true)
return createProjectView(s, pv, a, true, true)
}
func createProjectView(s *xorm.Session, p *ProjectView, a web.Auth, createBacklogBucket bool) (err error) {
func createProjectView(s *xorm.Session, p *ProjectView, a web.Auth, createBacklogBucket bool, addExistingTasksToView bool) (err error) {
_, err = s.Insert(p)
if err != nil {
return
@ -280,13 +280,19 @@ func createProjectView(s *xorm.Session, p *ProjectView, a web.Auth, createBacklo
}
// Move all tasks into the new bucket when the project already has tasks
err = addTasksToView(s, a, p, b)
if err != nil {
return
if addExistingTasksToView {
err = addTasksToView(s, a, p, b)
if err != nil {
return
}
}
}
return RecalculateTaskPositions(s, p, a)
if addExistingTasksToView {
return RecalculateTaskPositions(s, p, a)
}
return
}
func addTasksToView(s *xorm.Session, a web.Auth, pv *ProjectView, b *Bucket) (err error) {
@ -413,7 +419,7 @@ func CreateDefaultViewsForProject(s *xorm.Session, project *Project, a web.Auth,
if createDefaultListFilter {
list.Filter = "done = false"
}
err = createProjectView(s, list, a, createBacklogBucket)
err = createProjectView(s, list, a, createBacklogBucket, true)
if err != nil {
return
}
@ -424,7 +430,7 @@ func CreateDefaultViewsForProject(s *xorm.Session, project *Project, a web.Auth,
ViewKind: ProjectViewKindGantt,
Position: 200,
}
err = createProjectView(s, gantt, a, createBacklogBucket)
err = createProjectView(s, gantt, a, createBacklogBucket, true)
if err != nil {
return
}
@ -435,7 +441,7 @@ func CreateDefaultViewsForProject(s *xorm.Session, project *Project, a web.Auth,
ViewKind: ProjectViewKindTable,
Position: 300,
}
err = createProjectView(s, table, a, createBacklogBucket)
err = createProjectView(s, table, a, createBacklogBucket, true)
if err != nil {
return
}
@ -447,7 +453,7 @@ func CreateDefaultViewsForProject(s *xorm.Session, project *Project, a web.Auth,
Position: 400,
BucketConfigurationMode: BucketConfigurationModeManual,
}
err = createProjectView(s, kanban, a, createBacklogBucket)
err = createProjectView(s, kanban, a, createBacklogBucket, true)
if err != nil {
return
}