TandoorRecipes/cookbook/views/views.py
2018-02-05 23:59:31 +01:00

128 lines
3.7 KiB
Python

from django.contrib.auth.decorators import login_required
from django.shortcuts import render, redirect
from django_tables2 import RequestConfig
from cookbook.filters import RecipeFilter
from cookbook.forms import *
from cookbook.helper import dropbox
from cookbook.tables import RecipeTable, CategoryTable, KeywordTable
def index(request):
if request.user.is_authenticated:
f = RecipeFilter(request.GET, queryset=Recipe.objects.all())
table = RecipeTable(f.qs)
RequestConfig(request, paginate={'per_page': 25}).configure(table)
return render(request, 'index.html', {'recipes': table, 'filter': f})
else:
return render(request, 'index.html')
@login_required
def batch_import(request):
if request.method == "POST":
form = ImportForm(request.POST)
if form.is_valid():
dropbox.import_all(form.cleaned_data['path'])
return redirect('index')
else:
form = ImportForm()
return render(request, 'batch/import.html', {'form': form})
@login_required
def batch_category(request):
if request.method == "POST":
form = BatchCategoryForm(request.POST)
if form.is_valid():
word = form.cleaned_data['search']
category = form.cleaned_data['category']
Recipe.objects.filter(name__contains=word).update(category=(Category.objects.get(name=category)).id)
return redirect('index')
else:
form = BatchCategoryForm()
return render(request, 'batch/category.html', {'form': form})
@login_required
def edit_recipe(request, recipe_id):
if request.method == "POST":
form = RecipeForm(request.POST)
if form.is_valid():
recipe = form.save(commit=False)
recipe.created_by = request.user.id
recipe.save()
form.save_m2m()
return redirect('edit_recipe/' + recipe_id)
else:
recipe = Recipe.objects.get(id=recipe_id)
form = EditRecipeForm(instance=recipe)
return render(request, 'new_recipe.html', {'from': form})
@login_required
def edit_category(request, category_id):
return render(request, 'index.html')
@login_required
def edit_keyword(request, keyword_id):
return render(request, 'index.html')
@login_required
def new_recipe(request):
if request.method == "POST":
form = RecipeForm(request.POST)
if form.is_valid():
recipe = form.save(commit=False)
recipe.created_by = request.user.id
recipe.save()
form.save_m2m()
return redirect('index')
else:
form = RecipeForm()
return render(request, 'new_recipe.html', {'form': form})
@login_required
def new_category(request):
if request.method == "POST":
form = CategoryForm(request.POST)
if form.is_valid():
category = form.save(commit=False)
category.created_by = request.user.id
category.save()
return redirect('new_category')
else:
form = CategoryForm()
table = CategoryTable(Category.objects.all())
RequestConfig(request, paginate={'per_page': 25}).configure(table)
return render(request, 'new_category.html', {'form': form, 'table': table})
@login_required
def new_keyword(request):
if request.method == "POST":
form = KeywordForm(request.POST)
if form.is_valid():
keyword = form.save(commit=False)
keyword.created_by = request.user.id
keyword.save()
return redirect('new_keyword')
else:
form = KeywordForm()
table = KeywordTable(Keyword.objects.all())
RequestConfig(request, paginate={'per_page': 25}).configure(table)
return render(request, 'new_keyword.html', {'form': form, 'table': table})