Browse Source

Añado campo nombre

politica
Celestino Rey 1 year ago
parent
commit
9fbb2bdcdf
11 changed files with 96 additions and 9 deletions
  1. +6
    -0
      Libros/autor.sql
  2. +4
    -2
      Libros/biblioteca/gestion/admin.py
  3. +2
    -2
      Libros/biblioteca/gestion/forms.py
  4. +37
    -0
      Libros/biblioteca/gestion/migrations/0003_autor_libro.py
  5. +18
    -0
      Libros/biblioteca/gestion/migrations/0004_reymotauser_nombre.py
  6. +18
    -0
      Libros/biblioteca/gestion/migrations/0005_alter_reymotauser_nombre.py
  7. +1
    -0
      Libros/biblioteca/gestion/models.py
  8. +1
    -4
      Libros/biblioteca/gestion/templates/_cabecera.html
  9. +1
    -1
      Libros/biblioteca/gestion/urls.py
  10. BIN
      Libros/biblioteca/libros.sqlite3
  11. +8
    -0
      Libros/libro.sql

+ 6
- 0
Libros/autor.sql View File

@ -0,0 +1,6 @@
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE IF NOT EXISTS "gestion_autor" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "nombre" varchar(200) NOT NULL, "biografia" text NULL, "foto" varchar(100) NULL);
INSERT INTO gestion_autor VALUES(1,'Auster, Paul','','autores/auster.jpg');
INSERT INTO gestion_autor VALUES(3,'Noah Yuval Harari','ddgasfdgasdfgasdfgasdfg','autores/220px-Yuval_Noah_Harari_cropped.jpg');
COMMIT;

+ 4
- 2
Libros/biblioteca/gestion/admin.py View File

@ -14,10 +14,11 @@ class ReyMotaUserAdmin(UserAdmin):
add_form = ReyMotaUserCreationForm add_form = ReyMotaUserCreationForm
form = ReyMotaUserChangeForm form = ReyMotaUserChangeForm
model = ReyMotaUser model = ReyMotaUser
list_display = ("email", "is_staff", "is_active", "foto")
list_filter = ("email", "is_staff", "is_active",)
list_display = ("email", "nombre", "is_staff", "is_active", "foto")
list_filter = ("email", "nombre", "is_staff", "is_active",)
fieldsets = ( fieldsets = (
(None, {"fields": ("email", "password")}), (None, {"fields": ("email", "password")}),
("Personal", {"fields": ("nombre",)}),
("Permissions", {"fields": ("is_staff", "is_active", "groups", "user_permissions")}), ("Permissions", {"fields": ("is_staff", "is_active", "groups", "user_permissions")}),
("Varios", {"fields": ("foto",)}), ("Varios", {"fields": ("foto",)}),
) )
@ -29,6 +30,7 @@ class ReyMotaUserAdmin(UserAdmin):
"is_active", "groups", "user_permissions" "is_active", "groups", "user_permissions"
)} )}
), ),
("Personal", {"fields": ("nombre",)}),
("Varios", {"fields": ("foto",)}), ("Varios", {"fields": ("foto",)}),
) )
search_fields = ("email",) search_fields = ("email",)


+ 2
- 2
Libros/biblioteca/gestion/forms.py View File

@ -10,7 +10,7 @@ class AutorForm(forms.ModelForm):
nombre = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'})) nombre = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
biografia = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'})) biografia = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
# foto = forms.FileField(widget=forms.TextInput(attrs={'class': 'form-control', 'type': 'file'}))
foto = forms.FileField(widget=forms.TextInput(attrs={'class': 'form-control', 'type': 'file'}))
class LibroForm(forms.ModelForm): class LibroForm(forms.ModelForm):
class Meta: class Meta:
@ -21,7 +21,7 @@ class LibroForm(forms.ModelForm):
# fecha_publicacion = forms.DateField(widget=forms.TextInput(attrs={'class': 'form-control'})) # fecha_publicacion = forms.DateField(widget=forms.TextInput(attrs={'class': 'form-control'}))
descripcion = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'})) descripcion = forms.CharField(widget=forms.TextInput(attrs={'class': 'form-control'}))
# archivo = forms.FileField(widget=forms.TextInput(attrs={'class': 'form-control', 'type': 'file'})) # archivo = forms.FileField(widget=forms.TextInput(attrs={'class': 'form-control', 'type': 'file'}))
# portada = forms.FileField(widget=forms.TextInput(attrs={'class': 'form-control', 'type': 'file'}))
portada = forms.FileField(widget=forms.TextInput(attrs={'class': 'form-control', 'type': 'file'}))
autor = forms.ModelChoiceField( autor = forms.ModelChoiceField(
queryset=Autor.objects.all(), queryset=Autor.objects.all(),


+ 37
- 0
Libros/biblioteca/gestion/migrations/0003_autor_libro.py View File

@ -0,0 +1,37 @@
# Generated by Django 5.0.7 on 2024-08-09 11:18
import django.core.validators
import django.db.models.deletion
import gestion.models
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('gestion', '0002_autor_reymotauser_is_active_reymotauser_is_staff_and_more'),
]
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), gestion.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='gestion.autor')),
],
),
]

