mirror of
https://github.com/adrigongv23/G26---Telemetry-Software.git
synced 2026-08-25 03:23:17 +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,14 +1,46 @@
|
|||
from django.contrib import admin
|
||||
from .models import Factura, Patrocinador
|
||||
from .models import Patrocinio, Pieza, Gasto, Ingreso
|
||||
|
||||
@admin.register(Factura)
|
||||
class FacturaAdmin(admin.ModelAdmin):
|
||||
list_display = ('nombre', 'empresa', 'categoria', 'temporada', 'subido_por')
|
||||
# INLINES
|
||||
class PiezaInline(admin.TabularInline):
|
||||
model = Pieza
|
||||
extra = 1
|
||||
|
||||
# PANEL PARA ADMINISTRACIÓN
|
||||
@admin.register(Patrocinio)
|
||||
class PatrocinioAdmin(admin.ModelAdmin):
|
||||
list_display = ('empresa', 'estado', 'tipo_patrocinio', 'importe_economico', 'temporada', 'contacto_equipo')
|
||||
|
||||
# Para editar el estado y pasar de En contacto a Aceptado o Denagado desde la lista, sin tener que hacerlo manual
|
||||
list_editable = ('estado',)
|
||||
|
||||
list_filter = ('estado', 'tipo_patrocinio', 'temporada')
|
||||
search_fields = ('empresa', 'persona_contacto', 'email_contacto')
|
||||
|
||||
# Metemos las piezas en el patrocinio, por si hiciera falta
|
||||
inlines = [PiezaInline]
|
||||
|
||||
@admin.register(Pieza)
|
||||
class PiezaAdmin(admin.ModelAdmin):
|
||||
list_display = ('nombre', 'cantidad', 'patrocinio')
|
||||
search_fields = ('nombre', 'patrocinio__empresa')
|
||||
|
||||
# CONTABILIDAD (Gastos e Ingresos)
|
||||
@admin.register(Gasto)
|
||||
class GastoAdmin(admin.ModelAdmin):
|
||||
# Heredamos los campos de Contabilidad
|
||||
list_display = ('concepto', 'importe', 'categoria', 'fecha', 'temporada')
|
||||
list_filter = ('categoria', 'temporada')
|
||||
search_fields = ('nombre', 'empresa')
|
||||
search_fields = ('concepto', 'observaciones')
|
||||
|
||||
# Barra de navegación por fecha de gasto
|
||||
date_hierarchy = 'fecha'
|
||||
|
||||
@admin.register(Patrocinador)
|
||||
class PatrocinadorAdmin(admin.ModelAdmin):
|
||||
list_display = ('empresa', 'tipo_empresa', 'tipo_patrocinio', 'estado', 'temporada')
|
||||
list_filter = ('estado', 'tipo_empresa', 'tipo_patrocinio', 'temporada')
|
||||
search_fields = ('empresa', 'email_contacto')
|
||||
@admin.register(Ingreso)
|
||||
class IngresoAdmin(admin.ModelAdmin):
|
||||
list_display = ('concepto', 'importe', 'categoria', 'fecha', 'temporada')
|
||||
list_filter = ('categoria', 'temporada')
|
||||
search_fields = ('concepto', 'observaciones')
|
||||
|
||||
# Barra de navegación por fecha de ingreso
|
||||
date_hierarchy = 'fecha'
|
||||
|
|
@ -0,0 +1,92 @@
|
|||
# Generated by Django 6.0.2 on 2026-03-06 19:29
|
||||
|
||||
import django.db.models.deletion
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('gestion', '0001_initial'),
|
||||
('temporadas', '0002_temporada_miembros'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name='patrocinador',
|
||||
name='contacto_equipo',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='patrocinador',
|
||||
name='temporada',
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Gasto',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('concepto', models.CharField(max_length=150)),
|
||||
('importe', models.DecimalField(decimal_places=2, max_digits=10)),
|
||||
('fecha', models.DateField()),
|
||||
('observaciones', models.TextField(blank=True, null=True)),
|
||||
('categoria', 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'), ('general', 'General')], max_length=30, verbose_name='Área del gasto')),
|
||||
('doc_justificativo', models.FileField(blank=True, null=True, upload_to='contabilidad/gastos/', verbose_name='Ticket o Factura (PDF/IMG)')),
|
||||
('temporada', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='%(class)s_registrados', to='temporadas.temporada')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Gasto',
|
||||
'verbose_name_plural': 'Gastos',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Ingreso',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('concepto', models.CharField(max_length=150)),
|
||||
('importe', models.DecimalField(decimal_places=2, max_digits=10)),
|
||||
('fecha', models.DateField()),
|
||||
('observaciones', models.TextField(blank=True, null=True)),
|
||||
('categoria', models.CharField(choices=[('patrocinador', 'Patrocinador'), ('donación', 'Donación'), ('premio', 'Premio'), ('recaudación', 'Recaudación'), ('Cuotas', 'Cuotas'), ('Ventas', 'ventas')], max_length=30, verbose_name='Categoria del Ingreso')),
|
||||
('temporada', models.ForeignKey(on_delete=django.db.models.deletion.PROTECT, related_name='%(class)s_registrados', to='temporadas.temporada')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Ingreso',
|
||||
'verbose_name_plural': 'Ingresos',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Patrocinio',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('empresa', models.CharField(max_length=100, verbose_name='Nombre de la Empresa')),
|
||||
('persona_contacto', models.CharField(blank=True, max_length=100, null=True, verbose_name='Persona de contacto')),
|
||||
('email_contacto', models.EmailField(max_length=254, verbose_name='Correo de contacto')),
|
||||
('tipo_patrocinio', models.CharField(choices=[('economico', 'Económico'), ('piezas/materiales', 'Piezas/Materiales'), ('mixto', 'Mixto (Dinero y Piezas)')], max_length=30)),
|
||||
('estado', models.CharField(choices=[('en_contacto', 'En contacto'), ('aceptado', 'Aceptado / Activo'), ('denegado', 'Denegado')], default='en_contacto', max_length=20)),
|
||||
('importe_economico', models.DecimalField(decimal_places=2, default=0.0, max_digits=10, verbose_name='Importe (€)')),
|
||||
('fecha_contacto', models.DateField(auto_now_add=True)),
|
||||
('contacto_equipo', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='patrocinios_gestionados', to=settings.AUTH_USER_MODEL, verbose_name='Persona al cargo del Patrocinio')),
|
||||
('temporada', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='patrocinios', to='temporadas.temporada', verbose_name='Temporada del patrocinio')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Patrocinio',
|
||||
'verbose_name_plural': 'Patrocinios',
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Pieza',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('nombre', models.CharField(max_length=100, verbose_name='Nombre de la pieza/material')),
|
||||
('cantidad', models.PositiveIntegerField(default=1)),
|
||||
('patrocinio', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='piezas', to='gestion.patrocinio')),
|
||||
],
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='Factura',
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='Patrocinador',
|
||||
),
|
||||
]
|
||||
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue