2024-07-09 22:43:50 +03:00
|
|
|
package org
|
|
|
|
|
|
|
|
import (
|
|
|
|
"log"
|
|
|
|
"net/http"
|
|
|
|
|
|
|
|
project_model "code.gitea.io/gitea/models/project"
|
|
|
|
api "code.gitea.io/gitea/modules/structs"
|
|
|
|
"code.gitea.io/gitea/modules/web"
|
|
|
|
"code.gitea.io/gitea/services/context"
|
|
|
|
)
|
|
|
|
|
2024-07-10 10:32:46 +03:00
|
|
|
// CreateProject creates a new project
|
2024-07-09 22:43:50 +03:00
|
|
|
func CreateProject(ctx *context.APIContext) {
|
|
|
|
form := web.GetForm(ctx).(*api.CreateProjectOption)
|
|
|
|
|
|
|
|
log.Println(ctx.ContextUser.ID)
|
|
|
|
|
|
|
|
project := &project_model.Project{
|
|
|
|
OwnerID: ctx.ContextUser.ID,
|
|
|
|
Title: form.Title,
|
|
|
|
Description: form.Content,
|
|
|
|
CreatorID: ctx.Doer.ID,
|
|
|
|
TemplateType: project_model.TemplateType(form.TemplateType),
|
|
|
|
CardType: project_model.CardType(form.CardType),
|
|
|
|
}
|
|
|
|
|
|
|
|
if ctx.ContextUser.IsOrganization() {
|
|
|
|
project.Type = project_model.TypeOrganization
|
|
|
|
} else {
|
|
|
|
project.Type = project_model.TypeIndividual
|
|
|
|
}
|
|
|
|
|
|
|
|
if err := project_model.NewProject(ctx, project); err != nil {
|
|
|
|
ctx.Error(http.StatusInternalServerError, "NewProject", err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
ctx.JSON(http.StatusCreated, map[string]int64{"id": project.ID})
|
|
|
|
}
|
2024-07-10 10:32:46 +03:00
|
|
|
|
|
|
|
// ChangeProjectStatus updates the status of a project between "open" and "close"
|
|
|
|
func ChangeProjectStatus(ctx *context.APIContext) {
|
|
|
|
var toClose bool
|
|
|
|
switch ctx.PathParam(":action") {
|
|
|
|
case "open":
|
|
|
|
toClose = false
|
|
|
|
case "close":
|
|
|
|
toClose = true
|
|
|
|
default:
|
|
|
|
ctx.NotFound("ChangeProjectStatus", nil)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
id := ctx.PathParamInt64(":id")
|
|
|
|
|
|
|
|
if err := project_model.ChangeProjectStatusByRepoIDAndID(ctx, 0, id, toClose); err != nil {
|
|
|
|
ctx.NotFoundOrServerError("ChangeProjectStatusByRepoIDAndID", project_model.IsErrProjectNotExist, err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
ctx.JSON(http.StatusOK, map[string]any{"message": "project status updated successfully"})
|
|
|
|
}
|