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")