diff --git a/Libros/autor.sql b/Libros/autor.sql new file mode 100644 index 0000000..5957981 --- /dev/null +++ b/Libros/autor.sql @@ -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; diff --git a/Libros/biblioteca/gestion/admin.py b/Libros/biblioteca/gestion/admin.py index 4acf35f..02e8944 100644 --- a/Libros/biblioteca/gestion/admin.py +++ b/Libros/biblioteca/gestion/admin.py @@ -14,10 +14,11 @@ class ReyMotaUserAdmin(UserAdmin): add_form = ReyMotaUserCreationForm form = ReyMotaUserChangeForm 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 = ( (None, {"fields": ("email", "password")}), + ("Personal", {"fields": ("nombre",)}), ("Permissions", {"fields": ("is_staff", "is_active", "groups", "user_permissions")}), ("Varios", {"fields": ("foto",)}), ) @@ -29,6 +30,7 @@ class ReyMotaUserAdmin(UserAdmin): "is_active", "groups", "user_permissions" )} ), + ("Personal", {"fields": ("nombre",)}), ("Varios", {"fields": ("foto",)}), ) search_fields = ("email",) diff --git a/Libros/biblioteca/gestion/forms.py b/Libros/biblioteca/gestion/forms.py index 46a119f..3e48c56 100644 --- a/Libros/biblioteca/gestion/forms.py +++ b/Libros/biblioteca/gestion/forms.py @@ -10,7 +10,7 @@ class AutorForm(forms.ModelForm): nombre = 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 Meta: @@ -21,7 +21,7 @@ class LibroForm(forms.ModelForm): # fecha_publicacion = forms.DateField(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'})) -# 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( queryset=Autor.objects.all(), diff --git a/Libros/biblioteca/gestion/migrations/0003_autor_libro.py b/Libros/biblioteca/gestion/migrations/0003_autor_libro.py new file mode 100644 index 0000000..74044a7 --- /dev/null +++ b/Libros/biblioteca/gestion/migrations/0003_autor_libro.py @@ -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')), + ], + ), + ] diff --git a/Libros/biblioteca/gestion/migrations/0004_reymotauser_nombre.py b/Libros/biblioteca/gestion/migrations/0004_reymotauser_nombre.py new file mode 100644 index 0000000..c0d361e --- /dev/null +++ b/Libros/biblioteca/gestion/migrations/0004_reymotauser_nombre.py @@ -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), + ), + ] diff --git a/Libros/biblioteca/gestion/migrations/0005_alter_reymotauser_nombre.py b/Libros/biblioteca/gestion/migrations/0005_alter_reymotauser_nombre.py new file mode 100644 index 0000000..03fbf53 --- /dev/null +++ b/Libros/biblioteca/gestion/migrations/0005_alter_reymotauser_nombre.py @@ -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), + ), + ] diff --git a/Libros/biblioteca/gestion/models.py b/Libros/biblioteca/gestion/models.py index 73ae3ca..2515b4f 100644 --- a/Libros/biblioteca/gestion/models.py +++ b/Libros/biblioteca/gestion/models.py @@ -38,6 +38,7 @@ class ReyMotaUser(AbstractBaseUser, PermissionsMixin): foto = models.ImageField(upload_to="profile_images", blank=True) is_staff = models.BooleanField(default=False) is_active = models.BooleanField(default=True) + nombre = models.CharField(max_length=200, blank=True, null=True) USERNAME_FIELD = "email" REQUIRED_FIELDS = [] diff --git a/Libros/biblioteca/gestion/templates/_cabecera.html b/Libros/biblioteca/gestion/templates/_cabecera.html index cddaaf2..ecd9c48 100644 --- a/Libros/biblioteca/gestion/templates/_cabecera.html +++ b/Libros/biblioteca/gestion/templates/_cabecera.html @@ -22,10 +22,7 @@