def editar_cohortes(request, carrera_jurisdiccional_id):
    """
	Edición de datos de cohortes del título jurisdiccional.
	"""
    try:
        carrera_jurisdiccional = CarreraJurisdiccional.objects.get(pk=carrera_jurisdiccional_id)
    except:
        # Es nuevo, no mostrar el formulario antes de que guarden los datos básicos
        return my_render(
            request,
            "titulos/carrera_jurisdiccional/new.html",
            {
                "carrera_jurisdiccional": None,
                "form_template": "titulos/carrera_jurisdiccional/form_cohortes.html",
                "page_title": "Datos de cohortes",
                "current_page": "cohortes",
            },
        )

    try:
        cohorte = CarreraJurisdiccionalCohorte.objects.get(carrera_jurisdiccional=carrera_jurisdiccional)
    except:
        cohorte = CarreraJurisdiccionalCohorte(carrera_jurisdiccional=carrera_jurisdiccional)

    if request.method == "POST":
        form = CarreraJurisdiccionalSolicitarCohortesForm(request.POST, instance=cohorte)
        if form.is_valid():
            cohorte = form.save()
            request.set_flash("success", "Datos guardados correctamente.")
            # redirigir a edit
            return HttpResponseRedirect(reverse("carreraJurisdiccionalCohortesEdit", args=[carrera_jurisdiccional.id]))
        else:
            request.set_flash("warning", "Ocurrió un error guardando los datos.")
    else:
        form = CarreraJurisdiccionalSolicitarCohortesForm(instance=cohorte)

    try:
        if carrera_jurisdiccional.datos_cohorte.get().id is None:
            is_new = True
        else:
            is_new = False
    except CarreraJurisdiccionalCohorte.DoesNotExist:
        is_new = True

    return my_render(
        request,
        "titulos/carrera_jurisdiccional/edit.html",
        {
            "form": form,
            "carrera_jurisdiccional": carrera_jurisdiccional,
            "form_template": "titulos/carrera_jurisdiccional/form_cohortes.html",
            "is_new": is_new,
            "page_title": "Datos de cohortes",
            "current_page": "cohortes",
        },
    )
示例#2
0
def editar_normativas(request, solicitud_id):
    """
    Edición de normativas
    """
    try:
        solicitud = Solicitud.objects.get(pk=solicitud_id)
    except:
        # Es nuevo, no mostrar el formulario antes de que guarden los datos básicos
        return my_render(request, 'postitulos/solicitud/new.html', {
            'solicitud': None,
            'form_template': 'postitulos/solicitud/form_normativas.html',
            'page_title': 'Normativas',
            'current_page': 'normativas',
    })

    if not __puede_editarse_solicitud(request, solicitud):
        request.set_flash('warning', 'No puede editarse la solicitud.')
        return HttpResponseRedirect(reverse('postituloSolicitudIndex'))
        
    if request.method == 'POST':
        form = SolicitudNormativasForm(request.POST, instance=solicitud)
        if form.is_valid():
            normativas = form.save()

            request.set_flash('success', 'Datos guardados correctamente.')
            # redirigir a edit
            #return HttpResponseRedirect(reverse('postituloSolicitudNormativasEdit', args=[solicitud.id]))
        else:
            request.set_flash('warning', 'Ocurrió un error guardando los datos.')
    else:
        form = SolicitudNormativasForm(instance=solicitud)
        
    current_ids = [n.id for n in solicitud.normativas_jurisdiccionales.all().order_by('numero_anio')]
    restantes_ids = [n.id for n in NormativaPostituloJurisdiccional.objects.filter(jurisdiccion=solicitud.jurisdiccion).exclude(id__in=current_ids).order_by('numero_anio')]

    # http://blog.mathieu-leplatre.info/django-create-a-queryset-from-a-list-preserving-order.html
    pk_list = current_ids + restantes_ids
    clauses = ' '.join(['WHEN id=%s THEN %s' % (pk, i) for i, pk in enumerate(pk_list)])
    ordering = 'CASE %s END' % clauses
    queryset = NormativaPostituloJurisdiccional.objects.filter(pk__in=pk_list).extra(
               select={'ordering': ordering}, order_by=('ordering',))

    form.fields['normativas_jurisdiccionales'].queryset = queryset


    return my_render(request, 'postitulos/solicitud/edit.html', {
        'form': form,
        'solicitud': solicitud,
        'form_template': 'postitulos/solicitud/form_normativas.html',
        'is_new': False,
        'page_title': 'Normativas',
        'current_page': 'normativas',
    })
