Example #1
0
def postular(request):
  # Se obtiene el rol de la postulación
  rol_id = request.GET.get('rol_id')
  try:
    rol = Rol.objects.get(pk=rol_id,trabajo__publicado=True)
  except Rol.DoesNotExist:
    messages.error(request,_(u'O perfil do trabalho para o qual quer aplicar nao foi encontrado'))
    return redirect('/trabajo/busquedas/')
  # Se verifica que el usuario tenga cargado su perfil
  try:
    request.user.agenciado
  except Agenciado.DoesNotExist:
    messages.info(request,
      _(u'Para aplicar ao perfil %(rol)s do trabalho <a href=%(url)s>%(trabajo)s</a> tem que completar seus dados de Agenciado')%{
        'rol':rol.descripcion,'url':'/trabajo/busquedas/?id=%s'%rol.trabajo.id,'trabajo':rol.trabajo.titulo})
    return redirect('/agenciado/?next=%s'%request.get_full_path())
  # Se realiza la postulación
  try:
    postulacion=Postulacion.objects.get(agenciado=request.user.agenciado,rol=rol)
  except Postulacion.DoesNotExist:
    postulacion=Postulacion(agenciado=request.user.agenciado,rol=rol,estado='PA')
    postulacion.save()

  messages.success(request,_(u'Aplicação para o perfil "%s" realizada com sucesso.')%rol.descripcion)
  messages.info(request,_(u'A aplicação vai ser analizada por nosso equipe, muito obrigado por sua postulação.'))
  return redirect('/trabajo/busquedas/?id=%s'%rol.trabajo.id)
Example #2
0
def agregar_agenciados_seleccionados_a_rol(request):

  # Se obtienen los agenciados asociados a los IDs
  if request.method == 'GET':
    ids = request.GET['ids']
  else:
    ids = request.POST['ids']
  listado_ids=ids.split(',')
  agenciados=Agenciado.objects.filter(id__in=listado_ids)

  # Se crea el formulario con el campo trabajo y el campo estado en funcion del modelo Postulación
  # En caso de ser un metodo POST:
  if request.method == 'POST':
    form = SeleccionarYAgregarAgenciadosForm(request.POST)
    # Se valida el formulario
    if form.is_valid():
      # Se obtienen el trabajo y el estado seleccionados
      rol = form.cleaned_data['rol']
      estado_id = form.cleaned_data['estado']
      postulaciones_ya_existentes=[]
      postulaciones_realizadas_con_exito=[]
      # Por cada agenciado:
      for agenciado in agenciados:
        try:
          # Si el agenciado ya se encuentra asignado al trabajo, se guarda en el listado de agenciados ya asignados
          postulacion = Postulacion.objects.get(agenciado=agenciado.id,rol=rol.id)
          postulaciones_ya_existentes+=[postulacion]
          continue
        except Postulacion.DoesNotExist:
          # Sino, se asigna el agenciado al trabajo como una Postulacion con el estado seleccionado en el formulario y se guarda el agenciado en el listado de agenciados asignado con éxito
          postulacion=Postulacion(agenciado=agenciado, rol=rol, estado=estado_id)
          postulacion.save()
          postulaciones_realizadas_con_exito+=[postulacion]

      # Se obtienen los IDs de las postulacion como un string de ids separadas por comas.
      ids_exito = str([ int(str(postulacion.id)) for postulacion in postulaciones_realizadas_con_exito ])[1:-1]
      ids_existentes = str([ int(str(postulacion.id)) for postulacion in postulaciones_ya_existentes ])[1:-1]

      # Se muestran los resultados de la operación
      return redirect('/trabajo/resultados/agregar/agenciados/seleccionados/a/rol/%s/%s/?ids_exito=%s&ids_existentes=%s' % (
        rol.id,
        estado_id,
        ids_exito, 
        ids_existentes,))

  # Sino
  else:
    form = SeleccionarYAgregarAgenciadosForm(initial={'ids': ids})

  return render(request,'trabajo/rol/agregar_agenciados_seleccionados.html',{'form':form, 'agenciados':agenciados})
