53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
from django.views.generic.base import TemplateView
|
|
from django.views.generic.edit import DeleteView
|
|
from .forms import TodoForm, TodoEditForm
|
|
from .models import Todo
|
|
from django.shortcuts import redirect, render
|
|
from django.urls import reverse_lazy
|
|
|
|
class TodoListView(TemplateView):
|
|
template_name = "todolist/list.html"
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
context["todos"] = Todo.objects.all()[:5]
|
|
return context
|
|
|
|
class TodoCreateView(TemplateView):
|
|
template_name = "todolist/create.html"
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
context["form"] = TodoForm()
|
|
return context
|
|
|
|
def post(self, request):
|
|
form = TodoForm(request.POST)
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect("list")
|
|
return render(request, "create.html", {"form": form})
|
|
|
|
class TodoEditView(TemplateView):
|
|
template_name = "todolist/edit.html"
|
|
|
|
def get_context_data(self, **kwargs):
|
|
context = super().get_context_data(**kwargs)
|
|
id = kwargs["id"]
|
|
todo = Todo.objects.get(id=id)
|
|
context["form"] = TodoEditForm(instance=todo)
|
|
return context
|
|
|
|
def post(self, request, id):
|
|
todo = Todo.objects.get(id=id)
|
|
form = TodoEditForm(request.POST, instance=todo)
|
|
if form.is_valid():
|
|
form.save()
|
|
return redirect("list")
|
|
return render(request, "edit.html", {"form": form})
|
|
|
|
class TodoDeleteView(DeleteView):
|
|
model = Todo
|
|
success_url = reverse_lazy("list")
|
|
|
|
|