def editar_normativas(request, carrera_jurisdiccional_id):
    """
	Edición de normativas del título jurisdiccional.
	"""
    try:
        carrera_jurisdiccional = CarreraJurisdiccional.objects.get(pk=carrera_jurisdiccional_id)
    except:
        # Es nuevo, no mostrar el formulario antes de que guarden los datos básicos
        return my_render(
            request,
            "titulos/carrera_jurisdiccional/new.html",
            {
                "carrera_jurisdiccional": None,
                "form_template": "titulos/carrera_jurisdiccional/form_normativas.html",
                "page_title": "Normativas",
                "current_page": "normativas",
            },
        )

    if request.method == "POST":
        form = CarreraJurisdiccionalNormativasForm(request.POST, instance=carrera_jurisdiccional)
        if form.is_valid():
            normativas = form.save()

            request.set_flash("success", "Datos guardados correctamente.")
            # redirigir a edit
            return HttpResponseRedirect(
                reverse("carreraJurisdiccionalNormativasEdit", args=[carrera_jurisdiccional.id])
            )
        else:
            request.set_flash("warning", "Ocurrió un error guardando los datos.")
    else:
        form = CarreraJurisdiccionalNormativasForm(instance=carrera_jurisdiccional)

    form.fields["normativas"].queryset = form.fields["normativas"].queryset.filter(
        jurisdiccion=request.get_perfil().jurisdiccion, estado__nombre=EstadoNormativaJurisdiccional.VIGENTE
    )

    return my_render(
        request,
        "titulos/carrera_jurisdiccional/edit.html",
        {
            "form": form,
            "carrera_jurisdiccional": carrera_jurisdiccional,
            "form_template": "titulos/carrera_jurisdiccional/form_normativas.html",
            "is_new": False,
            "page_title": "Normativas",
            "current_page": "normativas",
        },
    )
def editar_cohortes(request, carrera_jurisdiccional_id):
	"""
	Edición de datos de cohortes del título jurisdiccional.
	"""
	try:
		carrera_jurisdiccional = CarreraJurisdiccional.objects.get(pk=carrera_jurisdiccional_id)
	except:
		# Es nuevo, no mostrar el formulario antes de que guarden los datos básicos
		return my_render(request, 'titulos/carrera_jurisdiccional/new.html', {
		'carrera_jurisdiccional': None,
		'form_template': 'titulos/carrera_jurisdiccional/form_cohortes.html',
		'page_title': 'Datos de cohortes',
		'current_page': 'cohortes',
	})

	try:
		cohorte = CarreraJurisdiccionalCohorte.objects.get(carrera_jurisdiccional=carrera_jurisdiccional)
	except:
		cohorte = CarreraJurisdiccionalCohorte(carrera_jurisdiccional=carrera_jurisdiccional)

	if request.method == 'POST':
		form = CarreraJurisdiccionalSolicitarCohortesForm(request.POST, instance=cohorte)
		if form.is_valid():
			cohorte = form.save()
			request.set_flash('success', 'Datos guardados correctamente.')
			# redirigir a edit
			return HttpResponseRedirect(reverse('carreraPostituloJurisdiccionalCohortesEdit', args=[carrera_jurisdiccional.id]))
		else:
			request.set_flash('warning', 'Ocurrió un error guardando los datos.')
	else:
		form = CarreraJurisdiccionalSolicitarCohortesForm(instance=cohorte)
		
	try:
		if carrera_jurisdiccional.datos_cohorte.get().id is None:
			is_new = True
		else: 
			is_new = False
	except CarreraJurisdiccionalCohorte.DoesNotExist:
		is_new = True
		
		
	return my_render(request, 'titulos/carrera_jurisdiccional/edit.html', {
		'form': form,
		'carrera_jurisdiccional': carrera_jurisdiccional,
		'form_template': 'titulos/carrera_jurisdiccional/form_cohortes.html',
		'is_new': is_new,
		'page_title': 'Datos de cohortes',
		'current_page': 'cohortes',
	})
示例#5
0
def create(request):
	import datetime
	if request.method == 'POST':
		form = CarreraForm(request.POST)
		if form.is_valid():
			carrera = form.save(commit=False)
			carrera.estado = EstadoCarrera.objects.get(nombre=EstadoCarrera.VIGENTE)
			carrera.save()
			form.save_m2m()  # Guardo las relaciones - https://docs.djangoproject.com/en/1.2/topics/forms/modelforms/#the-save-method
			carrera.registrar_estado()

			request.set_flash('success', 'Datos guardados correctamente.')

			# redirigir a edit
			return HttpResponseRedirect(reverse('carreraEdit', args=[carrera.id]))
		else:
			request.set_flash('warning', 'Ocurrió un error guardando los datos.')
	else:
		form = CarreraForm()
	
	form.fields['estado'].queryset = EstadoCarrera.objects.filter(nombre=EstadoCarrera.VIGENTE)
	return my_render(request, 'titulos/carrera/new.html', {
		'form': form,
		'is_new': True,
	})
示例#6
0
def completar_funciones(request, extension_aulica_id):
    ext = __get_extension_aulica(request, extension_aulica_id)

    if request.method == 'POST' and request.has_credencial('reg_extension_aulica_modificar'):
        form = ExtensionAulicaFuncionesForm(request.POST, instance=ext)
        if form.is_valid():
            funciones = form.save()
            if __puede_verificar_datos(request):
                v = ext.get_verificacion_datos()
                v.funciones = form.cleaned_data['verificado']
                v.save()
            #MailHelper.notify_by_email(MailHelper.ESTABLECIMIENTO_UPDATE, establecimiento)
            request.set_flash('success', 'Datos actualizados correctamente.')
        else:
            request.set_flash('warning', 'Ocurrió un error actualizando los datos.')
    else:
        form = ExtensionAulicaFuncionesForm(instance=ext)
    form.initial['verificado'] = ext.get_verificacion_datos().funciones

    return my_render(request, 'registro/extension_aulica/completar_datos.html', {
        'form': form,
        'form_template': 'registro/extension_aulica/form_funciones.html',
        'extension_aulica': ext,
        'page_title': 'Funciones',
        'actual_page': 'funciones',
        'configuracion_solapas': ConfiguracionSolapasExtensionAulica.get_instance(),
        'datos_verificados': ext.get_verificacion_datos().get_datos_verificados()
    })
