Esempio n. 1
0
def add_book_admin(book_id):
    """ Добавление книг на склад """
    # Ошибка, если пользователь не администратор или не зарегистрирован
    if 'username' not in session:
        return render_template('error.html', loged=False, title='Ошибка')
    if not UsersModel(db.get_connection()).is_admin(session['username']):
        return render_template('error.html', loged=False, title='Ошибка')
    # Изменение числа книг на складе
    book = BooksModel(db.get_connection()).get(book_id)
    BooksModel(db.get_connection()).add_book(book_id, book[7])
    # Редирект на страницу книги
    return redirect('book/' + str(book_id))
Esempio n. 2
0
def books_page():
    """ Страница со всеми книгами """
    books = BooksModel(db.get_connection()).get_all()
    authors = AuthorsModel(db.get_connection()).get_all()
    # страница для не авторизованного пользователя
    if 'username' not in session:
        return render_template('books_page.html',
                               books=books,
                               title="Книги",
                               loged=False,
                               admin=False,
                               authors=authors)
    # страница для администратора
    if UsersModel(db.get_connection()).is_admin(session['username']):
        return render_template('books_page.html',
                               books=books,
                               title="Книги",
                               loged=True,
                               username=session['username'],
                               admin=True,
                               authors=authors)
    # страница для авторизованного пользователя
    return render_template('books_page.html',
                           books=books,
                           title="Книги",
                           loged=True,
                           username=session['username'],
                           authors=authors)
Esempio n. 3
0
def author_page(author_id):
    """ Вывод информации о писателе """
    # проверка, авторизован ли пользователь
    if 'username' not in session:
        loged = False
    else:
        loged = True
    # ошибка, если такого автора нет в базе
    if not AuthorsModel(db.get_connection()).exists_id(str(author_id)):
        return render_template('error.html', loged=loged, title='Ошибка')
    books = BooksModel(db.get_connection())
    book = []
    author = AuthorsModel(db.get_connection()).get(author_id)
    books_author = author[4].split('//')
    for item in books_author:
        book.append(books.get_by_name(str(item)))
    # для авторизованного пользователя показывается список книг автора
    # для не авторизованного пользователя показывается только страница автора
    # страница для администратора
    if UsersModel(db.get_connection()).is_admin(session['username']):
        return render_template('author_info.html',
                               title=author[1],
                               loged=loged,
                               author=author,
                               book=book,
                               admin=True)
    return render_template('author_info.html',
                           title=author[1],
                           loged=loged,
                           author=author,
                           book=book,
                           admin=False)
Esempio n. 4
0
def comment_book(book_id):
    """ Создание комментариев к книгам"""
    # если пользователь не авторизован, кидаем его на страницу входа
    if 'username' not in session:
        return redirect('login')
    form = AddCommentForm()
    book = BooksModel(db.get_connection()).get(book_id)
    if not book:
        return render_template('error.html', loged=True, title='Ошибка')
    if form.validate_on_submit():
        # создать комментарий
        comment = Comment(book_id=book_id,
                          username=session['username'],
                          name=form.name.data,
                          text=form.text.data,
                          date=form.date.data,
                          book_name=book[1])
        db_comments.session.add(comment)
        db_comments.session.commit()
        # редирект на страницу книги
        return redirect('/book/' + str(book_id))
    return render_template("add_comment.html",
                           title='Добавить рецензию',
                           form=form,
                           loged=True)
Esempio n. 5
0
def index():
    """ Главная страница """
    # загружаем списки книг и авторов
    books = BooksModel(db.get_connection()).get_all()
    authors = AuthorsModel(db.get_connection()).get_all()
    # страница для навторизованного пользователя
    if 'username' not in session:
        return render_template('main_page.html',
                               books=books,
                               title="MyBookShelf",
                               loged=False,
                               admin=False,
                               authors=authors)
    # страница для администратора
    if UsersModel(db.get_connection()).is_admin(session['username']):
        return render_template('main_page.html',
                               books=books,
                               title="MyBookShelf",
                               loged=True,
                               username=session['username'],
                               admin=True,
                               authors=authors)
    # страница для авторизованного пользователя
    return render_template('main_page.html',
                           books=books,
                           title="MyBookShelf",
                           loged=True,
                           username=session['username'],
                           authors=authors,
                           admin=False)
