Пример #1
0
def libros_usuario_ajax(request):
    """
	Crea un UsuarioLeyendo object y señala la fecha actual como inicio
	"""
    if request.is_ajax():
        perfil = obtener_perfil(request.user)
        titulos_autocomplete, autores_autocomplete = obtener_libros_perfil(perfil)
        context = {'titulos_autocomplete': json.dumps(titulos_autocomplete),
                   'autores_autocomplete': json.dumps(autores_autocomplete)}
        return HttpResponse(context, status=200)
    else:
        return HttpResponse(status=400)
Пример #2
0
def compartir_libro_grupo(request, id_grupo):
    # No usa un Django form. Utiliza client side validation y en el server utiliza bleach
    template = "grupos/compartir_con_grupo.html"

    grupo = Grupo.objects.get(id=id_grupo)
    perfil_obj = obtener_perfil(request.user)

    if request.method == "POST":

        tipo = request.POST.get("tipo_libro", "")

        if tipo == "existente":
            # el form envia el id de un libro disponible existente
            id_libro_disp = request.POST.get("libro_disp_id", "")

            if LibrosDisponibles.objects.filter(id=int(id_libro_disp)).exists():
                libro_disponible = LibrosDisponibles.objects.get(id=int(id_libro_disp))
            else:
                # !! Llamar a una función que cree un nuevo libro como si fuera c_nuevo
                return HttpResponse(staus=400)

            # revisa si existe un LibroDisponibleGrupo object con ese libro disponible y el grupo
            if LibroDisponibleGrupo.objects.filter(grupo=grupo, libro_disponible=libro_disponible).exists():
                libro_disponible_grupo_obj = LibroDisponibleGrupo.objects.get(grupo=grupo,
                                                                              libro_disponible=libro_disponible)
                if not libro_disponible_grupo_obj.activo:
                    libro_disponible_grupo_obj.activo = True
                    libro_disponible_grupo_obj.save()

                    # Crear notificacion libro compartido con grupo !! usar nueva funcion
                    Notificacion.objects.compartio_libro_grupo(perfil_obj, libro_disponible.libro, grupo)

                    return redirect('grupos:main_grupo_libros', id_grupo=grupo.id, queryset="titulo")
                else:
                    return redirect('grupos:main_grupo_libros', id_grupo=grupo.id, queryset="titulo")
            else:
                LibroDisponibleGrupo.objects.create(grupo=grupo, libro_disponible=libro_disponible)

                # Crear notificacion libro compartido con grupo !! usar nueva funcion
                Notificacion.objects.compartio_libro_grupo(perfil_obj, libro_disponible.libro, grupo)

                return redirect('grupos:main_grupo_libros', id_grupo=grupo.id, queryset="titulo")

        elif tipo == "nuevo":
            # el form envia el titulo y el autor para crear un nuevo libro
            titulo = bleach.clean(request.POST.get("titulo", ""))
            autor = bleach.clean(request.POST.get("autor", ""))
            descripcion = bleach.clean(request.POST.get("descripcion", ""))

            if titulo and autor:
                # crea un nuevo libro
                nuevo_libro = Libro.objects.create(titulo=titulo, autor=autor, descripcion=descripcion)

                # crea un Libro Disponible object
                libro_disponible_obj = LibrosDisponibles.objects.create(libro=nuevo_libro, perfil=perfil_obj,
                                                                        abierto_comunidad=False,
                                                                        ciudad=perfil_obj.ciudad)

                # crea un LibroDisponibleGrupo object
                LibroDisponibleGrupo.objects.create(libro_disponible=libro_disponible_obj, grupo=grupo)

                # crear notificacion libro compartido con grupo
                Notificacion.objects.compartio_libro_grupo(perfil_obj, libro_disponible_obj.libro, grupo)

                return redirect('grupos:main_grupo_libros', id_grupo=grupo.id, queryset="titulo")

            else:
                return HttpResponse("Falta titulo o autor", status=400)

        else:
            return HttpResponse("Formulario mal llenado", status=400)

        return HttpResponse("prueba form")

    else:
        titulos_autocomplete, autores_autocomplete = obtener_libros_perfil(perfil_obj)

    context = {'grupo': grupo, 'titulos_autocomplete': json.dumps(titulos_autocomplete),
               'autores_autocomplete': json.dumps(autores_autocomplete)}

    return render(request, template, context)