示例#7
0
def create(request):
    """
    Alta de extensión áulica.
    """
    if request.method == 'POST':
        form = ExtensionAulicaCreateForm(request.POST)
        if form.is_valid():
            ext = form.save(commit=False)
            estado = EstadoExtensionAulica.objects.get(nombre=EstadoExtensionAulica.PENDIENTE)
            ext.estado = estado
            ext.fecha_alta = datetime.date.today()
            ext.save()
            ext.registrar_estado()

            MailHelper.notify_by_email(MailHelper.EXTENSION_AULICA_CREATE, ext)
            request.set_flash('success', 'Datos guardados correctamente.')

            # redirigir a edit
            return HttpResponseRedirect(reverse('extensionAulica'))
        else:
            request.set_flash('warning', 'Ocurrió un error guardando los datos.')
    else:
        form = ExtensionAulicaCreateForm()
        
    jurisdiccion = request.get_perfil().jurisdiccion()
    form.fields["establecimiento"].queryset = Establecimiento.objects.filter(ambito__path__istartswith=request.get_perfil().ambito.path)

    return my_render(request, 'registro/extension_aulica/new.html', {
        'form': form,
        'is_new': True,
    })
示例#8
0
def login(request):
  """
  Pantalla de login al sistema.
  Si el request.method es POST, valida que la contraseña sea correcta y
  en tal caso redirige a seleccionarPerfil.
  """
  if request.method == 'POST':
    form = LoginForm(request.POST)
    if form.is_valid():
      user = authenticate(
        form.cleaned_data['tipo_documento'],
        form.cleaned_data['documento'],
        form.cleaned_data['password'].strip(),
      )
      if user:
        if user.is_active:
          #user.update_last_login()
          request.session['user_id'] = user.id
          user.update_last_login()
          # Se logueo bien, lo redirijo a seleccionarPerfil
          return HttpResponseRedirect(reverse('seleccionarPerfil'))
        else:
          request.set_flash('warning', 'No puede iniciar sesión: usuario bloqueado')
  else:
    init={}
    try:
        init['tipo_documento'] = TipoDocumento.objects.get(abreviatura='DNI').id
    except:
        pass
    form = LoginForm(initial=init)
  return my_render(request, 'seguridad/login/login.html', {'form': form})
示例#9
0
def create(request, anexo_id):
    
    anexo = __get_anexo(request, anexo_id)
    """
    Alta de autoridad.
    """

    if request.method == 'POST':
        form = AnexoAutoridadForm(request.POST)
        if form.is_valid():
            autoridad = form.save(commit=False)
            autoridad.anexo_id = anexo.id
            autoridad.save()

            request.set_flash('success', 'Datos guardados correctamente.')
            return HttpResponseRedirect(reverse('anexoAutoridadEdit', args=[autoridad.id]))
        else:
            request.set_flash('warning', 'Ocurrió un error guardando los datos.')
    else:
        form = AnexoAutoridadForm()

    # Chequear si se puede dar de alta
    # XXX: sólo se puede dar de alta un registro por ahora
    alta_habilitada = AnexoAutoridad.objects.filter(anexo__id = anexo.id).count() == 0    
    if not alta_habilitada:  # no debería estar en esta pantalla
        request.set_flash('warning', 'No puede dar de alta más de una autoridad.')
        return HttpResponseRedirect(reverse('anexoCompletarContacto', args=[anexo.id]))
        #return HttpResponseRedirect(reverse('anexoAutoridadesIndex', args=[anexo.id]))
    
    return my_render(request, 'registro/anexo/autoridades/new.html', {
        'form': form,
        'anexo': anexo,
    })
def edit(request, domicilio_id):
    """
    Edición de los datos de una domicilio.
    """
    domicilio = EstablecimientoDomicilio.objects.get(pk=domicilio_id)
    establecimiento = __get_establecimiento(request, domicilio.establecimiento_id)
    jurisdiccion = establecimiento.dependencia_funcional.jurisdiccion

    if request.method == 'POST':
        form = EstablecimientoDomicilioForm(request.POST, instance=domicilio, jurisdiccion_id=jurisdiccion.id, establecimiento_id=establecimiento.id)
        if form.is_valid():
            domicilio = form.save()
            request.set_flash('success', 'Datos actualizados correctamente.')
            return HttpResponseRedirect(reverse('establecimientoDomiciliosIndex', args=[domicilio.establecimiento_id]))
        else:
            request.set_flash('warning', 'Ocurrió un error actualizando los datos.')
    else:
        form = EstablecimientoDomicilioForm(instance=domicilio, jurisdiccion_id=jurisdiccion.id, establecimiento_id=establecimiento.id)

    form.fields["localidad"].queryset = Localidad.objects.filter(departamento__jurisdiccion__id=jurisdiccion.id)
    return my_render(request, 'registro/establecimiento/domicilios/edit.html', {
        'form': form,
        'domicilio': domicilio,
        'establecimiento': establecimiento,
    })