Esempio n. 6
0
def shopping():
    """ Вывод интерфейса корзины """
    if 'username' not in session:
        return render_template('error.html', loged=False, title='Ошибка')
    else:
        loged = True
    user = UsersModel(db.get_connection()).get_by_name(session['username'])

    books = BooksModel(db.get_connection())
    all_books = {}
    # наполнение корзины покупками, если она не пустая
    if user[5]:
        for item in user[5].split('//'):
            if books.get(item) in all_books:
                all_books[books.get(item)] += 1
            else:
                all_books[books.get(item)] = 1
        return render_template('shopping.html',
                               username=session['username'],
                               title='Моя корзина',
                               loged=loged,
                               user=user,
                               books=all_books,
                               alert=0,
                               disabled=False)
    else:
        # отображение пустой корзины
        return render_template('shopping.html',
                               username=session['username'],
                               title='Моя корзина',
                               loged=loged,
                               user=user,
                               books={},
                               disabled=True)
Esempio n. 7
0
def add_author():
    """ Добавление автора """
    # Ошибка, если пользователь не администратор или не зарегистрирован
    if 'username' not in session:
        return render_template('error.html', loged=False, title='Ошибка')
    if not UsersModel(db.get_connection()).is_admin(session['username']):
        return render_template('error.html', loged=False, title='Ошибка')
    books = BooksModel(db.get_connection()).get_all()
    form = AddAuthorForm()
    if form.validate_on_submit():
        # создать автора
        authors = AuthorsModel(db.get_connection())
        book_list = ''
        for item in books:
            if item[2] == form.name.data:
                book_list += item[1] + '//'
        book_list.rstrip('//')
        if form.picture.data is not None:
            filename = secure_filename(form.picture.data.filename)
            server_file = 'static/img/' + filename
            form.pictures.data.save(server_file)
        authors.insert(name=form.name.data,
                       picture=filename,
                       bio=form.bio.data,
                       books=book_list)
        # редирект на главную страницу
        return redirect('index')
    return render_template("add_author.html",
                           title='Добавить автора',
                           form=form,
                           loged=True)
Esempio n. 8
0
def del_fruit(book_id):
    if 'username' not in session:
        return redirect('/login')
    if session['username'] == 'admin':
        car = BooksModel(db.get_connection())
        car.delete(book_id)
        return redirect(url_for('book_admin'))
    else:
        return redirect(url_for('index'))
Esempio n. 9
0
def search_price():
    """
    Запрос автомобилей, удовлетворяющих определенной цене
    """
    form = SearchPriceForm()
    if form.validate_on_submit():
        # получить все машины по определенной цене
        books = BooksModel(db.get_connection()).get_by_price(form.start_price.data, form.end_price.data)
        # редирект на страницу с результатами
        return render_template('book_user.html', username=session['username'], title='Просмотр базы', books=books)
    return render_template("search_price.html", title='Подбор по цене', form=form)
Esempio n. 10
0
def del_library(library_id):
    if 'username' not in session:
        return redirect('/login')
    if session['username'] == 'admin':
        library = LibraryModel(db.get_connection())
        library.delete(library_id)
        books = BooksModel(db.get_connection())
        books.get_delete_by_library_id(library_id)
        return redirect(url_for('library_admin'))
    else:
        return redirect(url_for('index'))
