Compare commits
3 commits
67cb69000b
...
88f801cadb
Author | SHA1 | Date | |
---|---|---|---|
88f801cadb | |||
8046f0d237 | |||
08fce0ae16 |
5 changed files with 45 additions and 10 deletions
|
@ -5,8 +5,9 @@ RUN apk add --no-cache python3 py3-build py3-hatchling && \
|
|||
python3 -m build .
|
||||
|
||||
FROM alpine:3.18
|
||||
COPY --from=build /build/dist/comfy-recipes-*-py3-none-any.whl /
|
||||
COPY --from=build /build/dist/ /mnt
|
||||
RUN apk add --no-cache python3 py3-pip && \
|
||||
pip install /comfy-recipes-*-py3-none-any.whl && \
|
||||
apk del py3-pip
|
||||
pip install /mnt/comfy_recipes-*-py3-none-any.whl && \
|
||||
apk del py3-pip && \
|
||||
rm -r /mnt
|
||||
ENTRYPOINT ["/usr/bin/recipes-cli"]
|
||||
|
|
|
@ -289,7 +289,7 @@ class Recipe(Element):
|
|||
source: Optional[SafeHTML],
|
||||
ingredients: List[IngredientInstance],
|
||||
subrecipes: List["Recipe"],
|
||||
price: Optional["PriceDB"],
|
||||
price: Optional["MultiPriceDB"],
|
||||
stepsections: List[StepSection],
|
||||
) -> None:
|
||||
super().__init__(ctx)
|
||||
|
@ -317,7 +317,7 @@ class Recipe(Element):
|
|||
rp = Recipe.from_dict(ctx, partdct)
|
||||
subrecipes.append(rp)
|
||||
|
||||
price: Optional[PriceDB] = None
|
||||
price: Optional[MultiPriceDB] = None
|
||||
pricex: float = 0
|
||||
ingswithprice = 0
|
||||
ingswithoutprice = 0
|
||||
|
@ -335,16 +335,22 @@ class Recipe(Element):
|
|||
# we don't know how to convert currencies yet
|
||||
currency = None
|
||||
break
|
||||
if currency is None or ingswithoutprice != 0 or len(ingredients) == 0:
|
||||
if currency is None or len(ingredients) == 0:
|
||||
price = None
|
||||
else:
|
||||
price = PriceDB(
|
||||
pricedb = PriceDB(
|
||||
ctx=ctx,
|
||||
price=pricex,
|
||||
amount=1,
|
||||
unit=ctx.default_unit,
|
||||
currency=currency,
|
||||
)
|
||||
price = MultiPriceDB(
|
||||
ctx=ctx,
|
||||
pricedb=pricedb,
|
||||
item_count=len(ingredients),
|
||||
item_prices_missing=ingswithoutprice,
|
||||
)
|
||||
|
||||
stepsections: List[StepSection] = []
|
||||
if "steps" in dct:
|
||||
|
@ -594,3 +600,16 @@ class PriceDB(Element):
|
|||
if currency is None:
|
||||
raise RuntimeError("currency not specified and default_currency is also not set")
|
||||
return cls(ctx=ctx, price=price, amount=amount, unit=unit, currency=currency)
|
||||
|
||||
class MultiPriceDB(Element):
|
||||
def __init__(
|
||||
self,
|
||||
ctx: Context,
|
||||
pricedb: PriceDB,
|
||||
item_count: int,
|
||||
item_prices_missing: int,
|
||||
) -> None:
|
||||
super().__init__(ctx)
|
||||
self.pricedb = pricedb
|
||||
self.item_count = item_count
|
||||
self.item_prices_missing = item_prices_missing
|
||||
|
|
|
@ -1,12 +1,24 @@
|
|||
{% macro price(price) -%}
|
||||
{% if price != None and price is defined and price.price is defined %}{{price.price|round(1)|numprint}}{%else%}?{% endif %} {{price.currency}}
|
||||
{%- endmacro %}
|
||||
{% macro multiprice(multiprice, shortform) -%}
|
||||
{% if multiprice != None and multiprice.pricedb != None and multiprice.pricedb is defined and multiprice.pricedb.price is defined -%}
|
||||
{{multiprice.pricedb.price|round(1)|numprint}}
|
||||
{%else%}
|
||||
?
|
||||
{%- endif %}
|
||||
{{multiprice.pricedb.currency}}
|
||||
{%if multiprice.item_prices_missing != 0 and not shortform%}
|
||||
({{multiprice.item_prices_missing}}/{{multiprice.item_count}} prices missing)
|
||||
{%endif%}
|
||||
{%- endmacro %}
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>{% block title %}{% endblock %}</title>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/water.css@2/out/water.css">
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
||||
</head>
|
||||
<body>
|
||||
{% block body %}{% endblock %}
|
||||
|
|
|
@ -3,6 +3,6 @@
|
|||
{%block body %}
|
||||
<h1>Recipes</h1>
|
||||
{% for recipe in recipes %}
|
||||
<li>{% if recipe.price != None %}{{price(recipe.price)}} {%endif%}<a href="{{ recipe.outpath }}">{{ recipe.title }}</a></li>
|
||||
<li>{% if recipe.price != None %}{{multiprice(recipe.price, true)}} {%endif%}<a href="{{ recipe.outpath }}">{{ recipe.title }}</a></li>
|
||||
{% endfor %}
|
||||
{%endblock%}
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{% extends "base.html" %}
|
||||
{% macro ingredientpart(ing) -%}
|
||||
{% if recipe.price != None %}{{price(ing.price)}} {%endif%}
|
||||
{% if ing.price != None %}{{price(ing.price)}} {%endif%}
|
||||
{% if ing.amount != None %} {{ing.amount|amountprint}}
|
||||
{% if ing.unit != None %} {{ing.unit.name}}{% endif %}
|
||||
{%endif%}
|
||||
|
@ -29,7 +29,10 @@
|
|||
{% for ing in rec.ingredients %}
|
||||
<li>{{ingredient(ing)}}</li>
|
||||
{% endfor %}
|
||||
{% if rec.price != None %}price: {{price(rec.price)}}{%endif%}
|
||||
{% if rec.price != None %}
|
||||
<br>
|
||||
price: {{multiprice(rec.price)}}
|
||||
{%endif%}
|
||||
{% endif %}
|
||||
{% if rec.stepsections|length != 0 %}
|
||||
<h3>Steps</h3>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue