Merge pull request #146 from wy65701436/master

add post return, add the URI to header location.
This commit is contained in:
Daniel Jiang 2016-04-27 12:11:33 +08:00
commit 00b33d6b4d
6 changed files with 23 additions and 12 deletions

View File

@ -86,3 +86,11 @@ func (b *BaseAPI) ValidateUser() int {
}
return userID
}
// Redirect does redirection to resource URI with http header status code.
func (b *BaseAPI) Redirect(statusCode int, resouceID string) {
requestURI := b.Ctx.Request.RequestURI
resoucreURI := requestURI + "/" + resouceID
b.Ctx.Redirect(statusCode, resoucreURI)
}

View File

@ -87,11 +87,13 @@ func (p *ProjectAPI) Post() {
return
}
project := models.Project{OwnerID: p.userID, Name: projectName, CreationTime: time.Now(), Public: public}
err = dao.AddProject(project)
projectID, err := dao.AddProject(project)
if err != nil {
log.Errorf("Failed to add project, error: %v", err)
p.RenderError(http.StatusInternalServerError, "Failed to add project")
}
p.Redirect(http.StatusCreated, strconv.FormatInt(projectID, 10))
}
// Head ...

View File

@ -158,13 +158,14 @@ func (ua *UserAPI) Post() {
user := models.User{}
ua.DecodeJSONReq(&user)
_, err := dao.Register(user)
userID, err := dao.Register(user)
if err != nil {
log.Errorf("Error occurred in Register: %v", err)
ua.RenderError(http.StatusInternalServerError, "Internal error.")
return
}
ua.Redirect(http.StatusCreated, strconv.FormatInt(userID, 10))
}
// Delete ...

View File

@ -372,7 +372,7 @@ func TestAddProject(t *testing.T) {
OwnerName: currentUser.Username,
}
err := AddProject(project)
_, err := AddProject(project)
if err != nil {
t.Errorf("Error occurred in AddProject: %v", err)
}

View File

@ -29,41 +29,41 @@ import (
//TODO:transaction, return err
// AddProject adds a project to the database along with project roles information and access log records.
func AddProject(project models.Project) error {
func AddProject(project models.Project) (int64, error) {
if isIllegalLength(project.Name, 4, 30) {
return errors.New("project name is illegal in length. (greater than 4 or less than 30)")
return 0, errors.New("project name is illegal in length. (greater than 4 or less than 30)")
}
if isContainIllegalChar(project.Name, []string{"~", "-", "$", "\\", "[", "]", "{", "}", "(", ")", "&", "^", "%", "*", "<", ">", "\"", "'", "/", "?", "@"}) {
return errors.New("project name contains illegal characters")
return 0, errors.New("project name contains illegal characters")
}
o := orm.NewOrm()
p, err := o.Raw("insert into project (owner_id, name, creation_time, update_time, deleted, public) values (?, ?, ?, ?, ?, ?)").Prepare()
if err != nil {
return err
return 0, err
}
now := time.Now()
r, err := p.Exec(project.OwnerID, project.Name, now, now, project.Deleted, project.Public)
if err != nil {
return err
return 0, err
}
projectID, err := r.LastInsertId()
if err != nil {
return err
return 0, err
}
if err = AddProjectMember(projectID, project.OwnerID, models.PROJECTADMIN); err != nil {
return err
return projectID, err
}
accessLog := models.AccessLog{UserID: project.OwnerID, ProjectID: projectID, RepoName: project.Name + "/", GUID: "N/A", Operation: "create", OpTime: time.Now()}
err = AddAccessLog(accessLog)
return err
return projectID, err
}
// IsProjectPublic ...

View File

@ -57,7 +57,7 @@ jQuery(function(){
},
complete: function(xhr, status){
$("#btnPageSignUp").prop("disabled", false);
if(xhr && xhr.status == 200){
if(xhr && xhr.status == 201){
$("#dlgModal")
.dialogModal({
"title": isAdmin == "true" ? i18n.getMessage("title_add_user") : i18n.getMessage("title_sign_up"),