Esempio n. 11
0
def add_book():
    """ Добавление книги """
    # Ошибка, если пользователь не администратор или не зарегистрирован
    if 'username' not in session:
        return render_template('error.html', loged=False, title='Ошибка')
    if not UsersModel(db.get_connection()).is_admin(session['username']):
        return render_template('error.html', loged=False, title='Ошибка')
    form = AddBookForm()
    if form.validate_on_submit():
        # создать книгу
        books = BooksModel(db.get_connection())
        f = None
        all_books = BooksModel(db.get_connection()).get_all()
        for i in range(len(all_books)):
            if all_books[i][2] == form.author.data:
                f = all_books[i][0]
        if f:
            # добавить книгу в список произведений автора
            author = AuthorsModel(db.get_connection()).get_by_name(
                form.author.data)
            book_list = author[4] + '//' + form.name.data
            AuthorsModel(db.get_connection()).add_book(book_list, author[0])
        if form.pictures.data is not None:
            filename = secure_filename(form.pictures.data.filename)
            server_file = 'static/img/' + filename
            form.pictures.data.save(server_file)
        books.insert(name=form.name.data,
                     author=form.author.data,
                     year=form.year.data,
                     pages=form.pages.data,
                     pictures=filename,
                     bio=form.bio.data,
                     stock=form.stock.data,
                     price=form.price.data)
        # редирект на главную страницу
        return redirect('index')
    return render_template("add_book.html",
                           title='Добавить книгу',
                           form=form,
                           loged=True)
Esempio n. 12
0
def search_dealer():
    """
    Запрос автомобилей, продающихся в определенном дилерском центре
    """
    form = SearchDealerForm()
    available_dealers = [(i[0], i[1]) for i in DealersModel(db.get_connection()).get_all()]
    form.dealer_id.choices = available_dealers
    if form.validate_on_submit():
        #
        books = BooksModel(db.get_connection()).get_by_dealer(form.dealer_id.data)
        # редирект на главную страницу
        return render_template('book_user.html', username=session['username'], title='Просмотр базы', books=books)
    return render_template("search_dealer.html", title='Подбор по цене', form=form)
Esempio n. 13
0
def del_book(book_id):
    """
    Удаление автомобиля
    """
    # если пользователь не авторизован, кидаем его на страницу входа
    if 'username' not in session:
        return redirect('login')
    # если админ, то его на свою страницу
    if session['username'] != 'admin':
        return redirect('index')
    book = BooksModel(db.get_connection())
    book.delete(book_id)
    return redirect("/index")
Esempio n. 14
0
def book_admin():
    if 'username' not in session:
        return redirect('/login')

    if session['username'] != 'admin':
        flash('Доступ запрещен')
        return redirect('/index')

    cars = BooksModel(db.get_connection()).get_all()
    return render_template('book_admin.html',
                           username=session['username'],
                           title='Просмотр автомобилей',
                           cars=cars)
Esempio n. 15
0
def index():
    if 'username' not in session:
        return redirect('/login')
    # если админ, то его на свою страницу
    if session['username'] == 'admin':
        return render_template('index_admin.html',
                               username=session['username'])
    # если обычный пользователь, то его на свою
    cars = BooksModel(db.get_connection()).get_all()
    return render_template('book_user.html',
                           username=session['username'],
                           title='Просмотр базы',
                           cars=cars)
Esempio n. 16
0
def book(book_id):

    if 'username' not in session:
        return redirect('/login')
    '''if session['username'] != 'admin':
        return redirect(url_for('index'))'''

    car = BooksModel(db.get_connection()).get(book_id)
    dealer = LibraryModel(db.get_connection()).get(car[4])
    return render_template('book_info.html',
                           username=session['username'],
                           title='Просмотр автомобиля',
                           car=car,
                           dealer=dealer[1])
