Updated the test edit page (still need to do the post page)
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
This commit is contained in:
@ -99,6 +99,47 @@ func TestGetEdit(c flamego.Context, t template.Template, data template.Data) {
|
||||
models.DB.Find(&benchmarks)
|
||||
data["benchmarks"] = benchmarks
|
||||
|
||||
// determine which benchmarks are selected in a test
|
||||
selectedBenchmarks := test.SelectedBenchmarks()
|
||||
data["selectedBenchmarks"] = selectedBenchmarks
|
||||
|
||||
data["title"] = fmt.Sprintf("Editing Test: %s", test.Name)
|
||||
t.HTML(http.StatusOK, "test/edit")
|
||||
}
|
||||
|
||||
func TestPostEdit(c flamego.Context, form forms.TestForm, errs binding.Errors) {
|
||||
if len(errs) > 0 {
|
||||
var err error
|
||||
switch errs[0].Category {
|
||||
case binding.ErrorCategoryValidation:
|
||||
err = errs[0].Err.(validator.ValidationErrors)[0]
|
||||
default:
|
||||
err = errs[0].Err
|
||||
}
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
// find test ID from request
|
||||
testID := c.Param("test_id")
|
||||
|
||||
// find hardware from DB
|
||||
var test models.Test
|
||||
models.DB.Preload("Hardware").Preload("Benchmarks").First(&test, testID)
|
||||
|
||||
test := models.Test{
|
||||
Name: form.Name,
|
||||
Description: form.Description,
|
||||
HardwareID: form.Hardware,
|
||||
}
|
||||
|
||||
_ = models.DB.Create(&test)
|
||||
|
||||
// bind benchmarks to test
|
||||
for _, v := range form.Benchmarks {
|
||||
var benchmark models.Benchmark
|
||||
models.DB.First(&benchmark, v) // find benchmark
|
||||
models.DB.Model(&test).Association("Benchmarks").Append(&benchmark)
|
||||
}
|
||||
|
||||
c.Redirect(fmt.Sprintf("/test/%d", test.ID))
|
||||
}
|
||||
|
Reference in New Issue
Block a user