+ 18
- 0
Libros/biblioteca/gestion/migrations/0004_reymotauser_nombre.py View File

@ -0,0 +1,18 @@
# Generated by Django 5.0.7 on 2024-08-09 11:44
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('gestion', '0003_autor_libro'),
]
operations = [
migrations.AddField(
model_name='reymotauser',
name='nombre',
field=models.TextField(blank=True, null=True),
),
]

+ 18
- 0
Libros/biblioteca/gestion/migrations/0005_alter_reymotauser_nombre.py View File

@ -0,0 +1,18 @@
# Generated by Django 5.0.7 on 2024-08-09 11:46
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('gestion', '0004_reymotauser_nombre'),
]
operations = [
migrations.AlterField(
model_name='reymotauser',
name='nombre',
field=models.CharField(blank=True, max_length=200, null=True),
),
]

+ 1
- 0
Libros/biblioteca/gestion/models.py View File

@ -38,6 +38,7 @@ class ReyMotaUser(AbstractBaseUser, PermissionsMixin):
foto = models.ImageField(upload_to="profile_images", blank=True) foto = models.ImageField(upload_to="profile_images", blank=True)
is_staff = models.BooleanField(default=False) is_staff = models.BooleanField(default=False)
is_active = models.BooleanField(default=True) is_active = models.BooleanField(default=True)
nombre = models.CharField(max_length=200, blank=True, null=True)
USERNAME_FIELD = "email" USERNAME_FIELD = "email"
REQUIRED_FIELDS = [] REQUIRED_FIELDS = []


+ 1
- 4
Libros/biblioteca/gestion/templates/_cabecera.html View File

@ -22,10 +22,7 @@
<ul class="dropdown-menu" aria-labelledby="user-dropdown-toggle"> <ul class="dropdown-menu" aria-labelledby="user-dropdown-toggle">
{% if user.is_authenticated %} {% if user.is_authenticated %}
<li> <li>
<a class="dropdown-item">{{ user.last_login }}</a>
</li>
<li>
<a class="dropdown-item">{{ user.get_full_name }}</a>
<a class="dropdown-item">{{ user.nombre }}</a>
</li> </li>
<li><a class="dropdown-item"> <li><a class="dropdown-item">
<form method="post" action="{% url 'logout' %}" > <form method="post" action="{% url 'logout' %}" >


+ 1
- 1
Libros/biblioteca/gestion/urls.py View File

@ -3,7 +3,7 @@ from django.urls import path
from . import views from . import views
urlpatterns = [ urlpatterns = [
path('autores', views.lista_autores, name='lista_autores'),
path('autores/', views.lista_autores, name='lista_autores'),
path('autores/nuevo/', views.nuevo_autor, name='nuevo_autor'), 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>/', views.detalle_autor, name='detalle_autor'),
path('autores/<int:autor_id>/editar/', views.editar_autor, name='editar_autor'), path('autores/<int:autor_id>/editar/', views.editar_autor, name='editar_autor'),


BIN
Libros/biblioteca/libros.sqlite3 View File


+ 8
- 0
Libros/libro.sql View File

@ -0,0 +1,8 @@
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE IF NOT EXISTS "gestion_libro" ("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "titulo" varchar(200) NOT NULL, "descripcion" text NULL, "archivo" varchar(100) NOT NULL, "autor_id" bigint NOT NULL REFERENCES "gestion_autor" ("id") DEFERRABLE INITIALLY DEFERRED, "fecha_publicacion" bigint unsigned NOT NULL CHECK ("fecha_publicacion" >= 0), "portada" varchar(100) NULL);
INSERT INTO gestion_libro VALUES(1,'Sunset Park','buena','libros/Sunset_Park_-_Paul_Auster_12.epub',1,2018,'portadas/sunsetpark.jpeg');
INSERT INTO gestion_libro VALUES(2,'Invisible','ddd','libros/Invisible_-_Paul_Auster_5.epub',1,2024,'portadas/invisible.jpeg');
INSERT INTO gestion_libro VALUES(3,'El Palacio de la Luna','Lentejas caseras','libros/Palacio_de_la_Luna_El_-_Auster_Paul_99.epub',1,2018,'portadas/palacio.jpeg');
INSERT INTO gestion_libro VALUES(4,'21 Lecciones para el siglo XXI','ddd','libros/21_lecciones_para_el_siglo_XXI_-_Yuval_Noah_Harari_234.epub',3,2024,'portadas/lecciones.jpeg');
COMMIT;

Loading…
Cancel
Save