Example #3
0
def postular(request):
    # Se obtiene el rol de la postulación
    rol_id = request.GET.get('rol_id')
    try:
        rol = Rol.objects.get(pk=rol_id, trabajo__publicado=True)
    except Rol.DoesNotExist:
        messages.error(
            request,
            _(u'O perfil do trabalho para o qual quer aplicar nao foi encontrado'
              ))
        return redirect('/trabajo/busquedas/')
    # Se verifica que el usuario tenga cargado su perfil
    try:
        request.user.agenciado
    except Agenciado.DoesNotExist:
        messages.info(
            request,
            _(u'Para aplicar ao perfil %(rol)s do trabalho <a href=%(url)s>%(trabajo)s</a> tem que completar seus dados de Agenciado'
              ) % {
                  'rol': rol.descripcion,
                  'url': '/trabajo/busquedas/?id=%s' % rol.trabajo.id,
                  'trabajo': rol.trabajo.titulo
              })
        return redirect('/agenciado/?next=%s' % request.get_full_path())
    # Se realiza la postulación
    try:
        postulacion = Postulacion.objects.get(agenciado=request.user.agenciado,
                                              rol=rol)
    except Postulacion.DoesNotExist:
        postulacion = Postulacion(agenciado=request.user.agenciado,
                                  rol=rol,
                                  estado='PA')
        postulacion.save()

    messages.success(
        request,
        _(u'Aplicação para o perfil "%s" realizada com sucesso.') %
        rol.descripcion)
    messages.info(
        request,
        _(u'A aplicação vai ser analizada por nosso equipe, muito obrigado por sua postulação.'
          ))
    return redirect('/trabajo/busquedas/?id=%s' % rol.trabajo.id)
Example #4
0
def agregar_agenciados_seleccionados_a_rol(request):

    # Se obtienen los agenciados asociados a los IDs
    if request.method == 'GET':
        ids = request.GET['ids']
    else:
        ids = request.POST['ids']
    listado_ids = ids.split(',')
    agenciados = Agenciado.objects.filter(id__in=listado_ids)

    # Se crea el formulario con el campo trabajo y el campo estado en funcion del modelo Postulación
    # En caso de ser un metodo POST:
    if request.method == 'POST':
        form = SeleccionarYAgregarAgenciadosForm(request.POST)
        # Se valida el formulario
        if form.is_valid():
            # Se obtienen el trabajo y el estado seleccionados
            rol = form.cleaned_data['rol']
            estado_id = form.cleaned_data['estado']
            postulaciones_ya_existentes = []
            postulaciones_realizadas_con_exito = []
            # Por cada agenciado:
            for agenciado in agenciados:
                try:
                    # Si el agenciado ya se encuentra asignado al trabajo, se guarda en el listado de agenciados ya asignados
                    postulacion = Postulacion.objects.get(
                        agenciado=agenciado.id, rol=rol.id)
                    postulaciones_ya_existentes += [postulacion]
                    continue
                except Postulacion.DoesNotExist:
                    # Sino, se asigna el agenciado al trabajo como una Postulacion con el estado seleccionado en el formulario y se guarda el agenciado en el listado de agenciados asignado con éxito
                    postulacion = Postulacion(agenciado=agenciado,
                                              rol=rol,
                                              estado=estado_id)
                    postulacion.save()
                    postulaciones_realizadas_con_exito += [postulacion]

            # Se obtienen los IDs de las postulacion como un string de ids separadas por comas.
            ids_exito = str([
                int(str(postulacion.id))
                for postulacion in postulaciones_realizadas_con_exito
            ])[1:-1]
            ids_existentes = str([
                int(str(postulacion.id))
                for postulacion in postulaciones_ya_existentes
            ])[1:-1]

            # Se muestran los resultados de la operación
            return redirect(
                '/trabajo/resultados/agregar/agenciados/seleccionados/a/rol/%s/%s/?ids_exito=%s&ids_existentes=%s'
                % (
                    rol.id,
                    estado_id,
                    ids_exito,
                    ids_existentes,
                ))

    # Sino
    else:
        form = SeleccionarYAgregarAgenciadosForm(initial={'ids': ids})

    return render(request, 'trabajo/rol/agregar_agenciados_seleccionados.html',
                  {
                      'form': form,
                      'agenciados': agenciados
                  })