示例#1
0
def crear_usuario(request):

    #PERMISOS
    if request.user.groups.filter(name__in=['Mantenedor']).exists():
        return HttpResponseRedirect(reverse("home"))
    elif request.user.groups.filter(name__in=['Profesional']).exists():
        return HttpResponseRedirect(reverse("home"))
    elif request.user.groups.filter(name__in=['Asistente Social']).exists():
        return HttpResponseRedirect(reverse("home"))
    elif request.user.groups.filter(name__in=['Administrativo']).exists():
        return HttpResponseRedirect(reverse("home"))
    else:

        template = "crear_usuario.html"

        if request.method == 'GET':
            areas = Area.objects.all()
            especialidades = Especialidad.objects.all()
            return render(request, template, {
                "areas": areas,
                "especialidades": especialidades
            })

        if request.method == 'POST':
            try:

                nombre = request.POST.get('inputNombre').upper()
                apellido_paterno = request.POST.get(
                    'inputApellidoPaterno').upper()
                apellido_materno = request.POST.get(
                    'inputApellidoMaterno').upper()
                txt_rut = request.POST.get('inputRut')
                rut = txt_rut.replace(".", "")
                tipoUsuario = request.POST.get('inputTipoUsuario')
                correo = request.POST.get('inputCorreo')
                especialidadesElegidas = request.POST.getlist(
                    'inputEspecialidad')
                apellidos = apellido_paterno.upper(
                ) + " " + apellido_materno.upper()
                #print (especialidadesElegidas)

                usuarioExiste = Usuario.objects.filter(rut=rut)

                if not usuarioExiste:

                    usuario = Usuario()
                    usuario.nombre = nombre.upper()
                    usuario.apellidos = apellidos
                    usuario.rut = rut

                    if tipoUsuario == "1":
                        usuario.profesional = True
                    elif tipoUsuario == "2":
                        usuario.administrativo = True
                    elif tipoUsuario == "3":
                        usuario.mantenedor = True
                    elif tipoUsuario == "4":
                        usuario.asistente_social = True
                    elif tipoUsuario == "5":
                        usuario.coordinador = True

                    usuario.user = crear_user(nombre, apellidos, correo,
                                              tipoUsuario, rut)
                    usuario.save()

                    if especialidadesElegidas:
                        for e in especialidadesElegidas:
                            obj = UsuarioEspecialidad()
                            especialidad = Especialidad.objects.get(id=e)
                            obj.especialidad = especialidad
                            obj.usuario = usuario
                            obj.save()

                    messages.success(request, '¡Usuario agregado con éxito!')
                    id = usuario.id
                    del usuario
                    return HttpResponseRedirect(
                        reverse("usuarios:verUsuario", args=[id]))

                else:
                    usuario = usuarioExiste[0]
                    usuario.user = crear_user(nombre, apellidos, correo,
                                              tipoUsuario, rut)
                    messages.error(request, '¡Este usuario ya existe!')
                    return HttpResponseRedirect(
                        reverse("usuarios:crear_usuario"))

            except Exception as e:
                messages.error(request,
                               "No fue posible crear usuario. " + repr(e))
                return HttpResponseRedirect(reverse("usuarios:crear_usuario"))