From 2d6654abea534a97e81dc79f7480b073713fb5fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beltr=C3=A1n=20Leal=20Juan=20Sebasti=C3=A1n?= Date: Tue, 17 Oct 2023 23:48:12 -0300 Subject: [PATCH 1/3] agregando el estado a los espacios obligados --- Proyecto/espacios_obligados/models.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Proyecto/espacios_obligados/models.py b/Proyecto/espacios_obligados/models.py index 9393448..a47a6e7 100644 --- a/Proyecto/espacios_obligados/models.py +++ b/Proyecto/espacios_obligados/models.py @@ -30,7 +30,7 @@ def __str__(self): class EspacioObligado(models.Model): nombre = models.CharField(max_length=200) - + estado = models.CharField(max_length=100,default='') # Agregando el campo estado sede = models.ForeignKey(Sede, on_delete=models.CASCADE) def __str__(self): return self.nombre \ No newline at end of file From 1ffdbb0ccbaf9a6b8b96c6b0f12c6b1744eef95e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beltr=C3=A1n=20Leal=20Juan=20Sebasti=C3=A1n?= Date: Wed, 18 Oct 2023 22:55:07 -0300 Subject: [PATCH 2/3] agrego avance de creacion de espacio obligado --- Proyecto/espacios_obligados/models.py | 9 ++-- .../inicioAdminProvincial.html | 44 +++++++++++++++++-- Proyecto/usuarios/urls.py | 1 + Proyecto/usuarios/views.py | 36 +++++++++++---- 4 files changed, 74 insertions(+), 16 deletions(-) diff --git a/Proyecto/espacios_obligados/models.py b/Proyecto/espacios_obligados/models.py index a47a6e7..c3e4a4f 100644 --- a/Proyecto/espacios_obligados/models.py +++ b/Proyecto/espacios_obligados/models.py @@ -24,13 +24,14 @@ class Sede(models.Model): direccion = models.CharField(max_length=200) provincia = models.ForeignKey(Provincias, on_delete=models.CASCADE) entidad = models.ForeignKey(Entidad, on_delete=models.CASCADE) + def __str__(self): - return self.nombre + return '%s , %s' % (self.nombre, self.provincia) class EspacioObligado(models.Model): - nombre = models.CharField(max_length=200) - estado = models.CharField(max_length=100,default='') # Agregando el campo estado + estado = models.CharField(max_length=100,default='EN PROCESO') # Agregando el campo estado sede = models.ForeignKey(Sede, on_delete=models.CASCADE) + motivo= models.TextField(blank=True,default='') def __str__(self): - return self.nombre \ No newline at end of file + return self.estado \ No newline at end of file diff --git a/Proyecto/usuarios/templates/adminProvincial/inicioAdminProvincial.html b/Proyecto/usuarios/templates/adminProvincial/inicioAdminProvincial.html index b67ca8d..c065f11 100644 --- a/Proyecto/usuarios/templates/adminProvincial/inicioAdminProvincial.html +++ b/Proyecto/usuarios/templates/adminProvincial/inicioAdminProvincial.html @@ -11,10 +11,46 @@

Bienvenido al Administrador Provincial

-

Admin : {{admin}}

