0
0
mirror of https://github.com/go-gitea/gitea.git synced 2026-06-29 20:46:36 +02:00

adjustment

This commit is contained in:
Lunny Xiao 2026-02-22 20:20:50 -08:00
parent d1ac56801e
commit f13ae8a2e7
No known key found for this signature in database
GPG Key ID: C3B7C91B632F738A
6 changed files with 39 additions and 46 deletions

View File

@ -204,15 +204,16 @@ func FindWorkflowsByProjectID(ctx context.Context, projectID int64) ([]*Workflow
return workflows, nil
}
func GetWorkflowByID(ctx context.Context, id int64) (*Workflow, error) {
p, exist, err := db.GetByID[Workflow](ctx, id)
func GetWorkflowByProjectAndID(ctx context.Context, projectID, workflowID int64) (*Workflow, error) {
var workflow Workflow
exist, err := db.GetEngine(ctx).Where("project_id=? AND id=?", projectID, workflowID).Get(&workflow)
if err != nil {
return nil, err
}
if !exist {
return nil, db.ErrNotExist{Resource: "ProjectWorkflow", ID: id}
return nil, db.ErrNotExist{Resource: "ProjectWorkflow", ID: workflowID}
}
return p, nil
return &workflow, nil
}
func CreateWorkflow(ctx context.Context, wf *Workflow) error {

View File

@ -126,7 +126,7 @@ func TestCreateWorkflow(t *testing.T) {
assert.NotZero(t, workflow.ID, "Workflow ID should be set after creation")
// Verify the workflow was created
createdWorkflow, err := GetWorkflowByID(t.Context(), workflow.ID)
createdWorkflow, err := GetWorkflowByProjectAndID(t.Context(), project.ID, workflow.ID)
assert.NoError(t, err)
assert.Equal(t, project.ID, createdWorkflow.ProjectID)
assert.Equal(t, WorkflowEventItemOpened, createdWorkflow.WorkflowEvent)
@ -167,7 +167,7 @@ func TestUpdateWorkflow(t *testing.T) {
assert.NoError(t, err)
// Verify the update
updatedWorkflow, err := GetWorkflowByID(t.Context(), workflow.ID)
updatedWorkflow, err := GetWorkflowByProjectAndID(t.Context(), project.ID, workflow.ID)
assert.NoError(t, err)
assert.True(t, updatedWorkflow.Enabled)
assert.Len(t, updatedWorkflow.WorkflowFilters, 1)
@ -198,7 +198,7 @@ func TestDeleteWorkflow(t *testing.T) {
assert.NoError(t, err)
// Verify it was deleted
_, err = GetWorkflowByID(t.Context(), workflowID)
_, err = GetWorkflowByProjectAndID(t.Context(), project.ID, workflowID)
assert.Error(t, err)
assert.True(t, db.IsErrNotExist(err), "Should return ErrNotExist")
}
@ -224,7 +224,7 @@ func TestEnableDisableWorkflow(t *testing.T) {
err = DisableWorkflow(t.Context(), workflow.ID)
assert.NoError(t, err)
disabledWorkflow, err := GetWorkflowByID(t.Context(), workflow.ID)
disabledWorkflow, err := GetWorkflowByProjectAndID(t.Context(), project.ID, workflow.ID)
assert.NoError(t, err)
assert.False(t, disabledWorkflow.Enabled)
@ -232,7 +232,7 @@ func TestEnableDisableWorkflow(t *testing.T) {
err = EnableWorkflow(t.Context(), workflow.ID)
assert.NoError(t, err)
enabledWorkflow, err := GetWorkflowByID(t.Context(), workflow.ID)
enabledWorkflow, err := GetWorkflowByProjectAndID(t.Context(), project.ID, workflow.ID)
assert.NoError(t, err)
assert.True(t, enabledWorkflow.Enabled)
}
@ -294,7 +294,7 @@ func TestWorkflowLoadProject(t *testing.T) {
assert.NoError(t, err)
// Get the workflow
loadedWorkflow, err := GetWorkflowByID(t.Context(), workflow.ID)
loadedWorkflow, err := GetWorkflowByProjectAndID(t.Context(), project.ID, workflow.ID)
assert.NoError(t, err)
assert.Nil(t, loadedWorkflow.Project)

View File

@ -363,6 +363,10 @@ func Workflows(ctx *context.Context) {
break
}
}
if curWorkflow == nil {
ctx.NotFound(nil)
return
}
}
}
ctx.Data["CurWorkflow"] = curWorkflow
@ -455,13 +459,13 @@ func WorkflowsPost(ctx *context.Context) {
}
// Update an existing workflow
wf, err := project_model.GetWorkflowByID(ctx, eventID)
wf, err := project_model.GetWorkflowByProjectAndID(ctx, p.ID, eventID)
if err != nil {
ctx.ServerError("GetWorkflowByID", err)
return
}
if wf.ProjectID != p.ID {
ctx.NotFound(nil)
if db.IsErrNotExist(err) {
ctx.NotFound(nil)
} else {
ctx.ServerError("GetWorkflowByID", err)
}
return
}
@ -494,14 +498,14 @@ func WorkflowsStatus(ctx *context.Context) {
return
}
workflowID, _ := strconv.ParseInt(ctx.PathParam("workflow_id"), 10, 64)
wf, err := project_model.GetWorkflowByID(ctx, workflowID)
workflowID := ctx.PathParamInt64("workflow_id")
wf, err := project_model.GetWorkflowByProjectAndID(ctx, p.ID, workflowID)
if err != nil {
ctx.ServerError("GetWorkflowByID", err)
return
}
if wf.ProjectID != p.ID {
ctx.NotFound(nil)
if db.IsErrNotExist(err) {
ctx.NotFound(nil)
} else {
ctx.ServerError("GetWorkflowByID", err)
}
return
}
@ -534,8 +538,8 @@ func WorkflowsDelete(ctx *context.Context) {
return
}
workflowID, _ := strconv.ParseInt(ctx.PathParam("workflow_id"), 10, 64)
wf, err := project_model.GetWorkflowByID(ctx, workflowID)
workflowID := ctx.PathParamInt64("workflow_id")
wf, err := project_model.GetWorkflowByProjectAndID(ctx, p.ID, workflowID)
if err != nil {
if db.IsErrNotExist(err) {
ctx.NotFound(nil)
@ -544,12 +548,8 @@ func WorkflowsDelete(ctx *context.Context) {
}
return
}
if wf.ProjectID != p.ID {
ctx.NotFound(nil)
return
}
if err := project_model.DeleteWorkflow(ctx, workflowID); err != nil {
if err := project_model.DeleteWorkflow(ctx, wf.ID); err != nil {
ctx.ServerError("DeleteWorkflow", err)
return
}

View File

@ -20,7 +20,7 @@ import (
"code.gitea.io/gitea/models/unit"
"code.gitea.io/gitea/models/unittest"
user_model "code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/container"
"code.gitea.io/gitea/modules/base"
"code.gitea.io/gitea/modules/indexer/issues"
"code.gitea.io/gitea/modules/references"
"code.gitea.io/gitea/modules/setting"
@ -138,9 +138,7 @@ func testNewIssue(t *testing.T, session *TestSession, user, repo string, opts ne
link, exists := htmlDoc.doc.Find("form.ui.form").Attr("action")
assert.True(t, exists, "The template has changed")
labelIDs := container.FilterSlice(opts.LabelIDs, func(id int64) (string, bool) {
return strconv.FormatInt(id, 10), id != 0
})
labelIDs := base.Int64sToStrings(opts.LabelIDs)
req = NewRequestWithValues(t, "POST", link, map[string]string{
"title": opts.Title,

View File

@ -275,7 +275,7 @@ func TestProjectWorkflowUpdate(t *testing.T) {
assert.True(t, result["success"].(bool))
// Verify workflow was updated
updatedWorkflow, err := project_model.GetWorkflowByID(t.Context(), workflow.ID)
updatedWorkflow, err := project_model.GetWorkflowByProjectAndID(t.Context(), project.ID, workflow.ID)
assert.NoError(t, err)
assert.True(t, updatedWorkflow.Enabled)
assert.Len(t, updatedWorkflow.WorkflowFilters, 1)
@ -327,7 +327,7 @@ func TestProjectWorkflowToggleStatus(t *testing.T) {
assert.True(t, result["success"].(bool), "Response should indicate success")
// Verify status was changed to disabled
updatedWorkflow, err := project_model.GetWorkflowByID(t.Context(), workflow.ID)
updatedWorkflow, err := project_model.GetWorkflowByProjectAndID(t.Context(), project.ID, workflow.ID)
assert.NoError(t, err)
assert.False(t, updatedWorkflow.Enabled, "Workflow should be disabled")
})
@ -348,7 +348,7 @@ func TestProjectWorkflowToggleStatus(t *testing.T) {
assert.True(t, result["success"].(bool), "Response should indicate success")
// Verify status was changed back to enabled
updatedWorkflow, err := project_model.GetWorkflowByID(t.Context(), workflow.ID)
updatedWorkflow, err := project_model.GetWorkflowByProjectAndID(t.Context(), project.ID, workflow.ID)
assert.NoError(t, err)
assert.True(t, updatedWorkflow.Enabled, "Workflow should be enabled")
})
@ -395,7 +395,7 @@ func TestProjectWorkflowDelete(t *testing.T) {
assert.True(t, result["success"].(bool), "Delete response should indicate success")
// Verify workflow was deleted - should return ErrNotExist
_, err = project_model.GetWorkflowByID(t.Context(), workflow.ID)
_, err = project_model.GetWorkflowByProjectAndID(t.Context(), project.ID, workflow.ID)
assert.Error(t, err, "Should return an error when workflow doesn't exist")
assert.True(t, db.IsErrNotExist(err), "Error should be ErrNotExist type")
@ -548,7 +548,7 @@ func TestProjectWorkflowValidation(t *testing.T) {
assert.Equal(t, "At least one action must be configured", result["errorMessage"])
// Verify the workflow was not changed
unchangedWorkflow, err := project_model.GetWorkflowByID(t.Context(), workflow.ID)
unchangedWorkflow, err := project_model.GetWorkflowByProjectAndID(t.Context(), project.ID, workflow.ID)
assert.NoError(t, err)
assert.Len(t, unchangedWorkflow.WorkflowActions, 1, "Workflow should still have the original action")
})

View File

@ -698,7 +698,6 @@ onUnmounted(() => {
class="ui small button"
@click="toggleEditMode"
>
<i class="times icon"/>
{{ locale.cancel }}
</button>
@ -708,7 +707,6 @@ onUnmounted(() => {
@click="saveWorkflow"
:disabled="store.saving"
>
<i class="save icon"/>
{{ locale.save }}
</button>
@ -718,7 +716,6 @@ onUnmounted(() => {
class="ui small red button"
@click="deleteWorkflow"
>
<i class="trash icon"/>
{{ locale.delete }}
</button>
</template>
@ -730,17 +727,15 @@ onUnmounted(() => {
class="ui small primary button"
@click="toggleEditMode"
>
<i class="edit icon"/>
{{ locale.edit }}
</button>
<!-- Enable/Disable Button -->
<button
class="ui small button"
:class="store.selectedWorkflow.enabled ? 'basic red' : 'green'"
:class="store.selectedWorkflow.enabled ? 'red' : 'green'"
@click="toggleWorkflowStatus"
>
<i :class="store.selectedWorkflow.enabled ? 'pause icon' : 'play icon'"/>
{{ store.selectedWorkflow.enabled ? locale.disable : locale.enable }}
</button>
@ -750,7 +745,6 @@ onUnmounted(() => {
@click="cloneWorkflow(store.selectedWorkflow)"
title="Clone this workflow"
>
<i class="copy icon"/>
{{ locale.clone }}
</button>
</template>