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