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)
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})
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)
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 })