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:
parent
2b9b77bef2
commit
0434a96c3a
@ -180,7 +180,7 @@ func duplicateViews(s *xorm.Session, pd *ProjectDuplicate, doer web.Auth, taskMa
|
|||||||
|
|
||||||
view.ID = 0
|
view.ID = 0
|
||||||
view.ProjectID = pd.Project.ID
|
view.ProjectID = pd.Project.ID
|
||||||
err = createProjectView(s, view, doer, false)
|
err = createProjectView(s, view, doer, false, false)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -227,6 +227,7 @@ func duplicateViews(s *xorm.Session, pd *ProjectDuplicate, doer web.Auth, taskMa
|
|||||||
taskBuckets = append(taskBuckets, &TaskBucket{
|
taskBuckets = append(taskBuckets, &TaskBucket{
|
||||||
BucketID: bucketMap[tb.BucketID],
|
BucketID: bucketMap[tb.BucketID],
|
||||||
TaskID: taskMap[tb.TaskID],
|
TaskID: taskMap[tb.TaskID],
|
||||||
|
ProjectViewID: viewMap[tb.ProjectViewID],
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -259,10 +259,10 @@ func (pv *ProjectView) Delete(s *xorm.Session, _ web.Auth) (err error) {
|
|||||||
// @Failure 500 {object} models.Message "Internal error"
|
// @Failure 500 {object} models.Message "Internal error"
|
||||||
// @Router /projects/{project}/views [put]
|
// @Router /projects/{project}/views [put]
|
||||||
func (pv *ProjectView) Create(s *xorm.Session, a web.Auth) (err error) {
|
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)
|
_, err = s.Insert(p)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
@ -280,15 +280,21 @@ func createProjectView(s *xorm.Session, p *ProjectView, a web.Auth, createBacklo
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Move all tasks into the new bucket when the project already has tasks
|
// Move all tasks into the new bucket when the project already has tasks
|
||||||
|
if addExistingTasksToView {
|
||||||
err = addTasksToView(s, a, p, b)
|
err = addTasksToView(s, a, p, b)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if addExistingTasksToView {
|
||||||
return RecalculateTaskPositions(s, p, a)
|
return RecalculateTaskPositions(s, p, a)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
func addTasksToView(s *xorm.Session, a web.Auth, pv *ProjectView, b *Bucket) (err error) {
|
func addTasksToView(s *xorm.Session, a web.Auth, pv *ProjectView, b *Bucket) (err error) {
|
||||||
c := &TaskCollection{
|
c := &TaskCollection{
|
||||||
ProjectID: pv.ProjectID,
|
ProjectID: pv.ProjectID,
|
||||||
@ -413,7 +419,7 @@ func CreateDefaultViewsForProject(s *xorm.Session, project *Project, a web.Auth,
|
|||||||
if createDefaultListFilter {
|
if createDefaultListFilter {
|
||||||
list.Filter = "done = false"
|
list.Filter = "done = false"
|
||||||
}
|
}
|
||||||
err = createProjectView(s, list, a, createBacklogBucket)
|
err = createProjectView(s, list, a, createBacklogBucket, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -424,7 +430,7 @@ func CreateDefaultViewsForProject(s *xorm.Session, project *Project, a web.Auth,
|
|||||||
ViewKind: ProjectViewKindGantt,
|
ViewKind: ProjectViewKindGantt,
|
||||||
Position: 200,
|
Position: 200,
|
||||||
}
|
}
|
||||||
err = createProjectView(s, gantt, a, createBacklogBucket)
|
err = createProjectView(s, gantt, a, createBacklogBucket, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -435,7 +441,7 @@ func CreateDefaultViewsForProject(s *xorm.Session, project *Project, a web.Auth,
|
|||||||
ViewKind: ProjectViewKindTable,
|
ViewKind: ProjectViewKindTable,
|
||||||
Position: 300,
|
Position: 300,
|
||||||
}
|
}
|
||||||
err = createProjectView(s, table, a, createBacklogBucket)
|
err = createProjectView(s, table, a, createBacklogBucket, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -447,7 +453,7 @@ func CreateDefaultViewsForProject(s *xorm.Session, project *Project, a web.Auth,
|
|||||||
Position: 400,
|
Position: 400,
|
||||||
BucketConfigurationMode: BucketConfigurationModeManual,
|
BucketConfigurationMode: BucketConfigurationModeManual,
|
||||||
}
|
}
|
||||||
err = createProjectView(s, kanban, a, createBacklogBucket)
|
err = createProjectView(s, kanban, a, createBacklogBucket, true)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user