示例#11
0
def edit(request, solicitud_id):
    """
    Edición de los datos de un título jurisdiccional.
    """
    solicitud = Solicitud.objects.get(pk=solicitud_id)
    
    if not __puede_editarse_solicitud(request, solicitud):
        request.set_flash('warning', 'No puede editarse la solicitud.')
        return HttpResponseRedirect(reverse('postituloSolicitudIndex'))
    
    estado_id = solicitud.estado_id
        
    if request.method == 'POST':
        form = SolicitudDatosBasicosForm(request.POST, instance=solicitud, jurisdiccion_id=solicitud.jurisdiccion_id)
        if form.is_valid():
            sol = form.save(commit=False)
            sol.id = solicitud.id
            sol.jurisdiccion_id = solicitud.jurisdiccion_id
            sol.estado_id = solicitud.estado_id
            form.save()

            request.set_flash('success', 'Datos actualizados correctamente.')
        else:
            request.set_flash('warning', 'Ocurrió un error actualizando los datos.')
    else:
        form = SolicitudDatosBasicosForm(instance=solicitud, jurisdiccion_id=solicitud.jurisdiccion_id)
    return my_render(request, 'postitulos/solicitud/edit.html', {
        'form': form,
        'solicitud': solicitud,
        'form_template': 'postitulos/solicitud/form_datos_basicos.html',
        'is_new': False,
        'page_title': 'Postítulo',
        'current_page': 'datos_basicos',
    })
示例#12
0
def edit(request, anexo_turno_id):
    """
    Edición de los datos de un turno.
    """
    anexo_turno = AnexoTurno.objects.get(pk=anexo_turno_id)
    anexo = __get_anexo(request, anexo_turno.anexo_id)

    if request.method == 'POST':
        form = AnexoTurnoForm(request.POST, instance=anexo_turno, anexo_id=anexo.id)
        if form.is_valid():
            anexo_turno = form.save()
            request.set_flash('success', 'Datos actualizados correctamente.')
            return HttpResponseRedirect(reverse('anexoTurnosIndex', args=[anexo_turno.anexo_id]))
        else:
            request.set_flash('warning', 'Ocurrió un error actualizando los datos.')
    else:
        form = AnexoTurnoForm(instance=anexo_turno, anexo_id=anexo.id)

    es_dominio_compartido_id = TipoDominio.objects.get(descripcion=TipoDominio.TIPO_COMPARTIDO).id
    comparte_otro_nivel_id = TipoCompartido.objects.get(descripcion=TipoCompartido.TIPO_OTRA_INSTITUCION).id
    return my_render(request, 'registro/anexo/turnos/edit.html', {
        'form': form,
        'anexo_turno': anexo_turno,
        'anexo': anexo,
        'es_dominio_compartido_id': es_dominio_compartido_id,
        'comparte_otro_nivel_id': comparte_otro_nivel_id,
    })
示例#13
0
def create(request, anexo_id):
    anexo = __get_anexo(request, anexo_id)
    """
    Alta de turno.
    """

    if request.method == 'POST':
        form = AnexoTurnoForm(request.POST, anexo_id=anexo.id)
        if form.is_valid():
            anexo_turno = form.save(commit=False)
            anexo_turno.anexo_id = anexo_id
            anexo_turno.save()
            form.save_m2m()
            request.set_flash('success', 'Datos guardados correctamente.')
            return HttpResponseRedirect(reverse('anexoTurnosIndex', args=[anexo_turno.anexo_id]))
        else:
            request.set_flash('warning', 'Ocurrió un error guardando los datos.')
    else:
        form = AnexoTurnoForm(anexo_id=anexo.id)
        
    es_dominio_compartido_id = TipoDominio.objects.get(descripcion=TipoDominio.TIPO_COMPARTIDO).id
    comparte_otro_nivel_id = TipoCompartido.objects.get(descripcion=TipoCompartido.TIPO_OTRA_INSTITUCION).id
    return my_render(request, 'registro/anexo/turnos/new.html', {
        'anexo': anexo,
        'form': form,
        'es_dominio_compartido_id': es_dominio_compartido_id,
        'comparte_otro_nivel_id': comparte_otro_nivel_id,
    })
示例#14
0
def create(request):
    """
    Alta de usuario.
    """
    if request.method == "POST":
        form = UsuarioCreateForm(request.POST)
        if form.is_valid():
            usuario = form.save(commit=False)
            usuario.set_password(form.cleaned_data["password"])
            usuario.is_active = True
            usuario.save()
            perfil = Perfil()
            perfil.usuario = usuario
            perfil.rol = form.cleaned_data["rol"]
            perfil.ambito = form.cleaned_data["ambito"]
            perfil.fecha_asignacion = datetime.now()
            perfil.save()
            request.set_flash("success", "Datos guardados correctamente.")
            # redirigir a edit
            return HttpResponseRedirect(reverse("usuarioEdit", args=[usuario.id]))
        else:
            request.set_flash("warning", "Ocurrió un error guardando los datos.")
    else:
        init = {"tipo_documento": TipoDocumento.objects.get(abreviatura="DNI").id}
        form = UsuarioCreateForm(initial=init)
    form.fields["rol"].queryset = request.get_perfil().rol.roles_asignables.all()

    return my_render(request, "seguridad/usuario/new.html", {"form": form})
