mirror of
https://gitlab.crans.org/bde/nk20
synced 2025-07-21 16:39:12 +02:00
Compare commits
7 Commits
beta
...
4692adde3d
Author | SHA1 | Date | |
---|---|---|---|
4692adde3d | |||
a94c937c6a | |||
0a261e6ad5 | |||
ab9329f62b | |||
483ea26f02 | |||
dde1baa25c | |||
7a7ee47e0b |
1
.gitignore
vendored
1
.gitignore
vendored
@ -48,7 +48,6 @@ backups/
|
|||||||
env/
|
env/
|
||||||
venv/
|
venv/
|
||||||
db.sqlite3
|
db.sqlite3
|
||||||
shell.nix
|
|
||||||
|
|
||||||
# ansibles customs host
|
# ansibles customs host
|
||||||
ansible/host_vars/*.yaml
|
ansible/host_vars/*.yaml
|
||||||
|
@ -145,7 +145,7 @@ class AddIngredientForms(forms.ModelForm):
|
|||||||
polymorphic_ctype__model="transformedfood",
|
polymorphic_ctype__model="transformedfood",
|
||||||
is_ready=False,
|
is_ready=False,
|
||||||
end_of_life='',
|
end_of_life='',
|
||||||
).filter(PermissionBackend.filter_queryset(get_current_request(), TransformedFood, "change")).exclude(pk=pk)
|
).filter(PermissionBackend.filter_queryset(get_current_request(), Food, "change")).exclude(pk=pk)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = TransformedFood
|
model = TransformedFood
|
||||||
|
@ -12,18 +12,21 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|||||||
</h3>
|
</h3>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<ul>
|
<ul>
|
||||||
|
{% if QR_code %}
|
||||||
|
<li> {{QR_code}} </li>
|
||||||
|
{% endif %}
|
||||||
{% for field, value in fields %}
|
{% for field, value in fields %}
|
||||||
<li> {{ field }} : {{ value }}</li>
|
<li> {{ field }} : {{ value }}</li>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% if meals %}
|
{% if meals %}
|
||||||
<li> {% trans "Contained in" %} :
|
<li> {% trans "Contained in" %} :
|
||||||
{% for meal in meals %}
|
{% for meal in meals %}
|
||||||
<a href="{% url "food:transformedfood_view" pk=meal.pk %}">{{ meal.name }}</a>{% if not forloop.last %},{% endif %}
|
<a href="{% url "food:transformedfood_view" pk=meal.pk %}">{{ meal.name }}</a>{% if not forloop.last %},{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</li>
|
</li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if foods %}
|
{% if foods %}
|
||||||
<li> {% trans "Contain" %} :
|
<li> {% trans "Contain" %} :
|
||||||
{% for food in foods %}
|
{% for food in foods %}
|
||||||
<a href="{% url "food:food_view" pk=food.pk %}">{{ food.name }}</a>{% if not forloop.last %},{% endif %}
|
<a href="{% url "food:food_view" pk=food.pk %}">{{ food.name }}</a>{% if not forloop.last %},{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
@ -31,23 +34,23 @@ SPDX-License-Identifier: GPL-3.0-or-later
|
|||||||
{% endif %}
|
{% endif %}
|
||||||
</ul>
|
</ul>
|
||||||
{% if update %}
|
{% if update %}
|
||||||
<a class="btn btn-sm btn-secondary" href="{% url "food:food_update" pk=food.pk %}">
|
<a class="btn btn-sm btn-secondary" href="{% url "food:food_update" pk=food.pk %}">
|
||||||
{% trans "Update" %}
|
{% trans "Update" %}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if add_ingredient %}
|
{% if add_ingredient %}
|
||||||
<a class="btn btn-sm btn-primary" href="{% url "food:add_ingredient" pk=food.pk %}">
|
<a class="btn btn-sm btn-primary" href="{% url "food:add_ingredient" pk=food.pk %}">
|
||||||
{% trans "Add to a meal" %}
|
{% trans "Add to a meal" %}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if manage_ingredients %}
|
{% if manage_ingredients %}
|
||||||
<a class="btn btn-sm btn-secondary" href="{% url "food:manage_ingredients" pk=food.pk %}">
|
<a class="btn btn-sm btn-secondary" href="{% url "food:manage_ingredients" pk=food.pk %}">
|
||||||
{% trans "Manage ingredients" %}
|
{% trans "Manage ingredients" %}
|
||||||
</a>
|
</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<a class="btn btn-sm btn-primary" href="{% url "food:food_list" %}">
|
<a class="btn btn-sm btn-primary" href="{% url "food:food_list" %}">
|
||||||
{% trans "Return to the food list" %}
|
{% trans "Return to the food list" %}
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
{% endblock %}
|
{% endblock %}
|
@ -455,6 +455,8 @@ class FoodDetailView(ProtectQuerysetMixin, LoginRequiredMixin, DetailView):
|
|||||||
context["fields"] = [(
|
context["fields"] = [(
|
||||||
Food._meta.get_field(field).verbose_name.capitalize(),
|
Food._meta.get_field(field).verbose_name.capitalize(),
|
||||||
value) for field, value in fields.items()]
|
value) for field, value in fields.items()]
|
||||||
|
if self.object.QR_code.exists():
|
||||||
|
context["QR_code"] = self.object.QR_code.first()
|
||||||
context["meals"] = self.object.transformed_ingredient_inv.all()
|
context["meals"] = self.object.transformed_ingredient_inv.all()
|
||||||
context["update"] = PermissionBackend.check_perm(self.request, "food.change_food")
|
context["update"] = PermissionBackend.check_perm(self.request, "food.change_food")
|
||||||
context["add_ingredient"] = (self.object.end_of_life == '' and PermissionBackend.check_perm(self.request, "food.change_transformedfood"))
|
context["add_ingredient"] = (self.object.end_of_life == '' and PermissionBackend.check_perm(self.request, "food.change_transformedfood"))
|
||||||
|
34
shell-static.nix
Executable file
34
shell-static.nix
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
# This is a workaround meant for use with the nix package manager. If you don't know what it is or don't use it, please ignore this file.
|
||||||
|
#
|
||||||
|
# The nk20 javascript static location are hardcoded for imperative system.
|
||||||
|
# This make ./manage.py collectstatic hard to use with nixos.
|
||||||
|
#
|
||||||
|
# A workaround is to enter a FHSUserEnv with the static placed under /share/javascript/<static>.
|
||||||
|
# This emulate a debian like system and enable collecting static normally with ./manage.py collectstatics.
|
||||||
|
# The regular shell.nix should be enough for other configurations.
|
||||||
|
#
|
||||||
|
# Warning, you are still supposed to use pip package with a venv !
|
||||||
|
{ pkgs ? import <nixpkgs> {} }:
|
||||||
|
(pkgs.buildFHSUserEnv {
|
||||||
|
name = "pipzone";
|
||||||
|
targetPkgs = pkgs: (with pkgs;
|
||||||
|
let
|
||||||
|
fhs-static = stdenv.mkDerivation {
|
||||||
|
name = "fhs-static";
|
||||||
|
buildCommand = ''
|
||||||
|
mkdir -p $out/share/javascript/bootstrap4
|
||||||
|
mkdir -p $out/share/javascript/jquery
|
||||||
|
ln -s ${python39Packages.xstatic-bootstrap}/lib/python3.9/site-packages/xstatic/pkg/bootstrap/data/* $out/share/javascript/bootstrap4
|
||||||
|
ln -s ${python39Packages.xstatic-jquery}/lib/python3.9/site-packages/xstatic/pkg/jquery/data/* $out/share/javascript/jquery
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
in [
|
||||||
|
fhs-static
|
||||||
|
python39
|
||||||
|
gettext
|
||||||
|
python39Packages.pip
|
||||||
|
python39Packages.virtualenv
|
||||||
|
python39Packages.setuptools
|
||||||
|
]);
|
||||||
|
runScript = "bash";
|
||||||
|
}).env
|
23
shell.nix
Executable file
23
shell.nix
Executable file
@ -0,0 +1,23 @@
|
|||||||
|
# This is meant for use with the nix package manager. If you don't know what it is or don't use it, please ignore this file.
|
||||||
|
#
|
||||||
|
# This shell.nix contains all dependencies require to create a venv and pip install -r requirements.txt.
|
||||||
|
#
|
||||||
|
# Please check shell-static.nix for running ./manage.py collectstatics.
|
||||||
|
{ pkgs ? import <nixpkgs> {} }:
|
||||||
|
pkgs.mkShell {
|
||||||
|
buildInputs = with pkgs; [
|
||||||
|
python39
|
||||||
|
python39Packages.pip
|
||||||
|
python39Packages.setuptools
|
||||||
|
gettext
|
||||||
|
|
||||||
|
];
|
||||||
|
shellHook = ''
|
||||||
|
# Tells pip to put packages into $PIP_PREFIX instead of the usual locations.
|
||||||
|
# See https://pip.pypa.io/en/stable/user_guide/#environment-variables.
|
||||||
|
export PIP_PREFIX=$(pwd)/_build/pip_packages
|
||||||
|
export PYTHONPATH="$PIP_PREFIX/${pkgs.python39.sitePackages}:$PYTHONPATH"
|
||||||
|
export PATH="$PIP_PREFIX/bin:$PATH"
|
||||||
|
unset SOURCE_DATE_EPOCH
|
||||||
|
'';
|
||||||
|
}
|
Reference in New Issue
Block a user