diff --git a/cosiap_api/dynamic_formats/admin.py b/cosiap_api/dynamic_formats/admin.py index 8c38f3f3dad51e4585f3984282c2a4bec5349c1e..4fbffd9c6169c4e12a1989b74b23c729f9d111f8 100644 --- a/cosiap_api/dynamic_formats/admin.py +++ b/cosiap_api/dynamic_formats/admin.py @@ -1,3 +1,5 @@ from django.contrib import admin +from .models import DynamicFormat # Register your models here. +admin.site.register(DynamicFormat) \ No newline at end of file diff --git a/cosiap_api/modalidades/admin.py b/cosiap_api/modalidades/admin.py index 8c38f3f3dad51e4585f3984282c2a4bec5349c1e..d967b01301cda67d5074e206fea6ee47d0a608a3 100644 --- a/cosiap_api/modalidades/admin.py +++ b/cosiap_api/modalidades/admin.py @@ -1,3 +1,6 @@ from django.contrib import admin +from .models import Modalidad, MontoModalidad # Register your models here. +admin.site.register(Modalidad) +admin.site.register(MontoModalidad) \ No newline at end of file diff --git a/cosiap_api/notificaciones/admin.py b/cosiap_api/notificaciones/admin.py index 8c38f3f3dad51e4585f3984282c2a4bec5349c1e..84e79bd3421e65544be5b582677dae039224964c 100644 --- a/cosiap_api/notificaciones/admin.py +++ b/cosiap_api/notificaciones/admin.py @@ -1,3 +1,6 @@ from django.contrib import admin +from .models import Notificacion, NotifInboxLastOpened # Register your models here. +admin.site.register(Notificacion) +admin.site.register(NotifInboxLastOpened) \ No newline at end of file diff --git a/cosiap_api/solicitudes/admin.py b/cosiap_api/solicitudes/admin.py index 8c38f3f3dad51e4585f3984282c2a4bec5349c1e..65dd70440b2232bca4686d9fbc17d7873a79c4f5 100644 --- a/cosiap_api/solicitudes/admin.py +++ b/cosiap_api/solicitudes/admin.py @@ -1,3 +1,8 @@ from django.contrib import admin +from .models import Solicitud, Minuta, Convenio # Register your models here. + +admin.site.register(Solicitud) +admin.site.register(Minuta) +admin.site.register(Convenio) \ No newline at end of file diff --git a/cosiap_api/solicitudes/migrations/0002_creacion_modelo_solicitud.py b/cosiap_api/solicitudes/migrations/0002_creacion_modelo_solicitud.py new file mode 100644 index 0000000000000000000000000000000000000000..d73871c1dec67cd402e4da9777dc867692745ce9 --- /dev/null +++ b/cosiap_api/solicitudes/migrations/0002_creacion_modelo_solicitud.py @@ -0,0 +1,31 @@ +# Generated by Django 5.0.6 on 2024-07-11 03:20 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('modalidades', '0001_creacion_inicial_modulos_dynamic_formats__modalidades__solicitudes'), + ('solicitudes', '0001_creacion_inicial_modulos_dynamic_formats__modalidades__solicitudes'), + ('users', '0010_creacion_modulos_admin_formats_forms_tables_modalidades_solicitudes'), + ] + + operations = [ + migrations.CreateModel( + name='Solicitud', + fields=[ + ('status', models.CharField(max_length=255)), + ('solicitud_n', models.AutoField(primary_key=True, serialize=False)), + ('monto_solicitado', models.FloatField(default=0.0)), + ('monto_aprobado', models.FloatField(default=0.0)), + ('timestamp', models.DateTimeField(auto_now_add=True)), + ('observacion', models.TextField(blank=True, null=True)), + ('convenio', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='solicitudes.convenio')), + ('minuta', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='solicitudes.minuta')), + ('modalidad', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='modalidades.modalidad')), + ('solicitante', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='users.solicitante')), + ], + ), + ] diff --git a/cosiap_api/solicitudes/models.py b/cosiap_api/solicitudes/models.py index 10c663715101cf71bcb7bd22a56acb8f8bc40914..aed171f8032fd167202b9d9d33a21f8b9a6d8bc3 100644 --- a/cosiap_api/solicitudes/models.py +++ b/cosiap_api/solicitudes/models.py @@ -2,6 +2,8 @@ from django.db import models from common.nombres_archivos import nombre_archivo_minuta, nombre_archivo_convenio from common.validadores_campos import validador_archivo_1MB, validador_pdf from dynamic_formats.models import DynamicFormat +from users.models import Solicitante +from modalidades.models import Modalidad class Minuta(models.Model): ''' @@ -44,6 +46,7 @@ class Minuta(models.Model): verbose_name_plural = "Minutas" ordering = ['pk'] + class Convenio(models.Model): ''' Modelo que contiene la información de los Convenios. @@ -83,4 +86,33 @@ class Convenio(models.Model): class Meta: verbose_name = "Minuta" verbose_name_plural = "Minutas" - ordering = ['pk'] \ No newline at end of file + ordering = ['pk'] + + +class Solicitud(models.Model): + """ + Modelo que contiene la información de referencia de una solicitud. + + Campos: + - status (Estado de la solicitud.) + - solicitud_n (Campo autoincremental que identifica la solicitud.) + - minuta (Relación opcional a un modelo Minuta, puede ser nulo, por defecto es nulo.) + - convenio (Relación one-to-one con un modelo Convenio, puede ser nulo, por defecto es nulo.) + - monto_solicitado (Monto solicitado, por defecto es 0.0.) + - monto_aprobado (Monto aprobado, por defecto es 0.0.) + - modalidad (Relación con un modelo Modalidad, requerido. Al eliminar, se establece como nulo.) + - timestamp (Marca de tiempo de la solicitud.) + - observacion (Observaciones adicionales, puede ser nulo.) + - solicitante (Relación con un modelo Solicitante, requerido. Al eliminar, se establece como nulo.) + """ + + status = models.CharField(verbose_name='Status', max_length=255) + solicitud_n = models.AutoField(verbose_name='Num. Solicitud', primary_key=True) + minuta = models.ForeignKey(Minuta, verbose_name='Minuta', on_delete=models.SET_NULL, null=True, blank=True) + convenio = models.OneToOneField(Convenio, verbose_name='Convenio', on_delete=models.SET_NULL, null=True, blank=True) + monto_solicitado = models.FloatField(verbose_name='Monto Solicitado', default=0.0) + monto_aprobado = models.FloatField(verbose_name='Monto Aprobado', default=0.0) + modalidad = models.ForeignKey(Modalidad, verbose_name='Modalidad', on_delete=models.SET_NULL, null=True, blank=True) + timestamp = models.DateTimeField(verbose_name='Timestamp', auto_now_add=True) + observacion = models.TextField(verbose_name='Observación', null=True, blank=True) + solicitante = models.ForeignKey(Solicitante, verbose_name='Solicitante', on_delete=models.SET_NULL, null=True, blank=True)