in app/controllers/RecipeController.scala [164:248]
def createRecipe = authAction(parse.formUrlEncoded) { implicit request =>
Forms.createRecipe
.bindFromRequest()
.fold(
{ formWithErrors =>
BadRequest(
views.html
.newRecipe(formWithErrors, BaseImages.list().toSeq, Roles.listIds)
)
},
{
case (
id,
description,
baseImageId,
diskSize,
bakeSchedule,
encryptedCopies
) =>
log.info(
s"Creating recipe ${id} - requested by ${request.user.email}"
)
Recipes.findById(id) match {
case Some(existingRecipe) =>
val formWithError = Forms.createRecipe
.fill(
(
id,
description,
baseImageId,
diskSize,
bakeSchedule,
encryptedCopies
)
)
.withError("id", "This recipe ID is already in use")
Conflict(views.html.newBaseImage(formWithError, Roles.listIds))
case None =>
BaseImages.findById(baseImageId) match {
case Some(baseImage) =>
val customisedRoles = controllers.ControllerHelpers
.parseEnabledRoles(request.body)
customisedRoles.fold(
error => BadRequest(s"Problem parsing roles: $error"),
roles => {
val recipe = Recipes.create(
id,
description,
baseImage,
diskSize,
roles,
createdBy = request.user.fullName,
bakeSchedule,
encryptedCopies
) // TODO: FIX THIS
bakeScheduler.reschedule(recipe)
Redirect(routes.RecipeController.showRecipe(id))
.flashing("info" -> "Successfully created recipe")
}
)
case None =>
val formWithError = Forms.createRecipe
.fill(
(
id,
description,
baseImageId,
diskSize,
bakeSchedule,
encryptedCopies
)
)
.withError("baseImageId", "Unknown base image")
BadRequest(
views.html.newRecipe(
formWithError,
BaseImages.list().toSeq,
Roles.listIds
)
)
}
}
}
)
}