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