in app/controllers/RecipeController.scala [77:155]
def updateRecipe(id: RecipeId) = authAction(parse.formUrlEncoded) {
implicit request =>
Recipes.findById(id).fold[Result](NotFound) { recipe =>
Forms.editRecipe
.bindFromRequest()
.fold(
{ formWithErrors =>
BadRequest(
views.html.editRecipe(
recipe,
formWithErrors,
BaseImages.list().toSeq,
Roles.listIds
)
)
},
{
case (
description,
baseImageId,
diskSize,
bakeSchedule,
encryptFor
) =>
BaseImages.findById(baseImageId) match {
case Some(baseImage) =>
log.info(
s"Updating recipe ${id} - requested by ${request.user.email}"
)
val customisedRoles = controllers.ControllerHelpers
.parseEnabledRoles(request.body)
customisedRoles.fold(
error => BadRequest(s"Problem parsing roles: $error"),
roles => {
val updatedRecipe = Recipes.update(
recipe,
description,
baseImage,
diskSize,
roles,
modifiedBy = request.user.fullName,
bakeSchedule,
encryptFor
)
updatedRecipe.fold(
e => InternalServerError(e.toString),
{ r =>
bakeScheduler.reschedule(r)
Redirect(routes.RecipeController.showRecipe(id))
.flashing("info" -> "Successfully updated recipe")
}
)
}
)
case None =>
val formWithError = Forms.editRecipe
.fill(
(
description,
baseImageId,
diskSize,
bakeSchedule,
encryptFor
)
)
.withError("baseImageId", "Unknown base image")
BadRequest(
views.html.editRecipe(
recipe,
formWithError,
BaseImages.list().toSeq,
Roles.listIds
)
)
}
}
)
}
}