mirror of
https://github.com/adrigongv23/G26---Telemetry-Software.git
synced 2026-08-25 19:43:16 +02:00
Admins.py configurados correctamente dados los cambios realizado en la base de datos
This commit is contained in:
parent
99426f7335
commit
e64a08326c
26 changed files with 416 additions and 34 deletions
Binary file not shown.
Binary file not shown.
|
|
@ -1,13 +1,38 @@
|
|||
from django.contrib import admin
|
||||
from .models import Documento
|
||||
from .models import Documento, Factura
|
||||
|
||||
@admin.register(Documento)
|
||||
class DocumentoAdmin(admin.ModelAdmin):
|
||||
list_display = ('titulo', 'categoria', 'tipo', 'temporada', 'subido_por', 'fecha_subida')
|
||||
list_filter = ('temporada', 'categoria', 'tipo') # ¡Filtros laterales muy útiles!
|
||||
search_fields = ('titulo', 'descripcion')
|
||||
# Columnas principales
|
||||
list_display = ('nombre', 'categoria', 'tipo', 'subido_por', 'fecha_subida')
|
||||
|
||||
# Esto hace que el campo "subido_por" se rellene solo con tu usuario al crear un doc
|
||||
# Filtros por área técnica, tipo de documento y temporada del documento
|
||||
list_filter = ('categoria', 'tipo', 'temporada')
|
||||
|
||||
# Buscador de documentos por su nombre o descripción
|
||||
search_fields = ('nombre', 'descripcion')
|
||||
|
||||
# Para asignar a que temporada pertenece el documento
|
||||
filter_horizontal = ('temporada',)
|
||||
|
||||
# Automatización: para rellenar el creador del nuevo documento de manera automática
|
||||
def save_model(self, request, obj, form, change):
|
||||
if not obj.subido_por:
|
||||
obj.subido_por = request.user
|
||||
super().save_model(request, obj, form, change)
|
||||
|
||||
|
||||
@admin.register(Factura)
|
||||
class FacturaAdmin(admin.ModelAdmin):
|
||||
# Herncia de Documento
|
||||
list_display = ('nombre', 'empresa', 'importe', 'categoria', 'subido_por', 'fecha_subida')
|
||||
|
||||
list_filter = ('categoria', 'temporada')
|
||||
search_fields = ('nombre', 'empresa', 'descripcion')
|
||||
|
||||
filter_horizontal = ('temporada',)
|
||||
|
||||
# Mantenemos la misma automatización
|
||||
def save_model(self, request, obj, form, change):
|
||||
if not obj.subido_por:
|
||||
obj.subido_por = request.user
|
||||
|
|
|
|||
|
|
@ -0,0 +1,66 @@
|
|||
# Generated by Django 6.0.2 on 2026-03-06 19:29
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('documentos', '0001_initial'),
|
||||
('temporadas', '0002_temporada_miembros'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Factura',
|
||||
fields=[
|
||||
('documento_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='documentos.documento')),
|
||||
('empresa', models.CharField(max_length=100, verbose_name='Nombre de la empresa')),
|
||||
('importe', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Importe (€)')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Factura',
|
||||
'verbose_name_plural': 'Facturas',
|
||||
},
|
||||
bases=('documentos.documento',),
|
||||
),
|
||||
migrations.AlterModelOptions(
|
||||
name='documento',
|
||||
options={'ordering': ['-fecha_subida'], 'verbose_name': 'Documento', 'verbose_name_plural': 'Documentos'},
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='documento',
|
||||
name='titulo',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='documento',
|
||||
name='nombre',
|
||||
field=models.CharField(default='Documento antiguo', max_length=100, verbose_name='Nombre del documento'),
|
||||
preserve_default=False,
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='documento',
|
||||
name='categoria',
|
||||
field=models.CharField(choices=[('aerodinamica', 'Aerodinámica'), ('chasis', 'Chasis'), ('business', 'Business & Operations'), ('e_powertrain', 'E-Powertrain'), ('electronica', 'Electrónica'), ('sdf', 'SDF'), ('motor_transmision', 'Motor & Transmisión'), ('software', 'Software'), ('normativa', 'General / Normativa')], max_length=20),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='documento',
|
||||
name='descripcion',
|
||||
field=models.TextField(blank=True, null=True, verbose_name='Descripción del documento'),
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='documento',
|
||||
name='temporada',
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='documento',
|
||||
name='tipo',
|
||||
field=models.CharField(choices=[('fabricacion', 'Fabricación'), ('diseno', 'Diseño / CAD'), ('concepto', 'Concepto'), ('simulacion', 'Simulación'), ('dossier_patrocinado', 'Dossier Patrocinio'), ('informe', 'Informe'), ('tutorial', 'Tutorial'), ('otro', 'Otro')], default='informe', max_length=20),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='documento',
|
||||
name='temporada',
|
||||
field=models.ManyToManyField(related_name='documentos_asociados', to='temporadas.temporada'),
|
||||
),
|
||||
]
|
||||
Binary file not shown.
|
|
@ -23,7 +23,7 @@ class Documento(models.Model):
|
|||
('concepto', 'Concepto'),
|
||||
('simulacion', 'Simulación'),
|
||||
('dossier_patrocinado', 'Dossier Patrocinio'),
|
||||
('informe', 'Informe')
|
||||
('informe', 'Informe'),
|
||||
('tutorial', 'Tutorial'),
|
||||
('otro', 'Otro'),
|
||||
)
|
||||
|
|
@ -53,7 +53,7 @@ class Documento(models.Model):
|
|||
ordering = ['-fecha_subida']
|
||||
|
||||
def __str__(self):
|
||||
return f"{self.nombre} ({self.temporada})"
|
||||
return f"{self.nombre} ({self.get_categoria_display()})"
|
||||
|
||||
def delete(self, *args, **kwargs):
|
||||
# Esto borra el archivo físico del disco duro cuando borras la entrada en la base de datos
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue