示例#1
0
def editar_perfil(request):
    """
	Procesa el view y el form para que el usuario edite su perfil
	"""
    template = "perfiles/editar_perfil.html"
    perfil = obtener_perfil(request.user)
    avatar = obtener_avatar_large(perfil)

    if request.method == "POST":
        form = FormEditarPerfil(request.POST, instance=perfil)

        if form.is_valid():
            form.save()
            return HttpResponseRedirect(reverse('perfiles:perfil_propio'))

    else:
        if perfil.ciudad:
            ciudad_default = perfil.ciudad
        else:
            ciudad_default = obtenerquito()
        form = FormEditarPerfil(
            initial={
                'descripcion': perfil.descripcion,
                'ciudad': ciudad_default,
                'numero_telefono_contacto': perfil.numero_telefono_contacto
            })

    context = {'form': form, 'avatar': avatar}

    return render(request, template, context)
示例#2
0
def perfil_usuario_libros(request, username):
    """
	Muestra el perfil de un usuario tercero, enfocado en los libros disponibles
	"""
    template = "perfiles/perfil_usuario_libros.html"

    libros_perfil = {'tiene_libros_prestados': False, 'tiene_libros_disponibles': False}

    # redirigir a la pagina perfil_propio si es el caso
    user_obj = User.objects.get(username=username)
    if user_obj == request.user:
        return HttpResponseRedirect(reverse('perfiles:perfil_propio'))

    perfil = Perfil.objects.get(usuario__username=username)
    historial_libros = obtener_historial_libros(perfil)
    libros_prestados = libros_prestados_bcompartida = libros_disponibles = []

    if LibrosPrestados.objects.filter(perfil_receptor=perfil, fecha_devolucion=None).exists():
        libros_perfil['tiene_libros_prestados'] = True
        libros_prestados = LibrosPrestados.objects.filter(perfil_receptor=perfil, fecha_devolucion=None)

    if LibrosPrestadosBibliotecaCompartida.objects.filter(perfil_prestamo=perfil, fecha_devolucion=None).exists():
        libros_perfil['tiene_libros_prestados'] = True
        libros_prestados_bcompartida = LibrosPrestadosBibliotecaCompartida.objects.filter(perfil_prestamo=perfil,
                                                                                          fecha_devolucion=None)

    if LibrosDisponibles.objects.filter(perfil=perfil, disponible=True, prestado=False).exists():
        libros_perfil['tiene_libros_disponibles'] = True
        libros_disponibles = LibrosDisponibles.objects.filter(perfil=perfil, disponible=True, prestado=False)

    # Grupos Perfil
    grupos = None
    if UsuariosGrupo.objects.filter(perfil=perfil, activo=True).exists():
        usuarios_grupo_obj = UsuariosGrupo.objects.filter(perfil=perfil, activo=True).select_related('grupo')
        grupos = [ug.grupo for ug in usuarios_grupo_obj]

    avatar = obtener_avatar_large(perfil)

    # Si es admin de una biblioteca, poner link a la biblioteca
    bibliotecas_compartidas = None

    context = {'libros_prestados': libros_prestados, 'libros_prestados_bcompartida': libros_prestados_bcompartida,
               'libros_disponibles': libros_disponibles,
               'historial_libros': historial_libros, 'libros_perfil': libros_perfil, 'perfil': perfil, 'avatar': avatar,
               'grupos': grupos,
               'bibliotecas_compartidas': bibliotecas_compartidas}

    return render(request, template, context)
