Browse Source

Añado comandos para limpieza de datos y quito libros

main
Celestino Rey 10 months ago
parent
commit
b1d8924889
13 changed files with 7 additions and 242 deletions
  1. +0
    -0
      libros/__init__.py
  2. +0
    -8
      libros/admin.py
  3. +0
    -6
      libros/apps.py
  4. +0
    -30
      libros/forms.py
  5. +0
    -38
      libros/migrations/0001_initial.py
  6. +0
    -0
      libros/migrations/__init__.py
  7. +0
    -32
      libros/models.py
  8. +0
    -3
      libros/tests.py
  9. +0
    -21
      libros/urls.py
  10. +0
    -103
      libros/views.py
  11. +0
    -0
      lyrics/management/commands/borra_lyrics.py
  12. +7
    -0
      repostajes/management/commands/borra_repostajes.py
  13. +0
    -1
      reymota/settings.py

+ 0
- 0
libros/__init__.py View File


+ 0
- 8
libros/admin.py View File

@ -1,8 +0,0 @@
from django.contrib import admin
# Register your models here.
from .models import Autor, Libro
admin.site.register(Autor)
admin.site.register(Libro)

+ 0
- 6
libros/apps.py View File

@ -1,6 +0,0 @@
from django.apps import AppConfig
class LibrosConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'libros'

+ 0
- 30
libros/forms.py View File

@ -1,30 +0,0 @@
from django import forms
from .models import Autor, Libro
class AutorForm(forms.ModelForm):
class Meta:
model = Autor
fields = ['nombre', 'biografia', 'foto']
nombre = forms.CharField(
widget=forms.TextInput(attrs={'class': 'form-control'}))
biografia = forms.CharField(
widget=forms.TextInput(attrs={'class': 'form-control'}))
class LibroForm(forms.ModelForm):
class Meta:
model = Libro
fields = ['titulo', 'autor', 'fecha_publicacion', 'descripcion',
'archivo', 'portada']
titulo = forms.CharField(
widget=forms.TextInput(attrs={'class': 'form-control'}))
descripcion = forms.CharField(
widget=forms.TextInput(attrs={'class': 'form-control'}))
autor = forms.ModelChoiceField(
queryset=Autor.objects.all(),
widget=forms.Select(attrs={'class': 'form-control'}))

+ 0
- 38
libros/migrations/0001_initial.py View File

@ -1,38 +0,0 @@
# Generated by Django 4.2 on 2024-09-09 14:52
import django.core.validators
from django.db import migrations, models
import django.db.models.deletion
import libros.models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Autor',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('nombre', models.CharField(max_length=200)),
('biografia', models.TextField(blank=True, null=True)),
('foto', models.ImageField(blank=True, null=True, upload_to='autores/')),
],
),
migrations.CreateModel(
name='Libro',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('titulo', models.CharField(max_length=200)),
('fecha_publicacion', models.PositiveBigIntegerField(default=2024, validators=[django.core.validators.MinValueValidator(1984), libros.models.max_value_current_year])),
('descripcion', models.TextField(blank=True, null=True)),
('archivo', models.FileField(upload_to='libros/')),
('portada', models.ImageField(blank=True, null=True, upload_to='portadas/')),
('autor', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='libros.autor')),
],
),
]

+ 0
- 0
libros/migrations/__init__.py View File


+ 0
- 32
libros/models.py View File

@ -1,32 +0,0 @@
from django.db import models
import datetime
from django.core.validators import MaxValueValidator, MinValueValidator
def current_year():
return datetime.date.today().year
def max_value_current_year(value):
return MaxValueValidator(current_year())(value)
class Autor(models.Model):
nombre = models.CharField(max_length=200)
biografia = models.TextField(blank=True, null=True)
foto = models.ImageField(upload_to='autores/', blank=True, null=True) # Nuevo campo
def __str__(self):
return self.nombre
class Libro(models.Model):
titulo = models.CharField(max_length=200)
autor = models.ForeignKey(Autor, on_delete=models.CASCADE)
fecha_publicacion = models.PositiveBigIntegerField(default=current_year(), validators=[MinValueValidator(1984), max_value_current_year])
descripcion = models.TextField(blank=True, null=True)
archivo = models.FileField(upload_to='libros/')
portada = models.ImageField(upload_to='portadas/', blank=True, null=True) # Nuevo campo
def __str__(self):
return self.titulo

+ 0
- 3
libros/tests.py View File

@ -1,3 +0,0 @@
from django.test import TestCase
# Create your tests here.

+ 0
- 21
libros/urls.py View File

@ -1,21 +0,0 @@
from django.urls import path
from . import views
app_name = 'libros'
urlpatterns = [
path('', views.principal, name='principal'),
path('autores/', views.lista_autores, name='lista_autores'),
path('autores/nuevo/', views.nuevo_autor, name='nuevo_autor'),
path('autores/<int:autor_id>/', views.detalle_autor, name='detalle_autor'),
path('autores/<int:autor_id>/editar/', views.editar_autor, name='editar_autor'),
path('autores/<int:autor_id>/eliminar/', views.eliminar_autor, name='eliminar_autor'),
path('libros/', views.lista_libros, name='lista_libros'),
path('libros/nuevo/', views.nuevo_libro, name='nuevo_libro'),
path('libros/<int:libro_id>/', views.detalle_libro, name='detalle_libro'),
path('libros/<int:libro_id>/editar/', views.editar_libro, name='editar_libro'),
path('libros/<int:libro_id>/eliminar/', views.eliminar_libro, name='eliminar_libro'),
]

+ 0
- 103
libros/views.py View File

@ -1,103 +0,0 @@
from django.shortcuts import render, get_object_or_404, redirect
from django.contrib.auth.decorators import login_required
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('libros: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('libros: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('libros: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('libros: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('libros: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('libros:lista_libros')

lyrics/management/commands/limpia_datos.py → lyrics/management/commands/borra_lyrics.py View File


+ 7
- 0
repostajes/management/commands/borra_repostajes.py View File

@ -0,0 +1,7 @@
from django.core.management.base import BaseCommand
from repostajes.models import Vehiculo, Repostaje
class Command(BaseCommand):
def handle(self, *args, **options):
Vehiculo.objects.all().delete()
Repostaje.objects.all().delete()

+ 0
- 1
reymota/settings.py View File

@ -40,7 +40,6 @@ INSTALLED_APPS = [
'django.contrib.staticfiles',
'repostajes',
'libros',
'reymotausers',
'lyrics',
]


Loading…
Cancel
Save