Compare commits

..

No commits in common. "3d2f97b50fd2d2611f921b684333f12e7a090284" and "b2244e6debca3ca7c4c4473797509fba14aa07a6" have entirely different histories.

6 changed files with 26 additions and 11 deletions

View file

@ -2,8 +2,10 @@
{% block title %}{{ recipe.title }}{% endblock %}
{% block main %}
<h1>{{ recipe.title }}</h1>
{% if perms.recipes.add_recipe %}
<p><a href="{% url 'edit-recipe' recipe.slug %}">Edit recipe name</a></p>
<p><a href="{% url 'add-version' recipe.slug %}">Add version</a></p>
{% endif %}
<ul>
{% for v in versions %}
<li><a href="{{ v.get_absolute_url }}">{{ v.label }}</a></li>

View file

@ -2,10 +2,14 @@
{% block title %}Recipes{% endblock %}
{% block main %}
<h1>Recipes</h1>
{% if perms.recipes.add_recipe %}
<p><a href="{% url 'add-recipe' %}">Add recipe</a></p>
<ul>
{% for recipe in recipes %}
<li><a href="{{ recipe.get_absolute_url }}">{{ recipe.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
{% if perms.recipes.view_recipe %}
<ul>
{% for recipe in recipes %}
<li><a href="{{ recipe.get_absolute_url }}">{{ recipe.title }}</a></li>
{% endfor %}
</ul>
{% endif %}
{% endblock %}

View file

@ -5,9 +5,11 @@
{% if has_multiple_versions %}
<p><a href="{{ recipe.get_absolute_url }}">Show all versions</a></p>
{% endif %}
{% if perms.recipes.add_recipe %}
<p><a href="{% url 'edit-recipe' recipe.slug %}">Edit recipe name</a></p>
<p><a href="{% url 'add-version' recipe.slug %}">Add version</a></p>
<p><a href="{% url 'edit-version' recipe.slug version.slug %}">Edit Version</a></p>
{% endif %}
<ul>
{% for i in ingredients %}
<li>{{ i.text }}</li>

View file

@ -1,7 +1,7 @@
from django.shortcuts import render, get_object_or_404
from .models import Recipe, Version, Ingredient
from .forms import RecipeForm, VersionForm, IngredientFormSet
from django.contrib.auth.decorators import login_required
from django.contrib.auth.decorators import login_required, permission_required
from django.urls import reverse
from django.http.response import HttpResponseRedirect
from django.conf import settings
@ -10,11 +10,13 @@ def get_name_of_user(user):
return user.first_name if user.first_name else user.username
@login_required
@permission_required('recipes.view_recipe')
def recipes(request):
recipes = Recipe.objects.all()
return render(request, 'recipes.html', context={'recipes': recipes})
@login_required
@permission_required('recipes.view_recipe')
def version(request, slug_recipe, slug_version):
recipe = get_object_or_404(Recipe, slug=slug_recipe)
has_multiple_versions = recipe.versions.all().count() > 1 # type: ignore
@ -24,6 +26,7 @@ def version(request, slug_recipe, slug_version):
return render(request, 'version.html', context={'recipe': recipe, 'has_multiple_versions': has_multiple_versions, 'version': version, 'ingredients': ingredients})
@login_required
@permission_required('recipes.view_recipe')
def recipe(request, slug):
recipe = get_object_or_404(Recipe, slug=slug)
versions = recipe.versions.all() # type: ignore
@ -66,7 +69,7 @@ def add_recipe(request):
ingredients_formset = IngredientFormSet(queryset=Ingredient.objects.none(), prefix=INGREDIENTS_FORMSET_PREFIX)
return render(request, 'add-recipe.html', {'recipe_form': recipe_form, 'version_form': version_form, 'ingredients_formset': ingredients_formset})
# TODO refactor Recipe.objects.get ... with get_object_or_404
@login_required
def edit_recipe(request, slug):
recipe = get_object_or_404(Recipe, slug=slug)
@ -83,8 +86,9 @@ def edit_recipe(request, slug):
return render(request, 'edit-recipe.html', {'form': form})
@login_required
@permission_required('recipes.add_recipe')
def add_version(request, slug):
recipe = get_object_or_404(Recipe, slug=slug)
recipe = Recipe.objects.get(slug=slug)
if (recipe.versions.all().count() > 0): # type: ignore
version_initial = {'label': '', 'slug': ''}
else:
@ -114,11 +118,12 @@ def add_version(request, slug):
return render(request, 'add-version.html', {'version_form': version_form, 'ingredients_formset': ingredients_formset})
@login_required
@permission_required('recipes.add_recipe')
def edit_version(request, slug_recipe, slug_version):
recipe = get_object_or_404(Recipe, slug=slug_recipe)
version = get_object_or_404(Version, recipe=recipe, slug=slug_version)
if request.method == 'POST':
if request.method == 'POST': # TODO refactor with add_version
version_form = VersionForm(request.POST, prefix=VERSION_FORM_PREFIX, instance=version, author_placeholder=get_name_of_user(request.user))
ingredients_formset = IngredientFormSet(request.POST, queryset=version.ingredients.all(), prefix=INGREDIENTS_FORMSET_PREFIX) # type: ignore
version_form.recipe_id = recipe.id # type: ignore

View file

@ -18,7 +18,7 @@
{% endif %}
</ul>
<ul>
<li><a href="{% url 'recipes' %}">Recipes</a></li>
{% if perms.recipes %}<li><a href="{% url 'recipes' %}">Recipes</a></li>{% endif %}
</ul>
</nav>
<main>

View file

@ -3,6 +3,8 @@
{% block main %}
<h1>Barn</h1>
<ul>
<li><h2><a href="{% url 'recipes' %}">Recipes</a></h2></li>
{% if perms.recipes %}
<li><h2><a href="{% url 'recipes' %}">Recipes</a></h2></li>
{% endif %}
</ul>
{% endblock %}