views.py 1.12 KB
from django.contrib.auth.mixins import LoginRequiredMixin, PermissionRequiredMixin
from django.db.models.expressions import RawSQL
from django.shortcuts import render, get_object_or_404

# Create your views here.
from django.urls import reverse_lazy
from django.views.generic import CreateView

from persona.forms import PersonaForm
from persona.models import Persona


def persona_lista(request):
    personas = Persona.objects.annotate(
        edad=RawSQL("date('now')-fecha_nacimiento", params="")
    ).order_by('documento_identidad')

    edad = request.GET.get('edad', None)
    if edad:
        personas = personas.filter(edad=int(edad))

    return render(request, 'persona/lista_personas.html', {'personas': personas})


def persona_detalle(request, pk):
    persona = get_object_or_404(Persona, id=pk)
    return render(request, 'persona/detalle_persona.html', {'persona': persona})


class PersonaCreateView(PermissionRequiredMixin, CreateView):
    model = Persona
    form_class = PersonaForm
    template_name = 'persona/crear.html'
    success_url = reverse_lazy('persona-lista')
    permission_required = ('persona.add_persona',)