示例#3
0
def perfil_propio(request):
    """
	Muestra el perfil del usuario que está hecho login enfocado en la actividad
	"""
    template = "perfiles/perfil_propio.html"
    perfil = obtener_perfil(request.user)
    avatar = obtener_avatar_large(perfil)

    # Grupos Perfil
    grupos = None
    if UsuariosGrupo.objects.filter(perfil=perfil, activo=True).exists():
        usuarios_grupo_obj = UsuariosGrupo.objects.filter(perfil=perfil, activo=True).select_related('grupo')
        grupos = [ug.grupo for ug in usuarios_grupo_obj]

    # Usuario Leyendo
    actualmente_leyendo, libros_leidos_usuario = obtener_usuario_leyendo(perfil)

    libros_disponibles = LibrosDisponibles.objects.filter(perfil=perfil).select_related('libro')

    # autocomplete Usuario Leyendo
    titulos_autocomplete = {}
    autores_autocomplete = {}
    for l in libros_disponibles:
        titulos_autocomplete[l.libro.titulo] = (l.libro.id, l.libro.autor)

    # Muro, comentarios y actividades
    actividad = []
    actividad_0 = obtener_muro_perfil(perfil)
    for act in actividad_0:
        if act.__class__.__name__ == "CommentPerfil":
            actividad.append((act, "comment"))
        else:
            actividad.append((act, "notificacion"))

    for l in libros_disponibles:
        autores_autocomplete[l.libro.autor] = l.libro.id

    # Si es admin de una biblioteca, poner link a la biblioteca
    bibliotecas_compartidas = None

    context = {'avatar': avatar, 'grupos': grupos, 'actualmente_leyendo': actualmente_leyendo,
               'libros_leidos_usuario': libros_leidos_usuario, 'titulos_autocomplete': json.dumps(titulos_autocomplete),
               'autores_autocomplete': json.dumps(autores_autocomplete), 'actividad': actividad,
               'bibliotecas_compartidas': bibliotecas_compartidas}

    return render(request, template, context)
示例#4
0
def perfil_usuario(request, username):
    """
	Muestra el perfil de un usuario tercero, enfocado en las actividades
	"""
    template = "perfiles/perfil_usuario.html"
    perfil = Perfil.objects.get(usuario__username=username)

    # redirigir a la pagina perfil_propio si es el caso
    user_obj = User.objects.get(username=username)
    if user_obj == request.user:
        return HttpResponseRedirect(reverse('perfiles:perfil_propio'))

    # Muro, comentarios y actividades
    actividad = []
    actividad_0 = obtener_muro_perfil(perfil)
    for act in actividad_0:
        if act.__class__.__name__ == "CommentPerfil":
            actividad.append((act, "comment"))
        else:
            actividad.append((act, "notificacion"))

    # Grupos Perfil
    grupos = None
    if UsuariosGrupo.objects.filter(perfil=perfil, activo=True).exists():
        usuarios_grupo_obj = UsuariosGrupo.objects.filter(perfil=perfil, activo=True).select_related('grupo')
        grupos = [ug.grupo for ug in usuarios_grupo_obj]

    historial_libros = obtener_historial_libros(perfil)

    avatar = obtener_avatar_large(perfil)

    # Si es admin de una biblioteca, poner link a la biblioteca
    bibliotecas_compartidas = None

    context = {'historial_libros': historial_libros, 'perfil': perfil, 'avatar': avatar, 'actividad': actividad,
               'grupos': grupos, 'bibliotecas_compartidas': bibliotecas_compartidas}

    return render(request, template, context)