示例#15
0
def create(request, extension_aulica_id):
    
    extension_aulica = __get_extension_aulica(request, extension_aulica_id)
    """
    Alta de autoridad.
    """

    if request.method == 'POST':
        form = ExtensionAulicaAutoridadForm(request.POST)
        if form.is_valid():
            autoridad = form.save(commit=False)
            autoridad.extension_aulica_id = extension_aulica.id
            autoridad.save()

            request.set_flash('success', 'Datos guardados correctamente.')
            return HttpResponseRedirect(reverse('extensionAulicaAutoridadEdit', args=[autoridad.id]))
        else:
            request.set_flash('warning', 'Ocurrió un error guardando los datos.')
    else:
        form = ExtensionAulicaAutoridadForm()

    # Chequear si se puede dar de alta
    # XXX: sólo se puede dar de alta un registro por ahora
    alta_habilitada = ExtensionAulicaAutoridad.objects.filter(extension_aulica__id = extension_aulica.id).count() == 0    
    if not alta_habilitada:  # no debería estar en esta pantalla
        request.set_flash('warning', 'No puede dar de alta más de una autoridad.')
        return HttpResponseRedirect(reverse('extensionAulicaAutoridadesIndex', args=[extension_aulica.id]))
    
    return my_render(request, 'registro/extension_aulica/autoridades/new.html', {
        'form': form,
        'extension_aulica': extension_aulica,
    })
示例#16
0
def eliminar(request, cohorte_id):
    """
    Baja de una cohorte
    --- mientras no estén asignadas a un establecimiento ---
    """
    cohorte = Cohorte.objects.get(pk=cohorte_id)
    asignada_establecimiento = cohorte.asignada_establecimiento()

    if asignada_establecimiento:
        request.set_flash('warning', 'La cohorte no puede darse de baja porque tiene establecimientos asignados.')
    else:
        request.set_flash('warning', 'Está seguro de eliminar la cohorte? Esta operación no puede deshacerse.')

    if request.method == 'POST':
        if int(request.POST['cohorte_id']) is not int(cohorte.id):
            raise Exception('Error en la consulta!')

        cohorte.delete()
        request.set_flash('success', 'La cohorte fue eliminada correctamente.')
        """ Redirecciono para evitar el reenvío del form """
        return HttpResponseRedirect(reverse('cohorte'))

    return my_render(request, 'titulos/cohorte/eliminar.html', {
        'cohorte': cohorte,
        'cohorte_id': cohorte.id,
        'asignada_establecimiento': asignada_establecimiento,
    })
def create(request, establecimiento_id):
    establecimiento = __get_establecimiento(request, establecimiento_id)
    """
    Alta de domicilio.
    """
    jurisdiccion = establecimiento.dependencia_funcional.jurisdiccion

    if request.method == 'POST':
        form = EstablecimientoDomicilioForm(request.POST, jurisdiccion_id=jurisdiccion.id, establecimiento_id=establecimiento.id)
        if form.is_valid():
            domicilio = form.save(commit=False)
            domicilio.establecimiento_id = establecimiento.id
            domicilio.save()

            request.set_flash('success', 'Datos guardados correctamente.')
            return HttpResponseRedirect(reverse('establecimientoDomiciliosIndex', args=[domicilio.establecimiento_id]))
        else:
            request.set_flash('warning', 'Ocurrió un error guardando los datos.')
    else:
        form = EstablecimientoDomicilioForm(jurisdiccion_id=jurisdiccion.id, establecimiento_id=establecimiento.id)
    form.fields["localidad"].queryset = Localidad.objects.filter(departamento__jurisdiccion__id=jurisdiccion.id)
    "Localidad seleccionada al hacer refresh"
    try:        
        localidad_seleccionada = request.POST['localidad']
    except KeyError:
        localidad_seleccionada = None
    return my_render(request, 'registro/establecimiento/domicilios/new.html', {
        'establecimiento': establecimiento,
        'form': form,
        'localidad_seleccionada': localidad_seleccionada,
    })
示例#18
0
def informe(request, solicitud_id):
    solicitud = Solicitud.objects.get(pk=solicitud_id, estado__nombre__in=[EstadoSolicitud.CONTROLADO])

    try:
        informe = solicitud.informe.get()
    except InformeSolicitud.DoesNotExist:
        informe = solicitud.generar_informe()


    if request.method == 'POST':
        form = InformeSolicitudForm(request.POST, instance=informe)
        
        informe.solicitud = solicitud

        if form.is_valid():
            informe = form.save(commit=False)
            informe.solicitud = solicitud
            informe.save()

            request.set_flash('success', 'Datos actualizados correctamente.')
        else:
            request.set_flash('warning', 'Ocurrió un error actualizando los datos.')
            raise Exception(form.errors)
    else:
        form = InformeSolicitudForm(instance=informe)
    
    return my_render(request, 'postitulos/solicitud/informe.html', {
        'solicitud': solicitud,
        'informe': informe,
        'form': form,
    })
