diff --git a/INCUBATE/Dockerfile b/INCUBATE/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..9dc3749ccbc1f29ebc5d4b05de05bdf89abdde05 --- /dev/null +++ b/INCUBATE/Dockerfile @@ -0,0 +1,20 @@ +FROM debian:bullseye-slim + +RUN apt-get update +RUN apt-get install apache2 python3 python3-pip libmariadb-dev \ + libapache2-mod-wsgi-py3 python3-dev openssh-client nano -y + +# Configure timezone +ENV TZ=America/Mexico_City +RUN ln -snf /etc/l/usr/share/zoneinfo/$TZocaltime && echo $TZ > /etc/timezone + +# Application environment +WORKDIR /app + +COPY ./incubate/requirements.txt /app/requirements.txt + +RUN pip3 install -r /app/requirements.txt + +EXPOSE 80 + +CMD ["apachectl", "-D", "FOREGROUND"] diff --git a/INCUBATE/docker-compose.yml b/INCUBATE/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..90c16640bf903033b2fcd037ed6b6e25dbc7c0d0 --- /dev/null +++ b/INCUBATE/docker-compose.yml @@ -0,0 +1,33 @@ +version: '3.3' + +services: + app: + build: + context: . + dockerfile: ./Dockerfile + container_name: incubate + #restart: always + depends_on: + - db + ports: + - 8000:8000 + volumes: + - ./incubate/:/app + + db: + image: mariadb + container_name: incubate-db + #restart: always + environment: + MYSQL_DATABASE: incubatedb + MYSQL_USER: incubatedb_user + MYSQL_PASSWORD: incubatedb123 + MYSQL_ROOT_PASSWORD: admin1234 + volumes: + - db:/var/lib/mysql + ports: + - 3310:3306 + +volumes: + db: + diff --git a/INCUBATE/incubate/incubate/Formulario/__init__.py b/INCUBATE/incubate/incubate/Formulario/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/INCUBATE/incubate/incubate/Formulario/__pycache__/__init__.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..94fc0bb1111697fff4fb345c8b0cca3e7f3ad34d Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/__pycache__/__init__.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/__pycache__/admin.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/__pycache__/admin.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e264f82c0d5fc11bc09c991133e77e3a6d658034 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/__pycache__/admin.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/__pycache__/apps.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/__pycache__/apps.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e9d40dee0faad53ac250d9f36981cfaac023b9e4 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/__pycache__/apps.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/__pycache__/forms.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/__pycache__/forms.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fd5fcca6a336fa8311307da0ab9971923f1c74c3 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/__pycache__/forms.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/__pycache__/models.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/__pycache__/models.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..609807fb92a87844f9b5f7b589327593cd019881 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/__pycache__/models.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/__pycache__/urls.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/__pycache__/urls.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b5d6a51220cbb219399b8cdf3a06b9f4bd2df982 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/__pycache__/urls.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/__pycache__/utils.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/__pycache__/utils.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f24d30fb766aa7fe749ca73237c567a0ebd65130 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/__pycache__/utils.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/__pycache__/validadores.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/__pycache__/validadores.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d4da272bd547386b9183058ae2a562a22c63c20b Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/__pycache__/validadores.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/__pycache__/views.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/__pycache__/views.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..86076676c62a10c23637ab6e284829d0e16f1c96 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/__pycache__/views.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/admin.py b/INCUBATE/incubate/incubate/Formulario/admin.py new file mode 100644 index 0000000000000000000000000000000000000000..ce5d3484ee420fca62f1e1430a6bf3be8467cd42 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/admin.py @@ -0,0 +1,16 @@ +from django.contrib import admin +from . import models + +admin.site.register(models.Categoria) +admin.site.register(models.Formularios) +admin.site.register(models.Campo) +admin.site.register(models.ContestaFormularios) +admin.site.register(models.DetalleContestaFormularios) +admin.site.register(models.OpcionesCampo) +admin.site.register(models.OpcionesCuestionario) + +admin.site.register(models.CuestionarioCampo) +admin.site.register(models.ContestaCuestionario) +admin.site.register(models.DetalleContestaCuestionario) +admin.site.register(models.Grafica) + diff --git a/INCUBATE/incubate/incubate/Formulario/apps.py b/INCUBATE/incubate/incubate/Formulario/apps.py new file mode 100644 index 0000000000000000000000000000000000000000..a6ce396f1376d573c892cd2e2857d968c58a95c2 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class FormularioConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'Formulario' diff --git a/INCUBATE/incubate/incubate/Formulario/forms.py b/INCUBATE/incubate/incubate/Formulario/forms.py new file mode 100644 index 0000000000000000000000000000000000000000..68a15f4733af612edd35f3647dc7313e2a3dafb1 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/forms.py @@ -0,0 +1,158 @@ +from django import forms +from django.db import models + +from convocatoria.models import Convocatoria +from .models import ContestaFormularios, Campo, CuestionarioCampo, Formularios, OpcionesCampo, OpcionesCuestionario +from django.contrib.auth.decorators import login_required,permission_required + +class AplicaFormulario(forms.Form): + def __init__(self, *args, **kwargs): + campos = kwargs.pop('campos') + + super(AplicaFormulario, self).__init__(*args, **kwargs) + + TIPO_DATO = { + '1': forms.CharField(max_length=100,widget=forms.TextInput(attrs={'class':'form-control'})), + '2': forms.IntegerField(widget=forms.NumberInput(attrs={'class':'form-control'})), + '3': forms.DecimalField(widget=forms.NumberInput(attrs={'class':'form-control'})), + '4': forms.DateField(widget=forms.DateInput(attrs={'type':'date'})), + '5': forms.DateTimeField(widget=forms.widgets.DateTimeInput(attrs={'type':'date'})), + '6': forms.EmailField(widget=forms.TextInput(attrs={'class':'form-control'})), + '7': forms.ModelChoiceField(queryset=None,widget=forms.Select(attrs={'class':'form-control'})), + '8': forms.ModelChoiceField(queryset=None, widget=forms.RadioSelect()), + '9': forms.FileField(widget=forms.ClearableFileInput(attrs={'class': 'form-control'})) + } + + for campo in campos: + if campo.tipo_dato not in ['7','8']: + self.fields[f"{str(campo.campo)}"] = TIPO_DATO[campo.tipo_dato] + else: + opciones = [(op.opcion,op.opcion) for op in campo.opciones_campo.all()] + if campo.tipo_dato == '7': + self.fields[f"{str(campo.campo)}"] = forms.CharField( + widget = forms.Select(attrs={'class':'form-control'}, choices=opciones)) + else: + self.fields[f"{str(campo.campo)}"] = forms.CharField( + widget = forms.RadioSelect(choices=opciones)) + + if campo.requerida == '0': + self.fields[f"{str(campo.campo)}"].required = False + if campo.tipo_dato == '1': + self.fields[f"{str(campo.campo)}"].max_length = campo.size_texto + +class AplicaEvaluacion(forms.Form): + def __init__(self, *args, **kwargs): + cuestionario_campos = kwargs.pop('campos') + + super(AplicaEvaluacion, self).__init__(*args, **kwargs) + + TIPO_DATO = { + '1': forms.CharField(max_length=1500,widget=forms.TextInput(attrs={'class':'form-control'})), + '2': forms.IntegerField(widget=forms.NumberInput(attrs={'class':'form-control'})), + '3': forms.ModelChoiceField(queryset=None,widget=forms.Select(attrs={'class':'form-control'})), + '4': forms.ModelChoiceField(queryset=None, widget=forms.RadioSelect()), + } + + for campo in cuestionario_campos: + if campo.tipo_dato not in ['3','4']: + self.fields[f"{str(campo.campo)}"] = TIPO_DATO[campo.tipo_dato] + else: + opciones = [(op.opcion,op.opcion) for op in campo.opciones_cuestionarios.all()] + if campo.tipo_dato == '3': + self.fields[f"{str(campo.campo)}"] = forms.CharField( + widget = forms.Select(attrs={'class':'form-control'}, choices=opciones)) + else: + self.fields[f"{str(campo.campo)}"] = forms.CharField( + widget = forms.RadioSelect(choices=opciones)) + + if campo.requerida == '0': + self.fields[f"{str(campo.campo)}"].required = False + if campo.tipo_dato == '1': + self.fields[f"{str(campo.campo)}"].max_length = campo.size_texto + +class FormCampos2(forms.ModelForm): + class Meta: + model = Campo + exclude = ['formularios'] + widgets = { + 'campo': forms.TextInput(attrs={'class': 'form-control'}), + 'requerida': forms.Select(attrs={'class': 'form-control'}), + 'tipo_dato': forms.Select(attrs={'class': 'form-control'}), + 'size_texto': forms.NumberInput(attrs={'class': 'form-control'}), + } + + +class FormCuestionarioCampo3(forms.ModelForm): + class Meta: + model = CuestionarioCampo + exclude = ['formularios'] + + widgets = { + 'campo': forms.TextInput(attrs={'class': 'form-control'}), + 'requerida': forms.Select(attrs={'class': 'form-control'}), + 'tipo_dato': forms.Select(attrs={'class': 'form-control'}), + 'apartado': forms.Select(attrs={'class': 'form-control'}), + 'size_texto': forms.NumberInput(attrs={'class': 'form-control'}), + } + +class FormFormularios(forms.ModelForm): + class Meta: + model = Formularios + fields = ['nombre', 'descripcion', 'imagen'] + + widgets = { + 'nombre': forms.TextInput(attrs={'class': 'form-control'}), + 'descripcion': forms.Textarea(attrs={'class': 'form-control', 'rows': 4}), + 'imagen': forms.ClearableFileInput(attrs={'class': 'form-control-file'}), + } + +class FormFiltroSolicitud(forms.Form): + formularios = forms.CharField( + widget=forms.TextInput(attrs={'class':'form-control','placeholder':'Modalidad'}), + required=False + ) + usuario = forms.CharField( + widget=forms.TextInput(attrs={'class':'form-control','placeholder':'Usuario'}), + required=False + ) + +class FormFiltroCampos(forms.Form): + requerida = forms.CharField( + widget=forms.TextInput(attrs={'class':'form-control','placeholder':'requerida'}), + required=False + ) + tipo_dato = forms.CharField( + widget=forms.TextInput(attrs={'class':'form-control','placeholder':'tipo_dato'}), + required=False + ) + +class FormOpcionesCampo1(forms.ModelForm): + class Meta: + model = OpcionesCampo + exclude = ['campo'] + widgets = { + 'opcion': forms.TextInput(attrs={'class': 'form-control'}), + 'valor': forms.TextInput(attrs={'class': 'form-control'}), + } + +class FormOpcionesCampo2(forms.ModelForm): + class Meta: + model = OpcionesCuestionario + exclude = ['campo'] + fields = '__all__' + widgets = { + 'opcion': forms.TextInput(attrs={'class': 'form-control'}), + 'valor': forms.TextInput(attrs={'class': 'form-control'}), + } + +def handle_uploaded_file(f): + with open('Documentos/Usuario/'+f, 'wb+') as destination: + for chunk in f.chunks(): + destination.write(chunk) + +class FiltrosSolicitud(forms.Form): + comb=Convocatoria.objects.all() + convocatoria = forms.CharField( + widget=forms.TextInput(attrs={'placeholder':'Combocatoria','class':'form-control'}), + required=False, + ) \ No newline at end of file diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0001_initial.py b/INCUBATE/incubate/incubate/Formulario/migrations/0001_initial.py new file mode 100644 index 0000000000000000000000000000000000000000..2a6d511c3a25b97a3bf2b10614d87ffc51c9bdce --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0001_initial.py @@ -0,0 +1,147 @@ +# Generated by Django 4.2.4 on 2023-08-21 19:33 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('convocatoria', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Campo', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('campo', models.CharField(max_length=500)), + ('requerida', models.CharField(choices=[('1', 'Si'), ('0', 'No')], default='1', max_length=1)), + ('tipo_dato', models.CharField(choices=[('1', 'Texto'), ('2', 'Númerico'), ('3', 'Decimal'), ('4', 'Fecha'), ('5', 'Fecha y hora'), ('6', 'Correo electrónico'), ('7', 'Selección (Combo)'), ('8', 'Selección (Opciones)'), ('9', 'Archivo PDF')], max_length=2, verbose_name='Tipo de respuesta')), + ('size_texto', models.SmallIntegerField(blank=True, choices=[(25, '25'), (50, '50'), (100, '100'), (150, '150'), (200, '200'), (300, '300'), (500, '500')], null=True, verbose_name='Máximo de palabras apróximadamente')), + ], + ), + migrations.CreateModel( + name='Categoria', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nombre', models.CharField(max_length=50)), + ], + ), + migrations.CreateModel( + name='ContestaCuestionario', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('fecha', models.DateTimeField(auto_now=True, verbose_name='Fecha')), + ('validacion', models.CharField(choices=[('2', 'Rechazado'), ('1', 'Aceptado'), ('0', 'Pendiente')], default=0, max_length=1)), + ], + ), + migrations.CreateModel( + name='ContestaFormularios', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('fecha', models.DateTimeField(auto_now=True, verbose_name='Fecha')), + ('validacion', models.CharField(choices=[('2', 'Rechazado'), ('1', 'Aceptado'), ('0', 'Pendiente')], default=0, max_length=1)), + ('convocatoria', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='convocatoria.convocatoria', verbose_name='Convocatoria')), + ], + ), + migrations.CreateModel( + name='CuestionarioCampo', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('campo', models.CharField(max_length=700)), + ('requerida', models.CharField(choices=[('1', 'Si'), ('0', 'No')], default='1', max_length=1)), + ('tipo_dato', models.CharField(choices=[('1', 'Texto'), ('2', 'Númerico'), ('3', 'Selección (Combo)'), ('4', 'Selección (Opciones)')], max_length=2, verbose_name='Tipo de respuesta')), + ('size_texto', models.SmallIntegerField(blank=True, null=True, verbose_name='Máximo de palabras aproximadamente')), + ], + ), + migrations.CreateModel( + name='Formularios', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('nombre', models.CharField(max_length=50, unique=True)), + ('descripcion', models.TextField(max_length=250, verbose_name='Descripción')), + ], + ), + migrations.CreateModel( + name='OpcionesCuestionario', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('opcion', models.CharField(max_length=150, verbose_name='Opción')), + ('valor', models.CharField(max_length=2, null=True)), + ('campo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='opciones_cuestionarios', to='Formulario.cuestionariocampo', verbose_name='OpcionesCuestionario')), + ], + ), + migrations.CreateModel( + name='OpcionesCampo', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('opcion', models.CharField(max_length=150, verbose_name='Opción')), + ('valor', models.CharField(max_length=2)), + ('campo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='opciones_campo', to='Formulario.campo', verbose_name='Opciones')), + ], + ), + migrations.CreateModel( + name='DetalleContestaFormularios', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('respuesta', models.CharField(max_length=1500)), + ('uploadedFile', models.FileField(blank=True, null=True, upload_to='Documentos')), + ('campo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Formulario.campo', verbose_name='Campo')), + ('contesta_formularios', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Formulario.contestaformularios', verbose_name='Contesta')), + ], + ), + migrations.CreateModel( + name='DetalleContestaCuestionario', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('respuesta', models.CharField(max_length=1500)), + ('campo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Formulario.cuestionariocampo', verbose_name='CuestionarioCuestionario')), + ('contesta_formularios', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Formulario.contestacuestionario', verbose_name='Contesta')), + ], + ), + migrations.AddField( + model_name='cuestionariocampo', + name='formularios', + field=models.ForeignKey(default=11, on_delete=django.db.models.deletion.CASCADE, related_name='cuestionario_campos', to='Formulario.formularios', verbose_name='Modalidad'), + ), + migrations.AddField( + model_name='contestaformularios', + name='formularios', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Formulario.formularios', verbose_name='Formularios'), + ), + migrations.AddField( + model_name='contestaformularios', + name='usuario', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Usuario'), + ), + migrations.AddField( + model_name='contestacuestionario', + name='contestaFormularios', + field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='evaluacion', to='Formulario.contestaformularios', verbose_name='Contestar_formulario'), + ), + migrations.AddField( + model_name='contestacuestionario', + name='convocatoria', + field=models.ForeignKey(default=5, on_delete=django.db.models.deletion.CASCADE, to='convocatoria.convocatoria', verbose_name='Convocatoria'), + ), + migrations.AddField( + model_name='contestacuestionario', + name='formularios', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Formulario.formularios', verbose_name='Formularios'), + ), + migrations.AddField( + model_name='contestacuestionario', + name='usuario', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Usuario'), + ), + migrations.AddField( + model_name='campo', + name='formularios', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='campos', to='Formulario.formularios', verbose_name='Modalidad'), + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0002_alter_detallecontestaformularios_respuesta.py b/INCUBATE/incubate/incubate/Formulario/migrations/0002_alter_detallecontestaformularios_respuesta.py new file mode 100644 index 0000000000000000000000000000000000000000..e7205dbbb305032815b6eb6db0c80749223f8591 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0002_alter_detallecontestaformularios_respuesta.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.4 on 2023-08-22 06:41 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('Formulario', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='detallecontestaformularios', + name='respuesta', + field=models.TextField(verbose_name='Respuesta'), + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0003_alter_detallecontestaformularios_respuesta.py b/INCUBATE/incubate/incubate/Formulario/migrations/0003_alter_detallecontestaformularios_respuesta.py new file mode 100644 index 0000000000000000000000000000000000000000..7e1a2eef5c3bf5ec6e7900f8900fdcc8e93028ff --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0003_alter_detallecontestaformularios_respuesta.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.4 on 2023-08-22 06:53 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('Formulario', '0002_alter_detallecontestaformularios_respuesta'), + ] + + operations = [ + migrations.AlterField( + model_name='detallecontestaformularios', + name='respuesta', + field=models.CharField(max_length=1500), + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0004_cuestionariocampo_apartado_alter_campo_size_texto_and_more.py b/INCUBATE/incubate/incubate/Formulario/migrations/0004_cuestionariocampo_apartado_alter_campo_size_texto_and_more.py new file mode 100644 index 0000000000000000000000000000000000000000..c28194a338a6fe6957c983418a3b9a59aead53e8 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0004_cuestionariocampo_apartado_alter_campo_size_texto_and_more.py @@ -0,0 +1,28 @@ +# Generated by Django 4.2.4 on 2023-08-22 10:51 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('Formulario', '0003_alter_detallecontestaformularios_respuesta'), + ] + + operations = [ + migrations.AddField( + model_name='cuestionariocampo', + name='apartado', + field=models.CharField(choices=[('1', 'Innovación'), ('2', 'Marketing'), ('3', 'Administración'), ('4', 'Finanzas')], default='1', max_length=2, verbose_name='Apartado'), + ), + migrations.AlterField( + model_name='campo', + name='size_texto', + field=models.SmallIntegerField(blank=True, choices=[(25, '25'), (50, '50'), (100, '100'), (150, '150'), (200, '200'), (300, '300'), (500, '500'), (1000, '1000'), (1500, '1500')], null=True, verbose_name='Máximo de palabras apróximadamente'), + ), + migrations.AlterField( + model_name='cuestionariocampo', + name='campo', + field=models.CharField(max_length=700, verbose_name='Criterio de Evaluacíon'), + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0005_alter_cuestionariocampo_size_texto.py b/INCUBATE/incubate/incubate/Formulario/migrations/0005_alter_cuestionariocampo_size_texto.py new file mode 100644 index 0000000000000000000000000000000000000000..1537b505fdde0e2c43ec47e8f0daf2d6248b3cf2 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0005_alter_cuestionariocampo_size_texto.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.4 on 2023-08-22 11:01 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('Formulario', '0004_cuestionariocampo_apartado_alter_campo_size_texto_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='cuestionariocampo', + name='size_texto', + field=models.SmallIntegerField(blank=True, choices=[(25, '25'), (50, '50'), (100, '100'), (150, '150'), (200, '200'), (300, '300'), (500, '500'), (1000, '1000'), (1500, '1500')], default='1', null=True, verbose_name='Máximo de palabras apróximadamente'), + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0006_alter_cuestionariocampo_campo.py b/INCUBATE/incubate/incubate/Formulario/migrations/0006_alter_cuestionariocampo_campo.py new file mode 100644 index 0000000000000000000000000000000000000000..712b283eddb5f038128d9635e24953e2766e45e4 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0006_alter_cuestionariocampo_campo.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.4 on 2023-08-22 11:06 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('Formulario', '0005_alter_cuestionariocampo_size_texto'), + ] + + operations = [ + migrations.AlterField( + model_name='cuestionariocampo', + name='campo', + field=models.TextField(verbose_name='Criterio de Evaluacíon'), + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0007_alter_cuestionariocampo_campo.py b/INCUBATE/incubate/incubate/Formulario/migrations/0007_alter_cuestionariocampo_campo.py new file mode 100644 index 0000000000000000000000000000000000000000..eaea22c3ef4eabe56d2e0eb14a6a1653431c45e4 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0007_alter_cuestionariocampo_campo.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.4 on 2023-08-22 11:12 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('Formulario', '0006_alter_cuestionariocampo_campo'), + ] + + operations = [ + migrations.AlterField( + model_name='cuestionariocampo', + name='campo', + field=models.CharField(max_length=1000, verbose_name='Criterio de Evaluacíon'), + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0008_remove_contestacuestionario_usuario_and_more.py b/INCUBATE/incubate/incubate/Formulario/migrations/0008_remove_contestacuestionario_usuario_and_more.py new file mode 100644 index 0000000000000000000000000000000000000000..112884d4229d7768d1ed8696efbabd1d5f853816 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0008_remove_contestacuestionario_usuario_and_more.py @@ -0,0 +1,21 @@ +# Generated by Django 4.2.4 on 2023-08-22 15:26 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('Formulario', '0007_alter_cuestionariocampo_campo'), + ] + + operations = [ + migrations.RemoveField( + model_name='contestacuestionario', + name='usuario', + ), + migrations.RemoveField( + model_name='contestacuestionario', + name='validacion', + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0009_contestacuestionario_usuario_and_more.py b/INCUBATE/incubate/incubate/Formulario/migrations/0009_contestacuestionario_usuario_and_more.py new file mode 100644 index 0000000000000000000000000000000000000000..d14e6a7b9e5476df17b9e411afe41dde739dfed9 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0009_contestacuestionario_usuario_and_more.py @@ -0,0 +1,26 @@ +# Generated by Django 4.2.4 on 2023-08-22 16:12 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('Formulario', '0008_remove_contestacuestionario_usuario_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='contestacuestionario', + name='usuario', + field=models.ForeignKey(default=0, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Usuario'), + ), + migrations.AddField( + model_name='contestacuestionario', + name='validacion', + field=models.CharField(choices=[('2', 'Rechazado'), ('1', 'Aceptado'), ('0', 'Pendiente')], default=0, max_length=1), + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0010_alter_contestacuestionario_usuario.py b/INCUBATE/incubate/incubate/Formulario/migrations/0010_alter_contestacuestionario_usuario.py new file mode 100644 index 0000000000000000000000000000000000000000..3b908616df1f7efddabad870895dacf13b9e3fd4 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0010_alter_contestacuestionario_usuario.py @@ -0,0 +1,21 @@ +# Generated by Django 4.2.4 on 2023-08-22 16:13 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('Formulario', '0009_contestacuestionario_usuario_and_more'), + ] + + operations = [ + migrations.AlterField( + model_name='contestacuestionario', + name='usuario', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Usuario'), + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0011_remove_contestacuestionario_validacion.py b/INCUBATE/incubate/incubate/Formulario/migrations/0011_remove_contestacuestionario_validacion.py new file mode 100644 index 0000000000000000000000000000000000000000..eaf10666181234f438551aa80463f66a23b7d2f5 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0011_remove_contestacuestionario_validacion.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.4 on 2023-08-22 16:54 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('Formulario', '0010_alter_contestacuestionario_usuario'), + ] + + operations = [ + migrations.RemoveField( + model_name='contestacuestionario', + name='validacion', + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0012_detallecontestacuestionario_contestaformularios.py b/INCUBATE/incubate/incubate/Formulario/migrations/0012_detallecontestacuestionario_contestaformularios.py new file mode 100644 index 0000000000000000000000000000000000000000..927c0457db69f5d6590bdbcf5217084f90b11d25 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0012_detallecontestacuestionario_contestaformularios.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.4 on 2023-08-23 07:15 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('Formulario', '0011_remove_contestacuestionario_validacion'), + ] + + operations = [ + migrations.AddField( + model_name='detallecontestacuestionario', + name='contestaFormularios', + field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='evaluacion1', to='Formulario.contestaformularios', verbose_name='Contestar_formulario1'), + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0013_remove_detallecontestacuestionario_contestaformularios.py b/INCUBATE/incubate/incubate/Formulario/migrations/0013_remove_detallecontestacuestionario_contestaformularios.py new file mode 100644 index 0000000000000000000000000000000000000000..d883161e7b4b5a244c096cfb6342223bce14eaa3 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0013_remove_detallecontestacuestionario_contestaformularios.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.4 on 2023-08-23 07:47 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('Formulario', '0012_detallecontestacuestionario_contestaformularios'), + ] + + operations = [ + migrations.RemoveField( + model_name='detallecontestacuestionario', + name='contestaFormularios', + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0014_detallecontestacuestionario_contestaformularios1.py b/INCUBATE/incubate/incubate/Formulario/migrations/0014_detallecontestacuestionario_contestaformularios1.py new file mode 100644 index 0000000000000000000000000000000000000000..c19042ef21904c796ac1e338b0434d723360ae00 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0014_detallecontestacuestionario_contestaformularios1.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.4 on 2023-08-23 07:48 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('Formulario', '0013_remove_detallecontestacuestionario_contestaformularios'), + ] + + operations = [ + migrations.AddField( + model_name='detallecontestacuestionario', + name='contestaFormularios1', + field=models.OneToOneField(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='evaluacion1', to='Formulario.contestaformularios', verbose_name='Contestar_formulario1'), + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0015_alter_detallecontestacuestionario_contestaformularios1.py b/INCUBATE/incubate/incubate/Formulario/migrations/0015_alter_detallecontestacuestionario_contestaformularios1.py new file mode 100644 index 0000000000000000000000000000000000000000..13d0c6e48bf8ff7422f05a9763ff1eeea7aea88e --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0015_alter_detallecontestacuestionario_contestaformularios1.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.4 on 2023-08-23 08:12 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('Formulario', '0014_detallecontestacuestionario_contestaformularios1'), + ] + + operations = [ + migrations.AlterField( + model_name='detallecontestacuestionario', + name='contestaFormularios1', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to='Formulario.contestaformularios', verbose_name='Contestar_formulario1'), + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0016_alter_detallecontestacuestionario_contestaformularios1.py b/INCUBATE/incubate/incubate/Formulario/migrations/0016_alter_detallecontestacuestionario_contestaformularios1.py new file mode 100644 index 0000000000000000000000000000000000000000..ca3099a6fab724a8d9b80ef7b85ee9746c6696a4 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0016_alter_detallecontestacuestionario_contestaformularios1.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.4 on 2023-08-23 08:21 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('Formulario', '0015_alter_detallecontestacuestionario_contestaformularios1'), + ] + + operations = [ + migrations.AlterField( + model_name='detallecontestacuestionario', + name='contestaFormularios1', + field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='Formulario.contestaformularios', verbose_name='Contestar_formulario1'), + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0017_alter_contestacuestionario_contestaformularios.py b/INCUBATE/incubate/incubate/Formulario/migrations/0017_alter_contestacuestionario_contestaformularios.py new file mode 100644 index 0000000000000000000000000000000000000000..9991580ca83f59f1e6bef8751f852cc2d4d10c44 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0017_alter_contestacuestionario_contestaformularios.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.4 on 2023-08-23 08:35 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('Formulario', '0016_alter_detallecontestacuestionario_contestaformularios1'), + ] + + operations = [ + migrations.AlterField( + model_name='contestacuestionario', + name='contestaFormularios', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, related_name='evaluaciones', to='Formulario.contestaformularios', verbose_name='Contestar_formulario'), + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0018_grafica.py b/INCUBATE/incubate/incubate/Formulario/migrations/0018_grafica.py new file mode 100644 index 0000000000000000000000000000000000000000..9c580cac661e1129949215a93abc14c2d3d4bb82 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0018_grafica.py @@ -0,0 +1,25 @@ +# Generated by Django 4.2.4 on 2023-08-23 12:14 + +from django.conf import settings +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('Formulario', '0017_alter_contestacuestionario_contestaformularios'), + ] + + operations = [ + migrations.CreateModel( + name='Grafica', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('valor_numerico', models.DecimalField(decimal_places=2, max_digits=10, verbose_name='Valor Numérico')), + ('contesta_formularios', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='Formulario.contestaformularios', verbose_name='ContestaFormularios')), + ('usuario', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL, verbose_name='Usuario')), + ], + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0019_alter_grafica_valor_numerico.py b/INCUBATE/incubate/incubate/Formulario/migrations/0019_alter_grafica_valor_numerico.py new file mode 100644 index 0000000000000000000000000000000000000000..d5ebac2cb5c35fff0d2ab9784b1fa987e959b59e --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0019_alter_grafica_valor_numerico.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.4 on 2023-08-23 13:50 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('Formulario', '0018_grafica'), + ] + + operations = [ + migrations.AlterField( + model_name='grafica', + name='valor_numerico', + field=models.DecimalField(decimal_places=2, default=0, max_digits=10, verbose_name='Valor Numérico'), + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0020_formularios_imagen.py b/INCUBATE/incubate/incubate/Formulario/migrations/0020_formularios_imagen.py new file mode 100644 index 0000000000000000000000000000000000000000..ffd9751c9154c2bee88e11eb3c4e6a0da793a6bc --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0020_formularios_imagen.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.7 on 2023-12-12 04:30 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('Formulario', '0019_alter_grafica_valor_numerico'), + ] + + operations = [ + migrations.AddField( + model_name='formularios', + name='imagen', + field=models.ImageField(blank=True, null=True, upload_to='Imagenes/formularios', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['png', 'jpg'], message='Sólo se permiten imágenes PNG')], verbose_name=''), + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0021_alter_formularios_imagen.py b/INCUBATE/incubate/incubate/Formulario/migrations/0021_alter_formularios_imagen.py new file mode 100644 index 0000000000000000000000000000000000000000..8007bb994cc7c02d7fe41576ad4b3adad0fbae5d --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0021_alter_formularios_imagen.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.7 on 2023-12-12 05:23 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('Formulario', '0020_formularios_imagen'), + ] + + operations = [ + migrations.AlterField( + model_name='formularios', + name='imagen', + field=models.ImageField(blank=True, null=True, upload_to='formulariosImg/', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['png', 'jpg', 'PNG'], message='Sólo se permiten imágenes PNG')]), + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/0022_alter_formularios_imagen.py b/INCUBATE/incubate/incubate/Formulario/migrations/0022_alter_formularios_imagen.py new file mode 100644 index 0000000000000000000000000000000000000000..eb6f5911c2557743a6512495998964da4bd0e35d --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/migrations/0022_alter_formularios_imagen.py @@ -0,0 +1,19 @@ +# Generated by Django 4.2.7 on 2023-12-12 17:40 + +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('Formulario', '0021_alter_formularios_imagen'), + ] + + operations = [ + migrations.AlterField( + model_name='formularios', + name='imagen', + field=models.ImageField(upload_to='formulariosImg/', validators=[django.core.validators.FileExtensionValidator(allowed_extensions=['png', 'jpg', 'PNG'], message='Sólo se permiten imágenes PNG')]), + ), + ] diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__init__.py b/INCUBATE/incubate/incubate/Formulario/migrations/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0001_initial.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0001_initial.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5d2ea7465ca2b51f687eebe7b10771434786a081 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0001_initial.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0002_alter_detallecontestaformularios_respuesta.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0002_alter_detallecontestaformularios_respuesta.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6a22e93cee9ba3ddbac16e7ffad7617ebb8c333e Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0002_alter_detallecontestaformularios_respuesta.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0003_alter_detallecontestaformularios_respuesta.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0003_alter_detallecontestaformularios_respuesta.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b9f7e1ffb3941c0031402db4d769f594b014ad96 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0003_alter_detallecontestaformularios_respuesta.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0004_cuestionariocampo_apartado_alter_campo_size_texto_and_more.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0004_cuestionariocampo_apartado_alter_campo_size_texto_and_more.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..09865cfd2d756e235aaed7669be81f1d6cc60ab5 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0004_cuestionariocampo_apartado_alter_campo_size_texto_and_more.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0005_alter_cuestionariocampo_size_texto.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0005_alter_cuestionariocampo_size_texto.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..698260aa39ca22ef3c601e1c0437d57e329610a5 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0005_alter_cuestionariocampo_size_texto.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0006_alter_cuestionariocampo_campo.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0006_alter_cuestionariocampo_campo.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..91209a0d742a6a45d4b0e208d45cb40b83f8d630 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0006_alter_cuestionariocampo_campo.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0007_alter_cuestionariocampo_campo.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0007_alter_cuestionariocampo_campo.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..069f7aab2069603eee1b2887569aa5cafd16927d Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0007_alter_cuestionariocampo_campo.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0008_remove_contestacuestionario_usuario_and_more.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0008_remove_contestacuestionario_usuario_and_more.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e8e438696f2b77302f000e06798b8ffe9b51513f Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0008_remove_contestacuestionario_usuario_and_more.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0009_contestacuestionario_usuario_and_more.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0009_contestacuestionario_usuario_and_more.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..45be9ada44576548854de922110bead936e18ef0 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0009_contestacuestionario_usuario_and_more.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0010_alter_contestacuestionario_usuario.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0010_alter_contestacuestionario_usuario.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4766aac637683f0d1946169d13c0b87f5ea84e8e Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0010_alter_contestacuestionario_usuario.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0011_remove_contestacuestionario_validacion.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0011_remove_contestacuestionario_validacion.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a51c242d230b752a032f050b3288d4b2454e19d6 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0011_remove_contestacuestionario_validacion.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0012_detallecontestacuestionario_contestaformularios.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0012_detallecontestacuestionario_contestaformularios.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2511f28196c1794c3d83e906ae293bc62e2eaec0 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0012_detallecontestacuestionario_contestaformularios.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0013_alter_detallecontestacuestionario_contestaformularios.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0013_alter_detallecontestacuestionario_contestaformularios.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1dd2f9b1aa428c73db4378eaed031fd171b881b7 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0013_alter_detallecontestacuestionario_contestaformularios.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0013_remove_detallecontestacuestionario_contestaformularios.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0013_remove_detallecontestacuestionario_contestaformularios.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7f745f46f9150491d82b9cc6bc68388e3ff13991 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0013_remove_detallecontestacuestionario_contestaformularios.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0014_alter_detallecontestacuestionario_contestaformularios.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0014_alter_detallecontestacuestionario_contestaformularios.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d400e22e2213617419e76afe2082fe9716da7526 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0014_alter_detallecontestacuestionario_contestaformularios.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0014_detallecontestacuestionario_contestaformularios.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0014_detallecontestacuestionario_contestaformularios.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ce00452d8e47ef5a04209b2fbdc6a559ea650c46 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0014_detallecontestacuestionario_contestaformularios.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0014_detallecontestacuestionario_contestaformularios1.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0014_detallecontestacuestionario_contestaformularios1.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..16349efbd7774bf59e15e119b50bda40884ab623 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0014_detallecontestacuestionario_contestaformularios1.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0014_remove_detallecontestacuestionario_contestaformularios.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0014_remove_detallecontestacuestionario_contestaformularios.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f8f5a5a81a6d6d1893a6de03b288f421f7b2c345 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0014_remove_detallecontestacuestionario_contestaformularios.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0015_alter_detallecontestacuestionario_contestaformularios.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0015_alter_detallecontestacuestionario_contestaformularios.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..67b094f57fd016b9505997ac51beae340c60cd32 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0015_alter_detallecontestacuestionario_contestaformularios.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0015_alter_detallecontestacuestionario_contestaformularios1.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0015_alter_detallecontestacuestionario_contestaformularios1.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fca2e3fb8dd3858fdd17f5ee7a43fc247bd95ae4 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0015_alter_detallecontestacuestionario_contestaformularios1.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0015_remove_detallecontestacuestionario_contestaformularios.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0015_remove_detallecontestacuestionario_contestaformularios.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..30cc5b772c532c73bd12166908bc9a7010818f10 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0015_remove_detallecontestacuestionario_contestaformularios.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0016_alter_detallecontestacuestionario_contestaformularios1.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0016_alter_detallecontestacuestionario_contestaformularios1.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9fafbfa5f18078b89bad5b604ba594aaf0ffa4ba Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0016_alter_detallecontestacuestionario_contestaformularios1.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0017_alter_contestacuestionario_contestaformularios.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0017_alter_contestacuestionario_contestaformularios.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f5909fd0fc68634a36ac3b0c8d70568c6a0de758 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0017_alter_contestacuestionario_contestaformularios.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0018_grafica.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0018_grafica.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ef95dcbcbfa190b5de87fd96cbe099ef6ed66687 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0018_grafica.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0019_alter_grafica_valor_numerico.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0019_alter_grafica_valor_numerico.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c9667532ecb6a059a2843ff38f7ec381e1c2f35f Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0019_alter_grafica_valor_numerico.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0020_formularios_imagen.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0020_formularios_imagen.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..af16c527714201465ffe5fe52a06f0adb38ad382 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0020_formularios_imagen.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0021_alter_formularios_imagen.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0021_alter_formularios_imagen.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..29e427b92dbd775921779409741b27f8a0b6c618 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0021_alter_formularios_imagen.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0022_alter_formularios_imagen.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0022_alter_formularios_imagen.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3654de2dfd0775bd61e510bdb8f0ea679c72c89b Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/0022_alter_formularios_imagen.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/__init__.cpython-39.pyc b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/__init__.cpython-39.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a7628c6581116f88cef4e42cf780b8b8b43f1f53 Binary files /dev/null and b/INCUBATE/incubate/incubate/Formulario/migrations/__pycache__/__init__.cpython-39.pyc differ diff --git a/INCUBATE/incubate/incubate/Formulario/models.py b/INCUBATE/incubate/incubate/Formulario/models.py new file mode 100644 index 0000000000000000000000000000000000000000..c490c495366c9544a8ab4e44c45825fef05d606c --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/models.py @@ -0,0 +1,166 @@ +from django.db import models +from django.contrib.auth.models import User +from convocatoria.models import Convocatoria +from .validadores import documentos_validador,imagen_validador + +class Categoria(models.Model): + nombre = models.CharField(max_length=50) + + def __str__(self): + return self.nombre + +#,unique=True +class Formularios(models.Model): + nombre = models.CharField(max_length=50,unique=True) + descripcion = models.TextField("Descripción", max_length=250) + imagen = models.ImageField(upload_to='formulariosImg/',validators=[imagen_validador],null=False,blank=False) + + def __str__(self): + return self.nombre + +SI_NO=[ + ('1','Si'), + ('0','No'), +] + +VALIDACION=[ + ('2','Rechazado'), + ('1','Aceptado'), + ('0','Pendiente'), +] + +SIZE_TEXTO = [ + (25,'25'), + (50,'50'), + (100,'100'), + (150,'150'), + (200,'200'), + (300,'300'), + (500,'500'), + (1000,'1000'), + (1500,'1500'), + +] +TIPO_DATO=[ + ('1','Texto'), + ('2','Númerico'), + ('3','Decimal'), + ('4','Fecha'), + ('5','Fecha y hora'), + ('6','Correo electrónico'), + ('7','Selección (Combo)'), + ('8','Selección (Opciones)'), + ('9','Archivo PDF'), +] + +TIPO_DATO2=[ + ('1','Texto'), + ('2','Númerico'), + ('3','Selección (Combo)'), + ('4','Selección (Opciones)'), +] + +APARTADOS=[ + ('1','Innovación'), + ('2','Marketing'), + ('3','Administración'), + ('4','Finanzas'), +] + +class Campo(models.Model): + campo = models.CharField(max_length=500) + requerida = models.CharField(choices=SI_NO, max_length=1, default='1') + tipo_dato = models.CharField("Tipo de respuesta", max_length=2, choices=TIPO_DATO) + size_texto = models.SmallIntegerField("Máximo de palabras apróximadamente", null=True, + blank=True, choices=SIZE_TEXTO) + formularios = models.ForeignKey("Formulario.Formularios", verbose_name="Modalidad", + on_delete=models.CASCADE, related_name='campos', null=True) + + def __str__(self): + return self.campo + +class OpcionesCampo(models.Model): + opcion = models.CharField("Opción", max_length=150) + valor = models.CharField(max_length=2) + campo = models.ForeignKey("Formulario.Campo", verbose_name="Opciones", + on_delete=models.CASCADE, related_name='opciones_campo') + + def __str__(self): + return self.opcion + +class ContestaFormularios(models.Model): + fecha = models.DateTimeField("Fecha", auto_now=True) + formularios = models.ForeignKey("Formulario.Formularios", verbose_name="Formularios", on_delete=models.CASCADE) + usuario = models.ForeignKey(User, verbose_name="Usuario", on_delete=models.CASCADE) + validacion = models.CharField(choices=VALIDACION, max_length=1, default=0) + convocatoria = models.ForeignKey(Convocatoria, verbose_name="Convocatoria", on_delete=models.CASCADE, null=True) + + def __str__(self): + return self.formularios.nombre +" realizada por: "+ self.usuario.username + +class DetalleContestaFormularios(models.Model): + campo = models.ForeignKey("Formulario.Campo", verbose_name="Campo", on_delete=models.CASCADE) + respuesta = models.CharField(max_length=1500) + uploadedFile = models.FileField(upload_to = "Documentos", null=True,blank=True) + contesta_formularios = models.ForeignKey("Formulario.ContestaFormularios", verbose_name="Contesta", on_delete=models.CASCADE) + + def __str__(self): + return self.campo.campo + self.respuesta + +class CuestionarioCampo(models.Model): + campo = models.CharField("Criterio de Evaluacíon",max_length=1000) + requerida = models.CharField(choices=SI_NO, max_length=1, default='1') + tipo_dato = models.CharField("Tipo de respuesta", max_length=2, choices=TIPO_DATO2) + apartado = models.CharField("Apartado", max_length=2, choices=APARTADOS, default='1') + size_texto = models.SmallIntegerField("Máximo de palabras apróximadamente", null=True, + blank=True, choices=SIZE_TEXTO,default='1') + formularios = models.ForeignKey( + "Formulario.Formularios", + verbose_name="Modalidad", + on_delete=models.CASCADE, + related_name='cuestionario_campos', + default=11 + ) + + def __str__(self): + return self.campo + +class OpcionesCuestionario(models.Model): + opcion = models.CharField("Opción", max_length=150) + valor = models.CharField(max_length=2, null=True) + campo = models.ForeignKey("Formulario.CuestionarioCampo", verbose_name="OpcionesCuestionario", + on_delete=models.CASCADE, related_name='opciones_cuestionarios') + + def __str__(self): + return self.opcion + +class ContestaCuestionario(models.Model): + fecha = models.DateTimeField("Fecha", auto_now=True) + formularios = models.ForeignKey("Formulario.Formularios", verbose_name="Formularios", on_delete=models.CASCADE) + usuario = models.ForeignKey(User, verbose_name="Usuario", on_delete=models.CASCADE) + convocatoria = models.ForeignKey(Convocatoria, verbose_name="Convocatoria", on_delete=models.CASCADE, default=5) + contestaFormularios = models.ForeignKey(ContestaFormularios, verbose_name="Contestar_formulario", related_name='evaluaciones', + on_delete=models.CASCADE, null=True) + + def __str__(self): + return self.formularios.nombre + " del usuario: " + self.usuario.username + + +class DetalleContestaCuestionario(models.Model): + campo = models.ForeignKey("Formulario.CuestionarioCampo", verbose_name="CuestionarioCuestionario", on_delete=models.CASCADE) + respuesta = models.CharField(max_length=1500) + contesta_formularios = models.ForeignKey("Formulario.ContestaCuestionario", verbose_name="Contesta", on_delete=models.CASCADE) + contestaFormularios1=models.ForeignKey("Formulario.ContestaFormularios", verbose_name="Contestar_formulario1", + on_delete=models.CASCADE, default=1) + def __str__(self): + return self.campo.campo + self.respuesta +#aquixd +# todo bien asta + +class Grafica(models.Model): + usuario = models.ForeignKey(User, verbose_name="Usuario", on_delete=models.CASCADE) + contesta_formularios = models.ForeignKey(ContestaFormularios, verbose_name="ContestaFormularios", on_delete=models.CASCADE) + valor_numerico = models.DecimalField("Valor Numérico", max_digits=10, decimal_places=2, default=0) # Cambia los parámetros según tus necesidades + + def __str__(self): + return f"Grafica de {self.usuario.username} - {self.contesta_formularios}" \ No newline at end of file diff --git a/INCUBATE/incubate/incubate/Formulario/templates/Formulario/campo_form.html b/INCUBATE/incubate/incubate/Formulario/templates/Formulario/campo_form.html new file mode 100644 index 0000000000000000000000000000000000000000..24a18342f2848dfaaf94dd94bdcce8ba08c37d39 --- /dev/null +++ b/INCUBATE/incubate/incubate/Formulario/templates/Formulario/campo_form.html @@ -0,0 +1,44 @@ +{% extends 'base.html' %} +{% load static %} + +{% block titulo %} + Nuevo Campo +{% endblock titulo %} + +{% block encabezado %} +
Campo | +Respuesta | +Contesta Formularios | +
---|---|---|
{{ detalle.campo }} | +{{ detalle.respuesta }} | +{{ detalle.contesta_formularios }} | +
Campo | +Tipo del campo | +Opciones | +|||||||
---|---|---|---|---|---|---|---|---|---|
{{ camposFormulario.campo }} | + + {% if camposFormulario.tipo_dato == "1" %} +Texto | + {% elif camposFormulario.tipo_dato == "2" %} +Numérico | + {% elif camposFormulario.tipo_dato == "3" %} +Decimal | + {% elif camposFormulario.tipo_dato == "4" %} +Fecha | + {% elif camposFormulario.tipo_dato == "5" %} +Fecha y hora | + {% elif camposFormulario.tipo_dato == "6" %} +Correo electrónico | + {% elif camposFormulario.tipo_dato|stringformat:"s" in "7 8" %} +Selección | + {% else %} +Archivo PDF | + {% endif %} + +
+ {% if camposFormulario.tipo_dato|stringformat:"s" in "7 8" %}
+
+
+
+
+ {% else %}
+
+ {% endif %}
+
+
+
+
+
+
+ |
+
+ No hay campos registrados + |
+
Campo | +Apartado | +Tipo del campo | +Opciones | +||||||
---|---|---|---|---|---|---|---|---|---|
{{ evaluform.campo }} | + {% if evaluform.apartado == "1" %} +Innovación | + {% elif evaluform.apartado == "2" %} +Marketing | + {% elif evaluform.apartado == "3" %} +Administración | + {% else %} +Finanzas | + {% endif %} + + {% if evaluform.tipo_dato == "1" %} +Texto | + {% elif evaluform.tipo_dato == "2" %} +Numérico | + {% elif evaluform.tipo_dato|stringformat:"s" in "3 4" %} +Selección | + {% else %} +Selección (Opciones) | + {% endif %} + ++ {% if evaluform.tipo_dato|stringformat:"s" in "3 4" %} + Agregar opción + {% endif %} + Editar + Eliminar + | + +
+ No hay campos registrados + |
+
Fecha | +Modalidad | +Equipo | +Validación | +Convocatoria | +Opciones | +
---|---|---|---|---|---|
{{ contestaFormulario.fecha }} | +{{ contestaFormulario.formularios }} | ++ {{ contestaFormulario.usuario.username}} + | ++ {% if contestaFormulario.validacion == "0" %} + Pendiente + {% elif contestaFormulario.validacion == "1" %} + Aceptado + {% else %} + Rechazado + {% endif %} + | +De {{ contestaFormulario.convocatoria.fecha_inicio }} | +
+
+ Detalles
+ Evaluacion
+
+ |
+
+ No hay solicitudes registradas + |
+
Fecha | +Modalidad | +Equipo | +Validación | +Convocatoria | +Opciones | +
---|---|---|---|---|---|
{{ contestaFormulario.fecha }} | +{{ contestaFormulario.formularios }} | ++ + {{ contestaFormulario.usuario.username}} + + | ++ {% if contestaFormulario.validacion == "0" %} + Pendiente + {% elif contestaFormulario.validacion == "1" %} + Aceptado + {% else %} + Rechazado + {% endif %} + | +De {{ contestaFormulario.convocatoria.fecha_inicio }} | +
+
+ Detalles
+ Evaluacion
+
+ |
+
+ No hay solicitudes registradas + |
+
Fecha | +Modalidad | +Equipo | +Validación | +Convocatoria | +Puntaje | +Opciones | +
---|---|---|---|---|---|---|
{{ contestaFormulario.contesta_formularios.fecha}} | +{{ contestaFormulario.contesta_formularios.formularios }} | ++ {{ contestaFormulario.usuario.username}} + | ++ {% if contestaFormulario.contesta_formularios.validacion == "0" %} + Pendiente + {% elif contestaFormulario.contesta_formularios.validacion == "1" %} + Aceptado + {% else %} + Rechazado + {% endif %} + | +De {{ contestaFormulario.contesta_formularios.convocatoria.fecha_inicio }} | +{{ contestaFormulario.valor_numerico}} | +
+
+ Detalles
+ Evaluacion
+
+ |
+
+ No hay solicitudes registradas + |
+
Campo | +Respuesta | +
---|---|
{{ detalles.campo }} | +
+ {% if detalles.uploadedFile %}
+
+ + {{ detalles.uploadedFile.url }} + {% else %} + {{ detalles.respuesta }} + {% endif %} + |
+
+ No existen detalles de contesta cuestionario registrados + |
+
Campo | +Respuesta | +
---|---|
{{ detalles.campo }} | +
+ {% if detalles.uploadedFile %}
+
+ + {{ detalles.uploadedFile.url }} + {% else %} + {{ detalles.respuesta }} + {% endif %} + |
+
+ No existen modalidades registradas + |
+
Fecha | +Tareas | +Opciones | +
---|---|---|
{{ contestaFormulario.fecha}} | +{{ contestaFormulario.tareas.nombre }} | +
+
+ Detalles
+
+ |
+
+ No hay tareas registradas + |
+
Campo | +Respuesta | +
---|---|
{{ detalles.campo }} | +
+ {% if detalles.uploadedFile %}
+
+ + {{ detalles.uploadedFile.url }} + {% else %} + {{ detalles.respuesta }} + {% endif %} + |
+
+ No existen detalles de las tareas + |
+
No hay convocatorias registradas, puedes activar una convocatoria aquí: Activar Convocatoria +
+ {% endif %} + Agregar Módulo + {% endif %} + {% endfor %} +{% endblock encabezado %} + +{% block contenido %} + + + +{{ formulario.descripcion|default:"No cuenta con descripción" }}
+No existen modalidades registradas
+ {% endfor %} ++
CONVENIO DE APOYO Y COLABORACIÓN QUE CELEBRAN POR UNA PARTE EL CONSEJO ZACATECANO DE CIENCIA, TECNOLOGÍA E INNOVACIÓN, EN LO SUCESIVO "EL COZCYT”, REPRESENTADO POR SU DIRECTOR GENERAL, EL DOCTOR EN CIENCIAS HAMURABI GAMBOA ROSALES; Y POR LA OTRA, EL C. {{nombre}} {{apellido}}, EN COLABORACION DE {{instituto}}., EN LO SUCESIVO “EL BENEFICIARIO” EN EL QUE SE ESTABLECEN LAS BASES PARA EL OTORGAMIENTO DE APOYO ECONÓMICO PARA EL DESARROLLO DE SUS ACTIVIDADES EN BENEFICIO DEL ESTADO DE ZACATECAS AL TENOR DE LOS SIGUIENTES ANTECEDENTES, DECLARACIONES Y CLÁUSULAS:
++
A N T E C E D E N T E S:
++
1.- Que por parte "EL COZCYT”, ha implementado un proyecto para promover la Formación de Recursos humanos en formación profesional de alto nivel, con especialidad para erradicar la problemática que los sectores productivos enfrentan en nuestra entidad.
++
2.- Que una de las acciones para llevar a cabo dicho proyecto y con fundamento en el Capítulo III de la Formación de Recursos Humanos, Artículo 34 Fracción III, de la Ley de Ciencia, Tecnología e Innovación del Estado de Zacatecas, es Fomentar programas de apoyos para la formación de recursos humanos orientados a la investigación científica y tecnológica a través de estudios de formación profesional, que satisfagan las necesidades del conocimiento y la investigación en las áreas prioritarias del Estado.
++
3.- Que para cumplir con los objetivos y metas establecidas en el Proyecto en comento, las partes suscribirán los instrumentos legales correspondientes para realizar las acciones específicas acordadas que coadyuven a la operación y ejecución del mismo.
++
D E C L A R A C I O N E S:
++
I.- DE "EL COZCYT”:
++
+
+
+
+
Que para los efectos de este convenio tiene su domicilio en Av. de la Juventud No. 504, Colonia Barros Sierra, C.P. 98090, Zacatecas, Zacatecas.
++
II.- DE “EL BENEFICIARIO”.
++
+
+
+
C L A U S U L A S:
++
PRIMERA.- El presente Convenio tiene por objeto establecer la debida colaboración entre “EL COZCYT” y “EL BENEFICIARIO”, para que a través de un apoyo económico, “EL BENEFICIARIO” tenga la posibilidad de realizar las actividades en beneficio del desarrollo del Estado de Zacatecas.
++
SEGUNDA.- Para la consecución del objeto del presente Convenio “EL COZCYT”, se compromete a:
++
TERCERA.- “EL BENEFICIARIO” para la consecución del objeto del presente Convenio, se compromete a:
++
+
+
+
+
CUARTA.- Cada una de las partes se obliga a proporcionar oportunamente los elementos necesarios para la realización del presente Convenio Específico, en los términos establecidos en el mismo, así como los de carácter legal y leyes vigentes del Estado de Zacatecas.
++
QUINTA.- Ambas partes apoyarán y fomentarán toda actividad relativa a la formación de la ciencia y la tecnología, a la divulgación académica, científica, cultural, tecnológica y a la superación académica en las áreas que consideren de su interés, relacionadas con los estudios en mención.
++
SEXTA.- El incumplimiento a cualquiera de las obligaciones pactadas en el presente convenio dará lugar a que en actividades académicas futuras se niegue a “EL BENEFICIARIO” por parte de “EL COZCYT”, todo apoyo ya sea económico o en especie, y en especial el incumpliendo a la cláusula tercera inciso C, dará lugar al requerimiento de la devolución íntegra del monto establecido en la cláusula segunda inciso A del presente instrumento legal.
++
SEPTIMA.- El presente Convenio surtirá sus efectos a partir de la fecha de su firma y tendrá una vigencia hasta el momento de la entrega de los informes técnico.
++
OCTAVA.- Enteradas las partes del contenido y alcance legal de todas y cada una de sus declaraciones y cláusulas, firman al calce y al margen los que en ella intervinieron y quisieron hacerlo en la Ciudad de Zacatecas, Zacatecas, a los 27 días del mes de abril del dos mil veintidós.
++
+
+
+
+
+
+
+
+
+
+
+ POR "EL COZCYT” + |
+
+ + |
+
+ POR “EL BENEFICIARIO” + |
+
+ DR. EN C HAMURABI GAMBOA ROSALES +DIRECTOR GENERAL DEL CONSEJO ZACATECANO DE CIENCIA, TECNOLOGÍA E INNOVACIÓN + |
+
+ + |
+
+ {{nombre}} {{apellido}} +ESTUDIANTE DE + {% if grado_estudio == '1' %} + Licenciatura + {% else %} + {% if grado_estudio == '2' %} + Maestría + {% else %} + {% if grado_estudio == '3' %} + Doctorado + {% else %} + Posdoctorado + {% endif %} + {% endif %} + {% endif %} + + EN {{instituto}}. + |
+
+ + |
+
+ + |
+
+ + |
+
Copyright © 2020 All rights reserved.
+Nombre de la Actividades | + {% if 'Administrador' in grupo.name %} +Opciones | + {% endif %} + {% endfor %} +|
---|---|---|
+ {{actividad.nombreActividad}} + | ++ {% for grupo in request.user.groups.all %} + {% if 'Administrador' in grupo.name %} + + Eliminar + + + Editar + + {% endif %} + {% endfor %} + + | +|
+ No existen Actividades registradas + |
+
Nombre de la discapacidad | +Opciones | + {% endif %} + {% endfor %} +|
---|---|---|
+ Discapacidad {{discapacidad.nombreDisapacidad}} + | ++ {% for grupo in request.user.groups.all %} + {% if 'Administrador' in grupo.name %} + + Editar + + + Eliminar + + {% endif %} + {% endfor %} + | +|
+ No existen discapacidad registradas + |
+
INCUBATEC es una empresa de alto impacto tecnológico, escalable y que genera beneficios a la sociedad Zacatecana.
+Si quieres saber más información sobre INCUBATEC, visita el siguiente enlace:
+ Más información sobre INCUBATEC +