Esempio n. 17
0
def search():
    """ Поиск писателей и произведений по сайту """
    if 'username' not in session:
        loged = False
    else:
        loged = True
    form = SearchForm()
    if form.validate_on_submit():
        exists = BooksModel(db.get_connection()).exists(form.search.data)
        # результат, если есть книга с таким названием
        if exists[0]:
            result = BooksModel(db.get_connection()).get(exists[1])
            return render_template("search.html",
                                   title='Поиск',
                                   form=form,
                                   loged=loged,
                                   result=(result, 1))
        exists = AuthorsModel(db.get_connection()).exists(form.search.data)
        # результат, если есть автор с таким именем
        if exists:
            result = AuthorsModel(db.get_connection()).get(exists)
            return render_template("search.html",
                                   title='Поиск',
                                   form=form,
                                   loged=loged,
                                   result=(result, 2))
        # результат, если по запросу ничего не найдено
        return render_template("search.html",
                               title='Поиск',
                               form=form,
                               loged=loged,
                               result='error')
    return render_template("search.html",
                           title='Поиск',
                           form=form,
                           loged=loged,
                           result=False)
Esempio n. 18
0
def index():
    """
    Главная страница
    :return:
    Основная страница сайта, либо редирект на авторизацю
    """
    # если пользователь не авторизован, кидаем его на страницу входа
    if 'username' not in session:
        return redirect('/login')
    # если админ, то его на свою страницу
    if session['username'] == 'admin':
        return render_template('index_admin.html', username=session['username'])
    # если обычный пользователь, то его на свою
    books = BooksModel(db.get_connection()).get_all()
    return render_template('book_user.html', username=session['username'], title='Просмотр базы', books=books)
Esempio n. 19
0
def book(book_id, alert=0):
    """ Вывод информации о книге """
    if 'username' not in session:
        loged = False
    else:
        loged = True
    # ошибка, если такой книги нет в базе
    if not BooksModel(db.get_connection()).exists_id(book_id):
        return render_template('error.html', loged=loged, title='Ошибка')
    book = BooksModel(db.get_connection()).get(book_id)
    # вывод комментариев для авторизованного пользователя
    if loged:
        all_comments = []
        comments = Comment.query.filter_by(book_id=book_id).all()
        for comment in comments:
            all_comments.append(str(comment).strip('<> ').split(' !! '))
        author = AuthorsModel(db.get_connection()).exists(book[2])
        return render_template('book_info.html',
                               username=session['username'],
                               title=book[1],
                               loged=loged,
                               book=book,
                               alert=alert,
                               author=author,
                               comments=all_comments,
                               admin=UsersModel(db.get_connection()).is_admin(
                                   session['username']))
    # вывод без возможности просматривать комменатрии для не авторизованного пользователя
    author = AuthorsModel(db.get_connection()).exists(book[2])
    return render_template('book_info.html',
                           title=book[1],
                           loged=loged,
                           book=book,
                           alert=alert,
                           admin=False,
                           author=author)
Esempio n. 20
0
def search_price():

    form = SearchPriceForm()
    if form.validate_on_submit():

        cars = BooksModel(db.get_connection()).get_by_price(
            form.start_price.data, form.end_price.data)

        return render_template('book_user.html',
                               username=session['username'],
                               title='Просмотр базы',
                               cars=cars)
    return render_template("search_price.html",
                           title='Подбор по цене',
                           form=form)
Esempio n. 21
0
def search_library():

    form = SearchDealerForm()
    available_dealers = [(i[0], i[1])
                         for i in LibraryModel(db.get_connection()).get_all()]
    form.library_id.choices = available_dealers
    if form.validate_on_submit():
        cars = BooksModel(db.get_connection()).get_by_dealer(
            form.library_id.data)
        return render_template('book_user.html',
                               username=session['username'],
                               title='Просмотр базы',
                               cars=cars)
    return render_template("search_library.html",
                           title='Подбор по цене',
                           form=form)
Esempio n. 22
0
def add_book_shopping(book_id):
    """ Добавление товара в корзину из интерфейса корзины """
    # ошибка, если пользователь не авторизован
    if 'username' not in session:
        return render_template('error.html', loged=False, title='Ошибка')
    user = UsersModel(db.get_connection()).get_by_name(session['username'])
    book = BooksModel(db.get_connection()).get(book_id)
    # изменение БД
    books = user[5] + '//' + str(book_id)
    num = 0
    for item in books.split('//'):
        if int(item) == book_id:
            num += 1
    if book[7] - num >= 0:
        UsersModel(db.get_connection()).add_book(user[0], books)
    return redirect('shopping')