示例#19
0
def index(request):
    if request.method == 'GET':
        form_filter = MatriculaFormFilters(request.GET)
    else:
        form_filter = MatriculaFormFilters()
    q = build_query(form_filter, 1, request)

    paginator = Paginator(q, ITEMS_PER_PAGE)

    try:
        page_number = int(request.GET['page'])
    except (KeyError, ValueError):
        page_number = 1
    # chequear los límites
    if page_number < 1:
        page_number = 1
    elif page_number > paginator.num_pages:
        page_number = paginator.num_pages

    page = paginator.page(page_number)
    objects = page.object_list
    return my_render(request, 'titulos/matricula/index.html', {
        'form_filters': form_filter,
        'objects': objects,
        'paginator': paginator,
        'page': page,
        'page_number': page_number,
        'pages_range': range(1, paginator.num_pages + 1),
        'next_page': page_number + 1,
        'prev_page': page_number - 1
    })
示例#20
0
def create(request):
    try:
        jurisdiccion_id = jurisdiccion_id=request.get_perfil().jurisdiccion().id
    except AttributeError:
        jurisdiccion_id = None
    if request.method == 'POST':
        form = SolicitudDatosBasicosForm(request.POST, jurisdiccion_id=jurisdiccion_id)
        if form.is_valid():
            solicitud = form.save(commit=False)
            solicitud.estado = EstadoSolicitud.objects.get(nombre=EstadoSolicitud.PENDIENTE)
            solicitud.jurisdiccion = request.get_perfil().jurisdiccion()
            solicitud.save()
            
            solicitud.registrar_estado()

            request.set_flash('success', 'Datos guardados correctamente.')

            return HttpResponseRedirect(reverse('postituloSolicitudEdit', args=[solicitud.id]))
        else:
            request.set_flash('warning', 'Ocurrió un error guardando los datos.')
    else:
        form = SolicitudDatosBasicosForm(jurisdiccion_id=jurisdiccion_id)
    # Agrego el filtro por jurisdicción
    return my_render(request, 'postitulos/solicitud/new.html', {
        'form': form,
        'form_template': 'postitulos/solicitud/form_datos_basicos.html',
        'is_new': True,
        'page_title': 'Postítulo',
        'current_page': 'datos_basicos',
    })
示例#21
0
def reset_password(request, key):
  try:
    prk = PasswordRememberKey.objects.get(key=key)
    new_pass = ''.join(random.sample("1234567890qwertyuiopasdfghjklzxcvbnm", 8))
    prk.usuario.set_password(new_pass)
    user = prk.usuario
    user.save()
    prk.delete()
    html_content = u"""
<p><b>Hola """ + user.nombre + " " + user.apellido + u""",</b></p>
<p>Le informamos que su nueva contraseña de acceso al sistema REFFOD es: <b>""" + new_pass + u"""</b></p>
<p>Si lo considera apropiado, una vez que haya ingresado al sistema utilizando esta contraseña, podrá cambiarla
haciendo clic en el menú <b>MIS DATOS</b>, en la opción <b>Modificar contraseña</b>.</p>
<p>Si desea acceder ahora, haga clic en el siguiente enlace:</p>
<p align='center'>
    <b><a href=\""""+settings.BASE_URL+u"""\">Acceder al Sistema REFFOD</a></b>
</p>
<p>Muchas gracias,</p>
<p><b>Registro Federal de Instituciones y Ofertas de Formación Docente</b></p>
    """
    msg = EmailMessage(u"Nueva Contraseña de Acceso al REFFOD", html_content, settings.EMAIL_FROM, [user.email])
    msg.content_subtype = "html"  # Main content is now text/html
    msg.send()
    request.set_flash('success', u'Le hemos enviado a ' + user.email + u' la nueva contraseña de acceso al sistema. Tenga en cuenta que tal vez deba revisar la carpeta de Spam para leer el correo.')
  except:
    request.set_flash('warning', 'Link inválido')
  return my_render(request, 'seguridad/login/resetPassword.html', {})
示例#22
0
def datos_generales(request):
    rows = Estadistica.datos_generales()
    paginator = Paginator(rows, ITEMS_PER_PAGE)
    
    try:
        page_number = int(request.GET['page'])
    except (KeyError, ValueError):
        page_number = 1
    # chequear los límites
    if page_number < 1:
        page_number = 1
    elif page_number > paginator.num_pages:
        page_number = paginator.num_pages

    page = paginator.page(page_number)
    rows = page.object_list
	
	
    return my_render(request, 'reportes/estadistica/datos_generales.html', {
	    'rows': rows,
        'paginator': paginator,
        'page': page,
        'page_number': page_number,
        'pages_range': range(1, paginator.num_pages + 1),
        'next_page': page_number + 1,
        'prev_page': page_number - 1,
	})
