Exemple #1
0
def validate_date(isbn):
    set_db()
    complete = Book.is_complete(isbn)
    if complete:
        book = Book.find_by_isbn(isbn)
        today = dt.datetime.now()#.strfstrftime("%Y-%m-%d")
        if book is None:
            caps = Book.allChapter(isbn)            
            for cap in caps:
                if cap['available_to'] is not None and today > cap['available_to']:
                    print("Se encontro un capitulo vencido")
                    return False
                if cap['available_from'] is not None and today < cap['available_from']:
                    print("Se encontro un capitulo no disponible")
                    return False
            print("Ningun Capitulo se vencio")
            return True
        else:
            if book['available_to'] is not None and today > book['available_to']:
                print("El libro esta vencido")
                return False
            if book['available_from'] is not None and today < book['available_from']:
                print("El libro aun no esta disponible")
                return False
            else:
                print("El libro no esta vencido")
                return True                                
    else:
        print("Aun no se cargo el libro")
        return False
Exemple #2
0
def date_book(isbn):
    set_db()
    if (Book.find_by_isbn(isbn) is None):
        Book.updateDate_allChap(isbn, request.form)
    else: 
        Book.updateDate_book(isbn, request.form)
    return redirect(url_for("book_menu"))
Exemple #3
0
def render_historial():
    set_db()        
    books = history()    
    areChapter = []
    availables = []
    today = dt.datetime.now()
    for book in books:
        if 'cap' in book['archivo']: #Forma de saber si es un cap, o el libro entero
            areChapter.append(True)
            isbn = book['isbn']
            num = int(re.search(r'\d+', book['archivo']).group(0))
            cap = Book.find_chapter_by_isbn(isbn, num)
            book['titulo'] = book['titulo'] + '\nCap ' + str(num)
            canRead = cap['available_from'] < today and ((cap['available_to'] is None) or cap['available_to'] > today)
            availables.append(canRead)
        else:
            areChapter.append(False)
            bok = Book.find_by_isbn(book['isbn'])
            canRead = validate_date(bok['isbn'])
            availables.append(canRead)

    i = int(request.args.get('i',0))
    Configuracion.db = get_db()
    pag=Configuracion.get_page_size()
    if (i == -1):
        i=0
    elif (i*pag >= len(books)):
        i = i - 1
    adm = "configuracion_usarInhabilitado" in session['permisos'] #Permiso que solo tiene un administrador
    return render_template('books/history.html', books=books, i=i, pag=pag, adm=adm, availables=availables, areChapter=areChapter)
Exemple #4
0
def open_cap_menu(isbn):
    set_db()
    capitulos = Book.allChapter(isbn)
    today = dt.datetime.now()
    noDisponibles = list(map(lambda cap: cap['available_from'] > today, capitulos))
    vencidos = list(map(lambda cap: ((cap['available_to'] is not None) and cap['available_to'] < today), capitulos))
    titulo = Book.find_meta_by_isbn(isbn)['titulo']
    return render_template('books/abrir_cap_menu.html',isbn=isbn, capitulos=capitulos, noDisponibles=noDisponibles, vencidos=vencidos, titulo=titulo)
Exemple #5
0
def open_cap(isbn, num):
    print("abro capitulo")
    set_db()
    historial = Book.get_last_read(session['perfil']) #ACA SERIA session['perfil']
    titulo = Book.find_meta_by_isbn(isbn)['titulo']
    nombre = titulo+"_cap_"+str(num)
    Book.record_open(nombre, session['perfil'], dt.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), isbn, titulo) #ACA SERIA session['perfil']
    return render_template('books/abrirlibro.html', titulo=titulo, nombre=nombre)
Exemple #6
0
def open_book(isbn): #aca abre el libro guardado
    print("abro")
    set_db()
    historial = Book.get_last_read(session['perfil']) #ACA SERIA session['perfil']
    print(historial)
    titulo = Book.find_meta_by_isbn(isbn)['titulo']
    nombre = titulo+"_Full"
    print(nombre)
    Book.record_open(nombre, session['perfil'], dt.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), isbn, titulo) #ACA SERIA session['perfil']
    return render_template('books/abrirlibro.html', titulo=titulo, nombre=nombre)