Esempio n. 23
0
def buy_book(book_id):
    """ Добавление книги в корзину через интерфейс страницы книги """
    # если пользователь не авторизован, кидаем его на страницу входа
    if 'username' not in session:
        return redirect('login')
    user = UsersModel(db.get_connection()).get_by_name(session['username'])
    book = BooksModel(db.get_connection()).get(book_id)
    # изменение БД
    if user[5]:
        books = user[5] + '//' + str(book_id)
    else:
        books = str(book_id)
    num = 0
    for item in books.split('//'):
        if int(item) == book_id:
            num += 1
    all_comments = []
    comments = Comment.query.filter_by(book_id=book_id).all()
    for comment in comments:
        all_comments.append(str(comment).strip('<> ').split(' !! '))
    author = AuthorsModel(db.get_connection()).exists(book[2])
    # добавление книги в корзину, если она есть на складе
    if book[7] - num >= 0:
        UsersModel(db.get_connection()).add_book(user[0], books)
        return render_template('book_info.html',
                               username=session['username'],
                               title=book[1],
                               loged=True,
                               book=book,
                               alert=1,
                               author=author,
                               comments=all_comments,
                               admin=UsersModel(db.get_connection()).is_admin(
                                   session['username']))
    # вывод сообщения, если книги нет на складе
    else:
        return render_template('book_info.html',
                               username=session['username'],
                               title=book[1],
                               loged=True,
                               book=book,
                               alert=2,
                               author=author,
                               comments=all_comments,
                               admin=UsersModel(db.get_connection()).is_admin(
                                   session['username']))
Esempio n. 24
0
def book_admin():
    """
    Вывод всей информации об всех автомобилях
    :return:
    информация для авторизованного пользователя
    """
    # если пользователь не авторизован, кидаем его на страницу входа
    if 'username' not in session:
        return redirect('/login')
    # если админ, то его на свою страницу
    if session['username'] != 'admin':
        flash('Доступ запрещен')
        redirect('index')
    # если обычный пользователь, то его на свою
    books = BooksModel(db.get_connection()).get_all()
    return render_template('book_admin.html',
                           username=session['username'],
                           title='Просмотр книг',
                           books=books)
Esempio n. 25
0
def edit_author_page(author_id):
    """ Редактирование информации о писателе """
    # проверка, авторизован ли пользователь
    if 'username' not in session:
        loged = False
    else:
        loged = True
    # ошибка, если такого автора нет в базе
    if not AuthorsModel(db.get_connection()).exists_id(str(author_id)):
        return render_template('error.html', loged=loged, title='Ошибка')
    books = BooksModel(db.get_connection())
    book = []
    author = AuthorsModel(db.get_connection()).get(author_id)
    books_author = author[4].split('//')
    for item in books_author:
        book.append(books.get_by_name(str(item)))
    if UsersModel(db.get_connection()).is_admin(session['username']):
        form = EditAuthorForm()
        if form.validate_on_submit():
            if form.bio.data:
                AuthorsModel(db.get_connection()).edit_bio(
                    author_id, form.bio.data)
            if form.picture.data is not None:
                filename = secure_filename(form.picture.data.filename)
                server_file = 'static/img/' + filename
                form.picture.data.save(server_file)
                AuthorsModel(db.get_connection()).edit_picture(
                    author_id, filename)
            return redirect('author/' + str(author_id))

        return render_template('edit_author.html',
                               title='Редактирование',
                               loged=loged,
                               admin=True,
                               form=form)

    return render_template('author_info.html',
                           title=author[1],
                           loged=loged,
                           author=author,
                           book=book,
                           admin=False)