示例#23
0
def remember_password(request):
  if request.method == 'POST' and len(request.POST) > 0:
    form = RememberPasswordForm(request.POST)
    if form.is_valid():
      user = Usuario.objects.filter(documento=form.cleaned_data['documento']).filter(tipo_documento=form.cleaned_data['tipo_documento']).all()[0]
      key = PasswordRememberKey()
      key.usuario = user
      tmp = ''.join(random.sample("1234567890qwertyuiopasdfghjklzxcvbnm", 32))
      key.key = sha1(str(user.id)).hexdigest() + tmp
      key.save()
      html_content = u"""
<b>Hola """ + user.nombre + u" " + user.apellido + u""",</b>
<p>Hemos recibido recientemente una solicitud para restablecer su contraseña.</p>
<p>Si usted no solicitó el restablecimiento, simplemente ignore este mensaje.</p>
<p>Si efectivamente es usted quien lo solicitó, por favor haga clic en el enlace que se encuentra más abajo y
nosotros le enviaremos, en otro correo, la nueva contraseña para acceder al sistema.</p>
<p align='center'>
    <b><a href=\""""+settings.BASE_URL+"""reset_password/"""+key.key+u"""\">Enviarme una Nueva Contraseña</a></b>
</p>
<p>Muchas gracias,</p>
<p><b>Registro Federal de Instituciones y Ofertas de Formación Docente</b></p>
      """
      msg = EmailMessage("Confirmación de Solicitud de Restablecimiento de Contraseña", html_content, settings.EMAIL_FROM, [user.email])
      msg.content_subtype = "html"  # Main content is now text/html
      msg.send()
      request.set_flash('success', u'Le hemos enviado a ' + user.email + u' instrucciones para restablecer su contraseña y volver a tener acceso al sistema. Tenga en cuenta que tal vez deba revisar la carpeta de Spam para leer el correo.')
  else:
    init = {}
    try:
        init['tipo_documento'] = TipoDocumento.objects.get(abreviatura='DNI').id
    except:
        pass
    form = RememberPasswordForm(initial=init)
  return my_render(request, 'seguridad/login/rememberPassword.html', {'form': form})
示例#24
0
def create(request, extension_aulica_id):
    extension_aulica = __get_extension_aulica(request, extension_aulica_id)
    """
    Alta de domicilio.
    """
    jurisdiccion = extension_aulica.establecimiento.dependencia_funcional.jurisdiccion

    if request.method == 'POST':
        form = ExtensionAulicaDomicilioForm(request.POST, jurisdiccion_id=jurisdiccion.id, extension_aulica_id=extension_aulica.id)
        form.extension_aulica_id = extension_aulica_id
        if form.is_valid():
            domicilio = form.save(commit=False)
            domicilio.extension_aulica_id = extension_aulica.id
            domicilio.save()

            request.set_flash('success', 'Datos guardados correctamente.')
            return HttpResponseRedirect(reverse('extensionAulicaDomiciliosIndex', args=[domicilio.extension_aulica_id]))
        else:
            request.set_flash('warning', 'Ocurrió un error guardando los datos.')
    else:
        form = ExtensionAulicaDomicilioForm(jurisdiccion_id=jurisdiccion.id, extension_aulica_id=extension_aulica.id)
    form.fields["localidad"].queryset = Localidad.objects.filter(departamento__jurisdiccion__id=jurisdiccion.id)
    return my_render(request, 'registro/extension_aulica/domicilios/new.html', {
        'extension_aulica': extension_aulica,
        'form': form,
    })
示例#25
0
def completar_datos_basicos(request, extension_aulica_id):
    """
    Edición de los datos de una extensión áulica.
    """
    ext = __get_extension_aulica(request, extension_aulica_id)
    if request.method == 'POST' and request.has_credencial('reg_extension_aulica_modificar'):
        form = ExtensionAulicaDatosBasicosForm(request.POST, instance=ext)
        if form.is_valid():
            ext = form.save()
            if __puede_verificar_datos(request):
                v = ext.get_verificacion_datos()
                v.datos_basicos = form.cleaned_data['verificado']
                v.save()
            request.set_flash('success', 'Datos actualizados correctamente.')
        else:
            request.set_flash('warning', 'Ocurrió un error actualizando los datos.')
    else:
        form = ExtensionAulicaDatosBasicosForm(instance=ext)

    form.initial['verificado'] = ext.get_verificacion_datos().datos_basicos
    
    return my_render(request, 'registro/extension_aulica/completar_datos.html', {
        'form': form,
        'form_template': 'registro/extension_aulica/form_datos_basicos.html',
        'extension_aulica': ext,
        'page_title': 'Datos básicos',
        'actual_page': 'datos_basicos',
        'configuracion_solapas': ConfiguracionSolapasExtensionAulica.get_instance(),
        'datos_verificados': ext.get_verificacion_datos().get_datos_verificados()
    })    
示例#26
0
def create(request, extension_aulica_id):
    extension_aulica = __get_extension_aulica(request, extension_aulica_id)
    """
    Alta de matricula.
    """

    if request.method == 'POST':
        form = ExtensionAulicaMatriculaForm(request.POST, extension_aulica=extension_aulica)
        if form.is_valid():
            matricula = form.save(commit=False)
            matricula.extension_aulica_id = extension_aulica.id
            matricula.set_formacion_continua()
            matricula.set_formacion_docente()
            matricula.save()

            request.set_flash('success', 'Datos guardados correctamente.')
            return HttpResponseRedirect(reverse('extensionAulicaMatriculaIndexExtensionAulica', args=[matricula.extension_aulica_id]))
        else:
            request.set_flash('warning', 'Ocurrió un error guardando los datos.')
    else:
        form = ExtensionAulicaMatriculaForm(extension_aulica=extension_aulica)
    return my_render(request, 'registro/extension_aulica/matricula/new.html', {
        'extension_aulica': extension_aulica,
        'form': form,
    })