Exemple #7
0
def new_chapter(isbn):
    set_db()
    if not Book.is_complete(isbn):
        titulo = Book.find_meta_by_isbn(isbn)['titulo']
        today = dt.datetime.now().strftime("%Y-%m-%d")
        return render_template('books/new_chapter.html', isbn=isbn, titulo=titulo, today=today)
    else:
        if validate_book_isbn(isbn):
            flash("Ya se cargaron todos los capitulos")
        else:
            flash("Ya se cargó el libro")
    return redirect(url_for("book_menu"))
Exemple #8
0
def delete(isbn):
    set_db()
    filename = Book.find_by_isbn(isbn)['archivo']
    if filename is not None and filename in os.listdir(static_path+book_name):
        book_name = filename[:-9] #el nombre del archivo es el titulo + _full.pdf
        os.remove(static_path+book_name+'/'+filename)
        Book.mark_incomplete(isbn)
        Book.delete(isbn)
        flash("Archivo eliminado")
    else:
        flash("No hay un libro completo cargado")
    return redirect(url_for("book_menu"))
Exemple #9
0
def new(isbn):
    set_db()
    if validate_book_isbn(isbn):
        caps = Book.allChapter(isbn)
        if(caps==()):
            titulo = Book.find_meta_by_isbn(isbn)['titulo']
            today = dt.datetime.now().strftime("%Y-%m-%d")
            return render_template('books/new.html', isbn=isbn, titulo=titulo, today=today)
        else:
            flash("Ya se han cargado capitulos")
    else:
        flash("Ya hay un libro cargado")
    return redirect(url_for("book_menu"))
Exemple #10
0
def remove_meta(isbn):
    set_db()
    book_name = Book.find_meta_by_isbn(isbn)['titulo']
    if os.path.isdir(static_path+book_name):
        shutil.rmtree(static_path+book_name)
    Book.delete(isbn)
    Book.delete_all_chapter(isbn)
    Book.delete_records(isbn)
    Book.deleteMeta(isbn)
    #Va a haber que eliminar todas las rese;as, todo todo
    return redirect(url_for("book_menu"))
Exemple #11
0
def date_render_chap(isbn, num):
    print("cambiar fecha de capitulo")
    Book.db = get_db()
    book = Book.find_chapter_by_isbn(isbn, num)
    available_from = book['available_from'].strftime("%Y-%m-%d")
    available_to = book['available_to'].strftime("%Y-%m-%d") if book['available_to'] is not None else ''
    
    adm = "configuracion_usarInhabilitado" in session['permisos'] #Permiso que solo tiene un administrador
    return render_template('books/modificar_chap.html', adm=adm, isbn=isbn, num=num,available_from=available_from, available_to=available_to)
Exemple #12
0
def edit_meta(isbn):
    set_db()
    autores = Autor.all()
    editoriales = Editorial.all()
    generos = Genero.all()
    book=Book.find_meta_by_isbn(isbn)    
    book['autor'] = Autor.find_by_id(book['autor_id'])['nombre']
    book['editorial'] = Editorial.find_by_id(book['editorial_id'])['nombre']
    book['genero'] = Genero.find_by_id(book['genero_id'])['nombre']
    print(book)
    return render_template('books/edit_meta.html',book=book, isbn=isbn, autores=autores, editoriales=editoriales, generos=generos)
Exemple #13
0
def search_by():
    def filter_by(criteria, name, book):
        return name in book[criteria].lower()
    
    set_db()
    books = Book.allMeta()
    criteria = request.form.get('busqueda')
    name = request.form.get('nombre').lower()
    selected = list(filter(lambda book: filter_by(criteria, name, book), books))

    return selected
Exemple #14
0
def create_chapter(isbn):
    set_db()
    print("Crea cap")
    if not Book.is_complete(isbn):    
        if request.files: 
            archivo = request.files['archivo']
            book_name = Book.find_meta_by_isbn(isbn)['titulo']
            chapter_name = book_name + "_cap_"+str(request.form['num'])+".pdf"
            if not os.path.exists(static_path+book_name):
                os.mkdir(static_path+book_name)            
            if validate_chapter_isbn(isbn, request.form['num']):
                archivo.save(os.path.join(static_path+book_name, chapter_name))
                Book.create_chapter(request.form, chapter_name,isbn)
            else:
                flash("El capitulo  ya fue cargado")#+str(request.form['num']+
                return redirect(url_for("book_new_chapter", isbn=isbn))
        
        if request.form['completo']=="True":            
            Book.mark_complete(isbn)
            merger(book_name)
        
        flash("Capitulo cargado")
    else:
        flash("Ya se cargo todo el libro")
    print("Hizo todo")
    return redirect(url_for("book_menu"))
