fix(projects): delete child projects when deleting a project
This commit is contained in:
parent
4615b4dbfb
commit
66b44da85b
@ -1041,10 +1041,28 @@ func (p *Project) Delete(s *xorm.Session, a web.Auth) (err error) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
return events.Dispatch(&ProjectDeletedEvent{
|
err = events.Dispatch(&ProjectDeletedEvent{
|
||||||
Project: fullProject,
|
Project: fullProject,
|
||||||
Doer: a,
|
Doer: a,
|
||||||
})
|
})
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
childProjects := []*Project{}
|
||||||
|
err = s.Where("parent_project_id = ?", fullProject.ID).Find(&childProjects)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, child := range childProjects {
|
||||||
|
err = child.Delete(s, a)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// DeleteBackgroundFileIfExists deletes the list's background file from the db and the filesystem,
|
// DeleteBackgroundFileIfExists deletes the list's background file from the db and the filesystem,
|
||||||
|
@ -137,6 +137,10 @@ func DeleteUser(s *xorm.Session, u *user.User) (err error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, p := range projectsToDelete {
|
for _, p := range projectsToDelete {
|
||||||
|
if p.ParentProjectID != 0 {
|
||||||
|
// Child projects are deleted by p.Delete
|
||||||
|
continue
|
||||||
|
}
|
||||||
err = p.Delete(s, u)
|
err = p.Delete(s, u)
|
||||||
// If the user is the owner of the default project it will be deleted, if they are not the owner
|
// If the user is the owner of the default project it will be deleted, if they are not the owner
|
||||||
// we can ignore the error as the project was shared in that case.
|
// we can ignore the error as the project was shared in that case.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user