You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

108 lines
3.0 KiB

from django.shortcuts import render, get_object_or_404, redirect
from django.contrib.auth.decorators import login_required
from django.views.generic import CreateView
from django.contrib.auth.forms import UserCreationForm
from django.urls import reverse_lazy
from .models import Autor, Libro
from .forms import AutorForm, LibroForm
@login_required
def principal(request):
return render(request, 'libros/index.html')
# Vistas para los autores
@login_required
def lista_autores(request):
autores = Autor.objects.all()
return render(request, 'libros/lista_autores.html', {'autores': autores})
@login_required
def detalle_autor(request, autor_id):
autor = get_object_or_404(Autor, pk=autor_id)
libros = Libro.objects.filter(autor=autor_id)
return render(request, 'libros/detalle_autor.html', {'autor': autor, 'libros': libros})
@login_required
def nuevo_autor(request):
if request.method == 'POST':
form = AutorForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('lista_autores')
else:
form = AutorForm()
return render(request, 'libros/form_autor.html', {'form': form})
@login_required
def editar_autor(request, autor_id):
autor = get_object_or_404(Autor, pk=autor_id)
if request.method == 'POST':
form = AutorForm(request.POST, request.FILES, instance=autor)
if form.is_valid():
form.save()
return redirect('lista_autores')
else:
form = AutorForm(instance=autor)
return render(request, 'libros/form_autor.html', {'form': form})
@login_required
def eliminar_autor(request, autor_id):
autor = get_object_or_404(Autor, pk=autor_id)
autor.delete()
return redirect('lista_autores')
# Vistas para los libros
@login_required
def lista_libros(request):
libros = Libro.objects.all()
return render(request, 'libros/lista_libros.html', {'libros': libros})
@login_required
def detalle_libro(request, libro_id):
libro = get_object_or_404(Libro, pk=libro_id)
return render(request, 'libros/detalle_libro.html', {'libro': libro})
@login_required
def nuevo_libro(request):
if request.method == 'POST':
form = LibroForm(request.POST, request.FILES)
if form.is_valid():
form.save()
return redirect('lista_libros')
else:
form = LibroForm()
return render(request, 'libros/form_libro.html', {'form': form})
@login_required
def editar_libro(request, libro_id):
libro = get_object_or_404(Libro, pk=libro_id)
if request.method == 'POST':
form = LibroForm(request.POST, request.FILES, instance=libro)
if form.is_valid():
form.save()
return redirect('lista_libros')
else:
form = LibroForm(instance=libro)
return render(request, 'libros/form_libro.html', {'form': form})
@login_required
def eliminar_libro(request, libro_id):
libro = get_object_or_404(Libro, pk=libro_id)
libro.delete()
return redirect('lista_libros')