Exemple #15
0
def search():
    def filter_by(criteria, name, book):
        return name in book[criteria].lower()

    set_db()
    books = Book.allMeta()
    criteria = request.form.get('busqueda')
    name = request.form.get('nombre').lower()
    print(name)
    selected = list(filter(lambda book: filter_by(criteria, name, book), books))
    print(selected)
    venc = list(map(lambda meta: validate_date(meta['isbn']), selected))
    hasChapters = list(map(lambda meta: Book.allChapter(meta['isbn'])!=(), selected))
    i = int(request.args.get('i',0))
    Configuracion.db = get_db()
    pag=Configuracion.get_page_size()
    if (i == -1):
        i=0
    elif (i*pag >= len(books)):
        i = i - 1
    adm = "configuracion_usarInhabilitado" in session['permisos'] #Permiso que solo tiene un administrador
    return render_template('books/menu.html', books=selected, i=i, pag=pag, adm=adm, canReadBook=venc, hasChapters=hasChapters)
Exemple #16
0
def load_meta():
    set_db()
    
    autor = Autor.find_by_name(request.form['autor'])
    if autor == None:
        new_autor =request.form['autor']
        Autor.create({'nombre':new_autor})
        autor_id = Autor.find_by_name(new_autor)['id']
    else:
        autor_id = autor['id']

    editorial = Editorial.find_by_name(request.form['editorial'])

    if editorial == None:
        new_Editorial =request.form['editorial']
        Editorial.create({'nombre':new_Editorial})
        Editorial_id = Editorial.find_by_name(new_Editorial)['id']
    else:
        Editorial_id = editorial['id']

    genero = Genero.find_by_name(request.form['genero'])
    if genero == None:
        new_Genero =request.form['genero']
        Genero.create({'nombre':new_Genero})
        Genero_id = Genero.find_by_name(new_Genero)['id']
    else:
        Genero_id = genero['id']    
    if validate_meta_isbn(request.form['isbn']):
        
        Book.loadMeta(request.form, autor_id, Editorial_id, Genero_id)
        flash("Metadatos cargados")
    else:
        flash("Ya existe un libro con el mismo ISBN")
        return redirect(url_for("book_meta"))
    
    
    return redirect(url_for("book_menu"))
Exemple #17
0
def delete_chapter(isbn, num):
    set_db()
    filename = Book.find_chapter_by_isbn(isbn, num)['archivo']
    book_name = Book.find_meta_by_isbn(isbn)['titulo']
    if filename is not None and filename in os.listdir(static_path+book_name):
        os.remove(static_path+book_name+'/'+filename)
        if Book.is_complete(isbn):
            os.remove(static_path+book_name+'/'+book_name+'_Full.pdf')
            Book.mark_incomplete(isbn)
        Book.delete_chapter(isbn, num)
        flash("Archivo eliminado")
    else:
        flash("Algo raro paso")
    return redirect(url_for("book_menu"))
Exemple #18
0
def create(isbn): #Crea / Guarda un archivo de libro
    set_db()
    if validate_book_isbn(isbn) and not Book.is_complete(isbn):    
        if request.files: 
            archivo = request.files['archivo']
            book_name = Book.find_meta_by_isbn(isbn)['titulo']  
            if not os.path.exists(static_path+book_name):          
                os.mkdir(static_path+book_name)        
            archivo.save(os.path.join(static_path+book_name, book_name+"_Full.pdf"))
        Book.create(request.form, book_name+"_Full.pdf",isbn)
        Book.mark_complete(isbn)
        print(Book.is_complete(isbn))
        flash("Libro cargado")
    else:
        flash("Ya existe un libro con el mismo ISBN")
    return redirect(url_for("book_menu"))
Exemple #19
0
def render_menu():
    set_db()    
    book_for={}
    book_type = request.args.get('type','all')    
    book_for['all'] = Book.allMeta
    book_for['search_by'] = search_by if request.form.get('nombre') is not None else Book.allMeta
    book_for['history'] = history
    books = book_for[book_type]()
    venc = list(map(lambda meta: validate_date(meta['isbn']), books))
    hasChapters = list(map(lambda meta: Book.allChapter(meta['isbn'])!=(), books))
    print("Lista de tiene capitulos")
    print(hasChapters)

    i = int(request.args.get('i',0))
    Configuracion.db = get_db()
    pag=Configuracion.get_page_size()
    if (i == -1):
        i=0
    elif (i*pag >= len(books)):
        i = i - 1
    adm = "configuracion_usarInhabilitado" in session['permisos'] #Permiso que solo tiene un administrador
    return render_template('books/menu.html', books=books, i=i, pag=pag, adm=adm, canReadBook=venc, hasChapters=hasChapters)