示例#5
0
def perfil_propio_libros(request):
    """
	Muestra el perfil del usuario loggeado. enfocado en los libros y notificaciones
	"""
    template = "perfiles/perfil_propio_libros.html"
    perfil = obtener_perfil(request.user)
    avatar = obtener_avatar_large(perfil)

    # Libros Perfil
    libros_perfil = {
        'tiene_requests_pendientes': False,
        'tiene_libros_prestados': False,
        'tiene_libros_pedidos': False,
        'tiene_libros_pedidos_bcompartida': False
    }

    libros_requests = libros_prestados = libros_prestados_bcompartida = libros_pedidos = libros_pedidos_bcompartida = []

    if LibrosRequest.objects.filter(perfil_envio=perfil, aceptado=False, eliminado=False).exists():
        libros_perfil['tiene_libros_pedidos'] = True
        libros_pedidos = LibrosRequest.objects.filter(perfil_envio=perfil, aceptado=False, eliminado=False)

    if LibrosRequestBibliotecaCompartida.objects.filter(perfil_envio=perfil, retirado=False, eliminado=False).exists():
        libros_perfil['tiene_libros_pedidos_bcompartida'] = True
        libros_pedidos_bcompartida = LibrosRequestBibliotecaCompartida.objects.filter(perfil_envio=perfil,
                                                                                      retirado=False,
                                                                                      eliminado=False).select_related(
            "libro_disponible")

    if LibrosRequest.objects.filter(perfil_recepcion=perfil, aceptado=False, eliminado=False).exists():
        libros_perfil['tiene_requests_pendientes'] = True
        libros_requests = LibrosRequest.objects.filter(perfil_recepcion=perfil, aceptado=False, eliminado=False)

    if LibrosPrestados.objects.filter(perfil_receptor=perfil, fecha_devolucion=None).exists():
        libros_perfil['tiene_libros_prestados'] = True
        libros_prestados = LibrosPrestados.objects.filter(perfil_receptor=perfil, fecha_devolucion=None)

    if LibrosPrestadosBibliotecaCompartida.objects.filter(perfil_prestamo=perfil, fecha_devolucion=None).exists():
        libros_perfil['tiene_libros_prestados'] = True
        libros_prestados_bcompartida = LibrosPrestadosBibliotecaCompartida.objects.filter(perfil_prestamo=perfil,
                                                                                          fecha_devolucion=None)

    # Grupos Perfil
    grupos = None
    if UsuariosGrupo.objects.filter(perfil=perfil, activo=True).exists():
        usuarios_grupo_obj = UsuariosGrupo.objects.filter(perfil=perfil, activo=True).select_related('grupo')
        grupos = [ug.grupo for ug in usuarios_grupo_obj]

    # Usuario Leyendo
    actualmente_leyendo, libros_leidos_usuario = obtener_usuario_leyendo(perfil)
    libros_disponibles = LibrosDisponibles.objects.filter(perfil=perfil).select_related('libro')

    # autocomplete Usuario Leyendo
    titulos_autocomplete = {}
    autores_autocomplete = {}
    for l in libros_disponibles:
        titulos_autocomplete[l.libro.titulo] = (l.libro.id, l.libro.autor)

    for l in libros_disponibles:
        autores_autocomplete[l.libro.autor] = l.libro.id

    # Request de entrar a grupos a los que el usuario es admin
    requests_entrar_grupo = None
    if UsuariosGrupo.objects.filter(perfil=perfil, es_admin=True).exists():
        usuarios_grupo_obj = UsuariosGrupo.objects.filter(perfil=perfil, es_admin=True).select_related('grupo')
        grupos = [x.grupo for x in usuarios_grupo_obj]

        requests_entrar_grupo = RequestInvitacion.objects.filter(aceptado=False, grupo__in=grupos)

    # Si es admin de una biblioteca, poner link a la biblioteca
    bibliotecas_compartidas = None

    context = {'libros_perfil': libros_perfil, 'libros_requests': libros_requests, 'libros_prestados': libros_prestados,
               'libros_pedidos': libros_pedidos, 'libros_prestados_bcompartida': libros_prestados_bcompartida,
               'libros_pedidos_bcompartida': libros_pedidos_bcompartida, 'libros_disponibles': libros_disponibles,
               'avatar': avatar, 'grupos': grupos, 'actualmente_leyendo': actualmente_leyendo,
               'libros_leidos_usuario': libros_leidos_usuario, 'requests_entrar_grupo': requests_entrar_grupo,
               'titulos_autocomplete': json.dumps(titulos_autocomplete),
               'autores_autocomplete': json.dumps(autores_autocomplete),
               'bibliotecas_compartidas': bibliotecas_compartidas}

    return render(request, template, context)