Esempio n. 26
0
def order():
    """ Обработка заказа """
    if 'username' not in session:
        return render_template('error.html', loged=False, title='Ошибка')
    user = UsersModel(db.get_connection()).get_by_name(session['username'])
    UsersModel(db.get_connection()).add_book(user[0], '')
    books = BooksModel(db.get_connection())
    # изменение БД
    if user[5]:
        for item in user[5].split('//'):
            books.buy_book(int(item), books.get(int(item))[7])
    user = UsersModel(db.get_connection()).get_by_name(session['username'])
    return render_template('shopping.html',
                           username=session['username'],
                           title='Моя корзина',
                           loged=True,
                           user=user,
                           books='',
                           alert=1,
                           disabled=True)
Esempio n. 27
0
def book(book_id):
    """
    Вывод всей информации об автомобиле
    :return:
    информация для авторизованного пользователя
    """
    # если пользователь не авторизован, кидаем его на страницу входа
    if 'username' not in session:
        return redirect('/login')
    # если не админ, то его на главную страницу
    '''if session['username'] != 'admin':
        return redirect(url_for('index'))'''
    # иначе выдаем информацию
    book = BooksModel(db.get_connection()).get(book_id)
    dealer = DealersModel(db.get_connection()).get(book[5])
    return render_template('book_info.html',
                           username=session['username'],
                           title='Просмотр книг',
                           book=book,
                           dealer=dealer[1])
Esempio n. 28
0
def add_book():

    if 'username' not in session:
        return redirect('login')

    if session['username'] != 'admin':
        return redirect('index')
    form = AddbookForm()
    available_library = [(i[0], i[1])
                         for i in LibraryModel(db.get_connection()).get_all()]
    form.library_id.choices = available_library
    if form.validate_on_submit():

        cars = BooksModel(db.get_connection())
        cars.insert(name=form.name.data,
                    price=form.price.data,
                    info=form.info.data,
                    library=form.library_id.data)

        return redirect(url_for('book_admin'))
    return render_template("add_book.html",
                           title='Добавление книги',
                           form=form)
Esempio n. 29
0
def delete_book_admin(book_id):
    """ Удаление существующих книг """
    # Ошибка, если пользователь не администратор или не зарегистрирован
    if 'username' not in session:
        return render_template('error.html', loged=False, title='Ошибка')
    if not UsersModel(db.get_connection()).is_admin(session['username']):
        return render_template('error.html', loged=False, title='Ошибка')
    BooksModel(db.get_connection()).delete(book_id)
    # Удаление книги из всех корзин пользователей
    users = UsersModel(db.get_connection()).get_all()
    for item in users:
        books = item[5].split('//')
        if str(book_id) in books:
            k = []
            for i in range(len(books)):
                if books[i] == str(book_id):
                    k.append(i)
            for l in k:
                del books[l]
            '//'.join(books)
            UsersModel(db.get_connection()).add_book(item[0], books)
    # Редирект на главную страницу
    return redirect('index')
Esempio n. 30
0
def books_page_name():
    """ Сортировка по названию"""
    books = BooksModel(db.get_connection()).get_all()
    authors = AuthorsModel(db.get_connection()).get_all()
    books = sorted(books, key=lambda x: x[1])
    b = []
    p = 0
    for i in books:
        p += 1
        b.append((i[0], i[1], i[2], i[3], i[4], i[5], i[6], i[7], i[8], p))
    # страница для не авторизованного пользователя
    if 'username' not in session:
        return render_template('books_page.html',
                               books=b,
                               title="Книги",
                               loged=False,
                               admin=False,
                               authors=authors,
                               k=True)
    # страница для администратора
    if UsersModel(db.get_connection()).is_admin(session['username']):
        return render_template('books_page.html',
                               books=b,
                               title="Книги",
                               loged=True,
                               username=session['username'],
                               admin=True,
                               authors=authors,
                               k=True)
    # страница для авторизованного пользователя
    return render_template('books_page.html',
                           books=books,
                           title="Книги",
                           loged=True,
                           username=session['username'],
                           authors=authors)