Exemple #20
0
def render_delete_menu(isbn):
    set_db()
    chaps = Book.allChapter(isbn)
    return render_template('books/eliminar_menu.html', isbn=isbn, capitulos=chaps)
Exemple #21
0
def validate_chapter_isbn(isbn, num):
    book = Book.find_chapter_by_isbn(isbn, num)
    return book == None
Exemple #22
0
def validate_book_isbn(isbn):
    book = Book.find_by_isbn(isbn)
    return book == None
Exemple #23
0
def validate_meta_isbn(isbn):
    book = Book.find_meta_by_isbn(isbn)
    return book == None
Exemple #24
0
def open_any(isbn, name):
    Book.db = get_db()
    titulo = Book.find_meta_by_isbn(isbn)['titulo']
    Book.record_open(name, session['perfil'], dt.datetime.now().strftime("%Y-%m-%d %H:%M:%S"), isbn, titulo) #ACA SERIA session['perfil'])
    return render_template('books/abrirlibro.html', titulo=titulo, nombre=name)
Exemple #25
0
def load_edit_meta(isbn):
    set_db()
    
    book = Book.find_meta_by_isbn(isbn)
    
    book_data = {}
    
    book_data['titulo'] = request.form.get('titulo') if (request.form.get('titulo') != '') else book['titulo']
    book_data['sinopsis'] = request.form.get('sinopsis') if (request.form.get('sinopsis') != '') else book['sinopsis']
    if request.form.get('autor') != '':
        print("se carga lo ingresado")
        autor = Autor.find_by_name(request.form['autor'])
        if autor == None:
            new_autor =request.form['autor']
            Autor.create({'nombre':new_autor})
            autor_id = Autor.find_by_name(new_autor)['id']
        else:
            autor_id = autor['id']
    else:
        print("Se carga lo previo")
        autor_id = book['autor_id']

    if request.form.get('editorial') != '':
        print("se carga lo ingresado")
        editorial = Editorial.find_by_name(request.form['editorial'])
        if editorial == None:
            new_Editorial =request.form['editorial']
            Editorial.create({'nombre':new_Editorial})
            Editorial_id = Editorial.find_by_name(new_Editorial)['id']
        else:
            Editorial_id = editorial['id']
    else:
        print("Se carga lo previo")
        Editorial_id = book['editorial_id']

    if request.form.get('genero') != '':
        print("se carga lo previo")
        genero = Genero.find_by_name(request.form['genero'])
        if genero == None:
            new_Genero =request.form['genero']
            Genero.create({'nombre':new_Genero})
            Genero_id = Genero.find_by_name(new_Genero)['id']
        else:            
            Genero_id = genero['id']
    else:
        print("Se carga lo previo")
        Genero_id = book['genero_id']    
    modified = False
    for key in request.form.keys():
        if (request.form.get(key) != ''):
            modified = True
            break    
    if request.form['completo']=="True":    
            if Book.find_by_isbn(isbn) is None:
                Book.mark_complete(isbn)
                merger(book_data['titulo'])
    Book.updateMeta(book_data, isbn, autor_id, Editorial_id, Genero_id)
    if modified:
        flash("Datos modificados correctamente")
    else: 
        flash("No se Ingresó ningún dato, no se modifcó el metadato")
    
    return redirect(url_for("book_menu"))
Exemple #26
0
def date_chap(isbn, num):
    set_db()
    Book.updateDate_oneChap(isbn, num, request.form)
    return redirect(url_for("book_menu"))
Exemple #27
0
def history():
    historial = Book.get_last_read(session['perfil']) #ACA SERIA session['perfil']    
    return historial if historial is not None else []
Exemple #28
0
def new_asociado(isbn):
    set_db()
    libro = Book.find_meta_by_isbn(isbn)
    user_id= session['usuario_id']
    return render_template('trailers/newAsociado.html', libro=libro, isbn=isbn, user_id=user_id)
Exemple #29
0
def date_menu(isbn):
    set_db()
    capitulos = Book.allChapter(isbn)
    libro = Book.find_by_isbn(isbn)    
    return render_template('books/modificar_menu.html', isbn=isbn, capitulos=capitulos, libro=libro)