示例#27
0
def modificar_cue(request, extension_aulica_id):
    extension_aulica = __get_extension_aulica(request, extension_aulica_id)
    if request.method == 'POST':
        form = ExtensionAulicaModificarCueForm(request.POST, instance=extension_aulica)
        if form.is_valid():
            extension_aulica = form.save()
           
            MailHelper.notify_by_email(MailHelper.EXTENSION_AULICA_UPDATE, extension_aulica)
            request.set_flash('success', 'Datos actualizados correctamente.')
        else:
            request.set_flash('warning', 'Ocurrió un error actualizando los datos.')
    else:
        form = ExtensionAulicaModificarCueForm(instance=extension_aulica)

    parts = extension_aulica.get_cue_parts()
    form.initial['codigo_jurisdiccion'] = parts['codigo_jurisdiccion']
    form.initial['cue'] = parts['cue']
    form.initial['codigo_tipo_unidad_educativa'] = parts['codigo_tipo_unidad_educativa']

    return my_render(request, 'registro/extension_aulica/completar_datos.html', {
        'form': form,
        'form_template': 'registro/extension_aulica/form_modificar_cue.html',
        'extension_aulica': extension_aulica,
        'page_title': 'Modificar CUE',
        'actual_page': 'datos_basicos',
        'configuracion_solapas': ConfiguracionSolapasExtensionAulica.get_instance(),
        'datos_verificados': extension_aulica.get_verificacion_datos().get_datos_verificados()
    })
示例#28
0
def edit(request, matricula_id):
    """
    Edición de los datos de una matricula.
    """
    matricula = ExtensionAulicaMatricula.objects.get(pk=matricula_id)
    extension_aulica = __get_extension_aulica(request, matricula.extension_aulica_id)

    if request.method == 'POST':
        form = ExtensionAulicaMatriculaForm(request.POST, instance=matricula, extension_aulica=extension_aulica)
        if form.is_valid():
            matricula = form.save(commit=False)
            matricula.set_formacion_continua()
            matricula.set_formacion_docente()
            matricula.save()
            request.set_flash('success', 'Datos actualizados correctamente.')
            return HttpResponseRedirect(reverse('extensionAulicaMatriculaIndexExtensionAulica', args=[matricula.extension_aulica_id]))
        else:
            request.set_flash('warning', 'Ocurrió un error actualizando los datos.')
    else:
        form = ExtensionAulicaMatriculaForm(instance=matricula, extension_aulica=extension_aulica)

    return my_render(request, 'registro/extension_aulica/matricula/edit.html', {
        'form': form,
        'matricula': matricula,
        'extension_aulica': extension_aulica,
    })
示例#29
0
def edit(request, carrera_id):
	"""
	Edición de los datos de una carrera.
	"""
	carrera = Carrera.objects.get(pk=carrera_id)

	estado_actual_id = carrera.estado.id

	if request.method == 'POST':
		form = CarreraForm(request.POST, instance=carrera, initial={'estado': estado_actual_id})
		if form.is_valid():
			carrera = form.save(commit=False)

			"Cambiar el estado?"
			if int(request.POST['estado']) is not estado_actual_id:
				carrera.estado = EstadoCarrera.objects.get(pk=request.POST['estado'])
				carrera.save()
				carrera.registrar_estado()
			else:
				# Guardar directamente
				carrera.save()

			form.save_m2m()  # Guardo las relaciones - https://docs.djangoproject.com/en/1.2/topics/forms/modelforms/#the-save-method

			request.set_flash('success', 'Datos actualizados correctamente.')
		else:
			request.set_flash('warning', 'Ocurrió un error actualizando los datos.')
	else:
		form = CarreraForm(instance=carrera, initial={'estado': estado_actual_id})

	return my_render(request, 'titulos/carrera/edit.html', {
		'form': form,
		'carrera': carrera,
	})
示例#30
0
def cohortes_por_carrera_jurisdiccional(request, carrera_jurisdiccional_id):
    "Cohortes por título"
    carrera_jurisdiccional = CarreraJurisdiccional.objects.get(pk=carrera_jurisdiccional_id)
    q = Cohorte.objects.filter(carrera_jurisdiccional__id=carrera_jurisdiccional.id)
    paginator = Paginator(q, ITEMS_PER_PAGE)

    try:
        page_number = int(request.GET['page'])
    except (KeyError, ValueError):
        page_number = 1
    # chequear los límites
    if page_number < 1:
        page_number = 1
    elif page_number > paginator.num_pages:
        page_number = paginator.num_pages

    page = paginator.page(page_number)
    objects = page.object_list
    return my_render(request, 'titulos/cohorte/cohortes_por_carrera_jurisdiccional.html', {
        #'form_filters': form_filter,
        'carrera_jurisdiccional': carrera_jurisdiccional,
        'objects': objects,
        'paginator': paginator,
        'page': page,
        'page_number': page_number,
        'pages_range': range(1, paginator.num_pages + 1),
        'next_page': page_number + 1,
        'prev_page': page_number - 1
    })