Merge branch 'develop' into feature/copy-to-new-recipe

This commit is contained in:
vabene1111
2022-02-17 10:55:59 +01:00
committed by GitHub
6 changed files with 81 additions and 9 deletions

26
boot.sh
View File

@@ -1,8 +1,30 @@
#!/bin/sh #!/bin/sh
source venv/bin/activate source venv/bin/activate
TANDOOR_PORT="${TANDOOR_PORT:-8080}" TANDOOR_PORT="${TANDOOR_PORT:-8080}"
NGINX_CONF_FILE=/opt/recipes/nginx/conf.d/Recipes.conf
display_warning() {
echo "[WARNING]"
echo -e "$1"
}
echo "Checking configuration..."
# Nginx config file must exist if gunicorn is not active
if [ ! -f "$NGINX_CONF_FILE" ] && [ $GUNICORN_MEDIA -eq 0 ]; then
display_warning "Nginx configuration file could not be found at the default location!\nPath: ${NGINX_CONF_FILE}"
fi
# SECRET_KEY must be set in .env file
if [ -z "${SECRET_KEY}" ]; then
display_warning "The environment variable 'SECRET_KEY' is not set but REQUIRED for running Tandoor!"
fi
# POSTGRES_PASSWORD must be set in .env file
if [ -z "${POSTGRES_PASSWORD}" ]; then
display_warning "The environment variable 'POSTGRES_PASSWORD' is not set but REQUIRED for running Tandoor!"
fi
echo "Waiting for database to be ready..." echo "Waiting for database to be ready..."
@@ -36,4 +58,4 @@ echo "Done"
chmod -R 755 /opt/recipes/mediafiles chmod -R 755 /opt/recipes/mediafiles
exec gunicorn -b :$TANDOOR_PORT --access-logfile - --error-logfile - --log-level INFO recipes.wsgi exec gunicorn -b :$TANDOOR_PORT --access-logfile - --error-logfile - --log-level INFO recipes.wsgi

View File

@@ -12,6 +12,7 @@ from django.contrib.auth.models import Group
from django.contrib.auth.password_validation import validate_password from django.contrib.auth.password_validation import validate_password
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.db.models import Avg, Q, Sum from django.db.models import Avg, Q, Sum
from django.db.models.functions import Lower
from django.http import HttpResponseRedirect, JsonResponse from django.http import HttpResponseRedirect, JsonResponse
from django.shortcuts import get_object_or_404, redirect, render from django.shortcuts import get_object_or_404, redirect, render
from django.urls import reverse, reverse_lazy from django.urls import reverse, reverse_lazy

View File

