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)
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)
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'))
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'))
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))
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")
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)
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)
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)
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)
class Books: def __init__(self): self.model = BooksModel() def create(self, params): return self.model.create(params) def delete(self, item_id): return self.model.delete(item_id) def list(self): response = self.model.list_items() return response def list_books_in_group(self, group): response = self.model.list_books_in_group(group) return response
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)
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)
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)
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)
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)
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)
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)
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])
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)
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)
def add_book(): """ Добавление автомобиля """ # если пользователь не авторизован, кидаем его на страницу входа if 'username' not in session: return redirect('login') # если админ, то его на свою страницу if session['username'] != 'admin': return redirect('index') form = AddBookForm() 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()) books.insert(model=form.model.data, price=form.price.data, power=form.power.data, color=form.color.data, dealer=form.dealer_id.data) # редирект на главную страницу return redirect(url_for('book_admin')) return render_template("add_book.html", title='Добавление книги', form=form)
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)
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)
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)
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)
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')
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']))
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)
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])