feat: remove namespaces, make projects infinitely nestable #1362

Merged
konrad merged 68 commits from feature/namespaces-be-gone into main 2023-05-24 14:14:03 +00:00
1 changed files with 10 additions and 11 deletions
Showing only changes of commit 8cff813e9f - Show all commits

View File

@ -453,7 +453,7 @@ func getRawProjectsForUser(s *xorm.Session, opts *projectOptions) (projects map[
return projects, len(allProjects), totalItems, err
}
func getSavedFilterProjects(s *xorm.Session, doer *user.User) (savedFiltersNamespace *Project, err error) {
func getSavedFilterProjects(s *xorm.Session, doer *user.User) (savedFiltersProject *Project, err error) {
savedFilters, err := getSavedFiltersForUser(s, doer)
if err != nil {
return
@ -463,16 +463,16 @@ func getSavedFilterProjects(s *xorm.Session, doer *user.User) (savedFiltersNames
return nil, nil
}
savedFiltersPseudoNamespace := SavedFiltersPseudoProject
savedFiltersPseudoNamespace.OwnerID = doer.ID
*savedFiltersNamespace = *savedFiltersPseudoNamespace
savedFiltersNamespace.ChildProjects = make([]*Project, 0, len(savedFilters))
savedFiltersPseudoParentProject := SavedFiltersPseudoProject
savedFiltersPseudoParentProject.OwnerID = doer.ID
*savedFiltersProject = *savedFiltersPseudoParentProject
savedFiltersProject.ChildProjects = make([]*Project, 0, len(savedFilters))
for _, filter := range savedFilters {
filterProject := filter.toProject()
filterProject.ParentProjectID = savedFiltersNamespace.ID
filterProject.ParentProjectID = savedFiltersProject.ID
filterProject.Owner = doer
savedFiltersNamespace.ChildProjects = append(savedFiltersNamespace.ChildProjects, filterProject)
savedFiltersProject.ChildProjects = append(savedFiltersProject.ChildProjects, filterProject)
}
return
@ -679,7 +679,7 @@ func UpdateProject(s *xorm.Session, project *Project, auth web.Auth, updateProje
"is_archived",
"identifier",
"hex_color",
"namespace_id",
"parent_project_id",
"position",
}
if project.Description != "" {
@ -786,18 +786,17 @@ func updateProjectByTaskID(s *xorm.Session, taskID int64) (err error) {
// Create implements the create method of CRUDable
// @Summary Creates a new project
// @Description Creates a new project in a given namespace. The user needs write-access to the namespace.
// @Description Creates a new project. If a parent project is provided the user needs to have write access to that project.
// @tags project
// @Accept json
// @Produce json
// @Security JWTKeyAuth
// @Param namespaceID path int true "Namespace ID"
// @Param project body models.Project true "The project you want to create."
// @Success 201 {object} models.Project "The created project."
// @Failure 400 {object} web.HTTPError "Invalid project object provided."
// @Failure 403 {object} web.HTTPError "The user does not have access to the project"
// @Failure 500 {object} models.Message "Internal error"
// @Router /namespaces/{namespaceID}/projects [put]
// @Router /projects [put]
func (p *Project) Create(s *xorm.Session, a web.Auth) (err error) {
err = CreateProject(s, p, a)
if err != nil {