@@ -210,6 +210,18 @@
<b-button pill variant="primary" size="sm" class="ml-1" @click="step.file_visible = true" v-if="!step.file_visible"> <b-button pill variant="primary" size="sm" class="ml-1" @click="step.file_visible = true" v-if="!step.file_visible">
<i class="fas fa-plus-circle"></i> {{ $t("File") }} <i class="fas fa-plus-circle"></i> {{ $t("File") }}
</b-button> </b-button>
<b-button
pill
variant="primary"
size="sm"
class="ml-1"
@click="
paste_step = step.id
$bvModal.show('id_modal_paste_ingredients')
"
>
<i class="fas fa-plus-circle"></i> {{ $t("paste_ingredients") }}
</b-button>
</div> </div>
</div> </div>
@@ -516,6 +528,17 @@
</draggable> </draggable>
</b-modal> </b-modal>
<!-- modal for pasting list of ingredients -->
<b-modal
id="id_modal_paste_ingredients"
v-bind:title="$t('ingredient_list')"
@ok="appendIngredients"
@cancel="paste_ingredients = paste_step = undefined"
@close="paste_ingredients = paste_step = undefined"
>
<b-form-textarea id="paste_ingredients" v-model="paste_ingredients" :placeholder="$t('paste_ingredients_placeholder')" rows="10"></b-form-textarea>
</b-modal>
<!-- form to create files on the fly --> <!-- form to create files on the fly -->
<generic-modal-form :model="Models.USERFILE" :action="Actions.CREATE" :show="show_file_create" @finish-action="fileCreated" /> <generic-modal-form :model="Models.USERFILE" :action="Actions.CREATE" :show="show_file_create" @finish-action="fileCreated" />
</div> </div>
@@ -574,7 +597,8 @@ export default {
recipes_loading: false, recipes_loading: false,
message: "", message: "",
options_limit: 25, options_limit: 25,
paste_ingredients: undefined,
paste_step: undefined,
show_file_create: false, show_file_create: false,
step_for_file_create: undefined, step_for_file_create: undefined,
} }
@@ -942,6 +966,29 @@ export default {
energy: function () { energy: function () {
return energyHeading() return energyHeading()
}, },
appendIngredients: function () {
let ing_list = this.paste_ingredients.split(/\r?\n/)
let step = this.recipe.steps.findIndex((x) => x.id == this.paste_step)
let order = Math.max(...this.recipe.steps[step].ingredients.map((x) => x.order), -1) + 1
this.recipe.steps[step].ingredients_visible = true
ing_list.forEach((ing) => {
if (ing.trim() !== "") {
this.genericPostAPI("api_ingredient_from_string", { text: ing }).then((result) => {
let unit = null
if (result.data.unit !== "") {
unit = { name: result.data.unit }
}
this.recipe.steps[step].ingredients.splice(order, 0, {
amount: result.data.amount,
unit: unit,
food: { name: result.data.food },
note: result.data.note,
})
})
order++
}
})
},
}, },
} }
</script> </script>

View File

@@ -207,8 +207,7 @@ export default {
if (!cancel) { if (!cancel) {
console.log("saving", { ...this.mealplan_settings, ...this.entryEditing }) console.log("saving", { ...this.mealplan_settings, ...this.entryEditing })
this.$bvModal.hide(`edit-modal`) this.$bvModal.hide(`edit-modal`)
this.$emit("save-entry", { ...this.mealplan_settings, ...this.entryEditing }) this.$emit("save-entry", { ...this.mealplan_settings, ...this.entryEditing, ...{ addshopping: this.entryEditing.addshopping && !this.autoMealPlan } })
console.log("after emit", { ...this.mealplan_settings, ...this.entryEditing }.addshopping)
} }
}, },
deleteEntry() { deleteEntry() {

View File

@@ -298,5 +298,8 @@
"review_shopping": "Review shopping entries before saving", "review_shopping": "Review shopping entries before saving",
"view_recipe": "View Recipe", "view_recipe": "View Recipe",
"copy_to_new": "Copy To New Recipe", "copy_to_new": "Copy To New Recipe",
"recipe_name": "Recipe Name" "recipe_name": "Recipe Name",
"paste_ingredients_placeholder": "Paste ingredient list here...",
"paste_ingredients": "Paste Ingredients",
"ingredient_list": "Ingredient List"
} }

View File

@@ -5369,9 +5369,9 @@ flush-write-stream@^1.0.0:
readable-stream "^2.3.6" readable-stream "^2.3.6"
follow-redirects@^1.0.0, follow-redirects@^1.14.4: follow-redirects@^1.0.0, follow-redirects@^1.14.4:
version "1.14.7" version "1.14.8"
resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.7.tgz#2004c02eb9436eee9a21446a6477debf17e81685" resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.14.8.tgz#016996fb9a11a100566398b1c6839337d7bfa8fc"
integrity sha512-+hbxoLbFMbRKDwohX8GkTataGqO6Jb7jGwpAlwgy2bIz25XtRm7KEzJM76R1WiNT5SwZkX4Y75SwBolkpmE7iQ== integrity sha512-1x0S9UVJHsQprFcEC/qnNzBLcIxsjAV905f/UkQxbclCsoTWlacCNOpQa/anodLl2uaEKFhfWOvM2Qg77+15zA==
for-in@^1.0.2: for-in@^1.0.2:
version "1.0.2" version "1.0.2"