add button to add new image to class closes #15
This commit is contained in:
@@ -498,6 +498,88 @@ func handleDataUpload(handle *Handle) {
|
||||
return c.SendJSON(modelClass)
|
||||
})
|
||||
|
||||
type AddNewImage struct {
|
||||
ClassId string `json:"id" validate:"required"`
|
||||
}
|
||||
PostAuthFormJson(handle, "/models/data/class/image", User_Normal, func(c *Context, dat *AddNewImage, file []byte) *Error {
|
||||
model_id, err := GetDbVar[string](c, "m.id", "model_classes as mc inner join models as m on m.id = mc.model_id where mc.id=$1;", dat.ClassId)
|
||||
if err == NotFoundError {
|
||||
return c.JsonBadRequest("Could not find the class")
|
||||
} else if err != nil {
|
||||
return c.E500M("Error getting class information", err)
|
||||
}
|
||||
|
||||
c.Logger.Info("model", "model", *model_id)
|
||||
|
||||
model, err := GetBaseModel(c.Db, *model_id)
|
||||
if err == ModelNotFoundError {
|
||||
return c.JsonBadRequest("Could not find the model")
|
||||
} else if err != nil {
|
||||
return c.E500M("Error getting model information", err)
|
||||
}
|
||||
|
||||
// TODO make this work for zip files as well
|
||||
/*c.Logger.Debug("Processing File", "file", file.Name)
|
||||
data, err := reader.Open(file.Name)
|
||||
if err != nil {
|
||||
c.Logger.Error("Could not open file in zip %s\n", "file name", file.Name, "err", err)
|
||||
back_channel <- index
|
||||
continue
|
||||
}
|
||||
defer data.Close()
|
||||
file_data, err := io.ReadAll(data)
|
||||
if err != nil {
|
||||
c.Logger.Error("Could not open file in zip %s\n", "file name", file.Name, "err", err)
|
||||
back_channel <- index
|
||||
continue
|
||||
}*/
|
||||
|
||||
// TODO check if the file is a valid photo that matched the defined photo on the database
|
||||
|
||||
//parts := strings.Split(file.Name, "/")
|
||||
|
||||
mode := DATA_POINT_MODE_TRAINING
|
||||
// TODO add the mode
|
||||
/*mode := DATA_POINT_MODE_TRAINING
|
||||
if parts[0] == "testing" {
|
||||
mode = DATA_POINT_MODE_TESTING
|
||||
}*/
|
||||
|
||||
data_point_id, err := model_classes.AddDataPoint(c.Db, dat.ClassId, "id://", mode)
|
||||
if err != nil {
|
||||
//c.Logger.Error("Failed to add datapoint", "model", model.Id, "file name", file.Name, "err", err)
|
||||
c.Logger.Error("Failed to add datapoint", "data_point_id", data_point_id)
|
||||
return c.E500M("Could not add image to model", err)
|
||||
}
|
||||
|
||||
file_path := path.Join("savedData", model.Id, "data", data_point_id+"."+model.Format)
|
||||
f, err := os.Create(file_path)
|
||||
if err != nil {
|
||||
//c.Logger.Error("Failed to save datapoint to disk", "model", model.Id, "file name", file.Name, "err", err)
|
||||
c.Logger.Error("Failed to save datapoint to disk", "model", model.Id, "err", err)
|
||||
return c.E500M("Could not add image to model", err)
|
||||
}
|
||||
defer f.Close()
|
||||
f.Write(file)
|
||||
|
||||
if !TestImgForModel(c, model, file_path) {
|
||||
//c.Logger.Errorf("Image did not have valid format for model %s (in zip: %s)!", file_path, file.Name)
|
||||
c.Logger.Errorf("Image did not have valid format for model %s!", file_path)
|
||||
c.Logger.Warn("Not failling updating data point to status -1")
|
||||
message := "Image did not have valid format for the model"
|
||||
if err = model_classes.UpdateDataPointStatus(c.Db, data_point_id, -1, &message); err != nil {
|
||||
//c.Logger.Error("Failed to update data point", "model", model.Id, "file name", file.Name, "err", err)
|
||||
c.Logger.Error("Failed to update data point", "model", model.Id, "err", err)
|
||||
return c.E500M("Could not update information about the data point", err)
|
||||
}
|
||||
return c.JsonBadRequest("Provided file is not a valid image for this model")
|
||||
}
|
||||
|
||||
return c.SendJSON(struct {
|
||||
Id string `json:"id"`
|
||||
}{data_point_id})
|
||||
})
|
||||
|
||||
// ------
|
||||
// ------ CLASS DATA UPLOAD
|
||||
// ------
|
||||
|
||||
Reference in New Issue
Block a user