- {% for proyecto in provincias_asociadas %} -
  • {{proyecto}}
  • +

    Admin : {{admin}} +
    Provincias +

    +

    + {% for provincia in provincias %} +
  • {{provincia}}
  • + {% endfor %} +

    +

    Espacios nuevos a aprobar

    + + {% for espacio in espacios %} +
  • + {{ espacio }} +
    + {% csrf_token %} + + +
    +
    + {% csrf_token %} + + + +
    +
  • + {% endfor %} +

    Espacios existentes a aprobar

    + + + -{% endblock %} \ No newline at end of file +{% endblock %} + diff --git a/Proyecto/usuarios/urls.py b/Proyecto/usuarios/urls.py index f0c1173..1cba1d8 100644 --- a/Proyecto/usuarios/urls.py +++ b/Proyecto/usuarios/urls.py @@ -17,4 +17,5 @@ #-- paths para Admin provincial path('inicioAdminProvincial/',views.inicioAdminProvincial,name='inicioAdminProvincial'), path('registroAdminProvincial/', views.adminProvincial_signup, name='registroAdminProvincial'), + path('cambiar_estado_espacio//', views.cambiar_estado_espacio, name='cambiar_estado_espacio'), ] diff --git a/Proyecto/usuarios/views.py b/Proyecto/usuarios/views.py index 2d227bf..41b8798 100644 --- a/Proyecto/usuarios/views.py +++ b/Proyecto/usuarios/views.py @@ -1,6 +1,7 @@ -from django.shortcuts import render, redirect +from django.shortcuts import render, redirect , get_object_or_404 from .forms import AdminProvincialForm, RepresentanteForm,CustomPasswordChangeForm -from .models import Usuario, Representante ,AdminProvincial,Provincias +from .models import Usuario, Representante ,AdminProvincial +from espacios_obligados.models import Sede,EspacioObligado import random from django.contrib.auth import authenticate, login, logout as django_logout from django.contrib import messages @@ -161,11 +162,6 @@ def restDone(request): return render(request, 'usuario/cambio_de_clave/restablecer_contrasenia_enviado.html') -def inicioAdminProvincial(request): - administrador = AdminProvincial.objects.get(user=request.user) - provincias_asociadas = administrador.provincias.all() - return render(request, 'adminProvincial/inicioAdminProvincial.html',{'provincias_asociadas': provincias_asociadas,'admin':administrador}) - def adminProvincial_signup(request): if request.method == 'POST': form = RepresentanteForm(request.POST) @@ -217,4 +213,28 @@ def adminProvincial_signup(request): return redirect('login') else: form = AdminProvincialForm() - return render(request, 'adminProvincial/formAdminProvincial.html', {'form': form}) \ No newline at end of file + return render(request, 'adminProvincial/formAdminProvincial.html', {'form': form}) + +def inicioAdminProvincial(request): + + administrador = AdminProvincial.objects.get(user=request.user) + provincias_asociadas = administrador.provincias.all() + sedes_sin_espacio = Sede.objects.filter(espacioobligado__isnull=True).intersection(Sede.objects.filter(provincia__in = provincias_asociadas)) + return render(request, 'adminProvincial/inicioAdminProvincial.html',{'admin':administrador,'provincias':provincias_asociadas,'espacios':sedes_sin_espacio}) + +def cambiar_estado_espacio(request,sede_id): + print(f'ID del Espacio: {sede_id}') + if request.method == 'POST': + sede = Sede.objects.get(id=sede_id) + espacio=EspacioObligado() + espacio.sede=Sede.objects.get(id=sede_id) + if request.POST.get('action') == 'aprobar': + espacio.estado= 'CARDIO ASISTIDO' + + elif request.POST.get('action') == 'rechazar': + espacio.estado = 'EN PROCESO' + espacio.motivo = request.POST.get('reason') + print(espacio) + espacio.save() + + return redirect('inicioAdminProvincial') \ No newline at end of file From f4f1be12e8c947f370dd0b354935217028de5324 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beltr=C3=A1n=20Leal=20Juan=20Sebasti=C3=A1n?= Date: Sun, 29 Oct 2023 22:57:52 -0300 Subject: [PATCH 3/3] arreglando detalles del merge --- .../migrations/0001_initial.py | 84 +++++++++++++++++++ Proyecto/espacios_obligados/models.py | 9 +- Proyecto/usuarios/migrations/0001_initial.py | 74 ++++++++++++++++ 3 files changed, 162 insertions(+), 5 deletions(-) create mode 100644 Proyecto/espacios_obligados/migrations/0001_initial.py create mode 100644 Proyecto/usuarios/migrations/0001_initial.py diff --git a/Proyecto/espacios_obligados/migrations/0001_initial.py b/Proyecto/espacios_obligados/migrations/0001_initial.py new file mode 100644 index 0000000..9f3a48c --- /dev/null +++ b/Proyecto/espacios_obligados/migrations/0001_initial.py @@ -0,0 +1,84 @@ +# Generated by Django 4.2.5 on 2023-10-29 22:52 + +import django.contrib.gis.db.models.fields +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ('usuarios', '__first__'), + ] + + operations = [ + migrations.CreateModel( + name='DEA', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('aprobacion_ANMAT', models.BooleanField(default=False)), + ('marca', models.CharField(max_length=200)), + ('modelo', models.CharField(max_length=200)), + ('numero_serie', models.CharField(max_length=200)), + ('nombre_representativo', models.CharField(max_length=200)), + ('estado', models.CharField(choices=[('activo', 'Activo'), ('inactivo', 'Inactivo')], default='activo', max_length=10)), + ], + ), + migrations.CreateModel( + name='Entidad', + fields=[ + ('id', models.AutoField(primary_key=True, serialize=False)), + ('razon_social', models.CharField(max_length=200)), + ('cuit', models.CharField(max_length=200)), + ('sector', models.CharField(max_length=200)), + ('tipo', models.CharField(max_length=200)), + ], + ), + migrations.CreateModel( + name='Sede', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nombre', models.CharField(max_length=200)), + ('cant_personas_externas', models.IntegerField(default=0)), + ('superficie', models.IntegerField(default=0)), + ('ubicacion', django.contrib.gis.db.models.fields.PointField(srid=4326)), + ('cant_personal', models.IntegerField(default=0)), + ('direccion', models.CharField(max_length=200)), + ('personal_capacitado', models.BooleanField(default=False)), + ('senaletica', models.BooleanField(default=False)), + ('protocolo_accion', models.BooleanField(default=False)), + ('sistema_emergencia', models.BooleanField(default=False)), + ('deas_decreto', models.IntegerField(default=0)), + ('deas_registrados', models.ManyToManyField(blank=True, to='espacios_obligados.dea')), + ('entidad', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='espacios_obligados.entidad')), + ('provincia', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='usuarios.provincias')), + ('representantes', models.ManyToManyField(to='usuarios.representante')), + ], + ), + migrations.CreateModel( + name='HistorialDEA', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('dia', models.DateField()), + ('servicio', models.CharField(max_length=200)), + ('observaciones', models.CharField(blank=True, max_length=200, null=True)), + ('dea', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='espacios_obligados.dea')), + ], + ), + migrations.CreateModel( + name='EspacioObligado', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('estado', models.CharField(default='EN PROCESO', max_length=100)), + ('motivo', models.TextField(blank=True, default='')), + ('sede', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='espacios_obligados.sede')), + ], + ), + migrations.AddField( + model_name='dea', + name='dea_sede', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='espacios_obligados.sede'), + ), + ] diff --git a/Proyecto/espacios_obligados/models.py b/Proyecto/espacios_obligados/models.py index ef3d469..b5d4885 100644 --- a/Proyecto/espacios_obligados/models.py +++ b/Proyecto/espacios_obligados/models.py @@ -23,17 +23,13 @@ class Sede(models.Model): ubicacion = gis_models.PointField() cant_personal = models.IntegerField(default=0) direccion = models.CharField(max_length=200) - - # Declaración Jurada - personal_capacitado = models.BooleanField(default=False) + # Declaración Jurada senaletica = models.BooleanField(default=False) protocolo_accion = models.BooleanField(default=False) sistema_emergencia = models.BooleanField(default=False) deas_registrados = models.ManyToManyField('DEA', blank=True) deas_decreto = models.IntegerField(default=0) - - provincia = models.ForeignKey(Provincias, on_delete=models.CASCADE) entidad = models.ForeignKey(Entidad, on_delete=models.CASCADE) @@ -45,6 +41,9 @@ class EspacioObligado(models.Model): estado = models.CharField(max_length=100,default='EN PROCESO') # Agregando el campo estado sede = models.ForeignKey(Sede, on_delete=models.CASCADE) motivo= models.TextField(blank=True,default='') + def __str__(self): + return f'!nombre sede {self.sede.nombre} y estado{self.estado}' + class DEA(models.Model): dea_sede = models.ForeignKey(Sede, on_delete=models.CASCADE) aprobacion_ANMAT = models.BooleanField(default=False) diff --git a/Proyecto/usuarios/migrations/0001_initial.py b/Proyecto/usuarios/migrations/0001_initial.py new file mode 100644 index 0000000..bcd3f27 --- /dev/null +++ b/Proyecto/usuarios/migrations/0001_initial.py @@ -0,0 +1,74 @@ +# Generated by Django 4.2.5 on 2023-10-29 22:52 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Usuario', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('password', models.CharField(max_length=128, verbose_name='password')), + ('last_login', models.DateTimeField(blank=True, null=True, verbose_name='last login')), + ('email', models.EmailField(blank=True, max_length=254, unique=True, verbose_name='Mail')), + ('dni', models.PositiveIntegerField(default='', unique=True, verbose_name='DNI')), + ('nombre', models.CharField(default='', max_length=20, verbose_name='Nombre')), + ('apellido', models.CharField(default='', max_length=20, verbose_name='Apellido')), + ('telefono', models.BigIntegerField(default='', verbose_name='Telefono')), + ('is_active', models.BooleanField(default=True)), + ('tipo_usuario', models.CharField(max_length=20, verbose_name='Tipo de Usuario')), + ('is_staff', models.BooleanField(default=False)), + ('is_admin', models.BooleanField(default=False)), + ], + options={ + 'verbose_name': 'usuario', + 'db_table': 'usuarios', + }, + ), + migrations.CreateModel( + name='Provincias', + fields=[ + ('provincia_id', models.AutoField(primary_key=True, serialize=False)), + ('nombre', models.CharField(default='', max_length=30, verbose_name='Nombre')), + ('validez_certificado', models.PositiveIntegerField(default='', verbose_name='Validez del Certificado')), + ], + options={ + 'verbose_name': 'provincia', + 'db_table': 'provincias', + }, + ), + migrations.CreateModel( + name='Representante', + fields=[ + ('representante_id', models.AutoField(primary_key=True, serialize=False)), + ('fecha_registro', models.DateTimeField(auto_now_add=True)), + ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'verbose_name': 'representante', + 'db_table': 'representantes', + }, + ), + migrations.CreateModel( + name='AdminProvincial', + fields=[ + ('admin_provincial_id', models.AutoField(primary_key=True, serialize=False)), + ('fecha_registro', models.DateTimeField(auto_now_add=True)), + ('provincias', models.ManyToManyField(related_name='administradores_provinciales', to='usuarios.provincias')), + ('user', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'verbose_name': 'administrador provincial', + 'db_table': 'administradores_provinciales', + }, + ), + ]