Curso-lenguaje-python/python-total/dia_16/mi_web/src/proyecto/base/views.py

90 lines
2.6 KiB
Python
Raw Normal View History

from django.shortcuts import render, redirect
from django.views.generic.list import ListView
from django.views.generic.detail import DetailView
from django.views.generic.edit import CreateView, UpdateView, DeleteView, FormView
from django.contrib.auth.forms import UserCreationForm
from django.contrib.auth import login
from django.contrib.auth.views import LoginView
from django.contrib.auth.mixins import LoginRequiredMixin
from django.urls import reverse_lazy
from .models import Tarea
# Create your views here.
class Logueo(LoginView):
template_name = "base/login.html"
field = '__all__'
redirect_authenticated_user = True
def get_success_url(self):
return reverse_lazy('tareas')
class PaginaRegistro(FormView):
template_name = 'base/registro.html'
form_class = UserCreationForm
redirect_authenticated_user = True
success_url = reverse_lazy('tareas')
def form_valid(self, form):
usuario = form.save()
if usuario is not None:
login(self.request, usuario)
return super(PaginaRegistro, self).form_valid(form)
def get(self, *args, **kwargs):
if self.request.user.is_authenticated:
return redirect('tareas')
return super(PaginaRegistro, self).get(*args, **kwargs)
class ListaPendientes(LoginRequiredMixin, ListView):
model = Tarea
context_object_name = 'tareas'
def get_context_data(self, **kwarg):
context = super().get_context_data(**kwarg)
context['tareas'] = context['tareas'].filter(usuario=self.request.user)
context['count'] = context['tareas'].filter(completo=False).count()
valor_buscado = self.request.GET.get('area-buscar') or ''
if valor_buscado:
context['tareas'] = context['tareas'].filter(
titulo__icontains=valor_buscado)
context['valor_buscado'] = valor_buscado
return context
class DetalleTarea(LoginRequiredMixin, DetailView):
model = Tarea
context_object_name = 'tarea'
template_name = 'base/tarea.html'
class CrearTarea(LoginRequiredMixin, CreateView):
model = Tarea
fields = ['titulo', 'descripcion', 'completo']
success_url = reverse_lazy('tareas')
def form_valid(self, form):
form.instance.usuario = self.request.user
return super(CrearTarea, self).form_valid(form)
class EditarTarea(LoginRequiredMixin, UpdateView):
model = Tarea
fields = ['titulo', 'descripcion', 'completo']
success_url = reverse_lazy('tareas')
class EliminarTarea(LoginRequiredMixin, DeleteView):
model = Tarea
context_object_name = 'tarea'
success_url = reverse_lazy('tareas')