def filtred_items(type_item): db_sess = db_session.create_session() category, type_search = None, None filter_types = [ 'bg-dark me-md-3 pt-3 px-3 pt-md-5 px-md-5 text-center text-white overflow-hidden', 'bg-light me-md-3 pt-3 px-3 pt-md-5 px-md-5 text-center overflow-hidden', 'bg-light me-md-3 pt-3 px-3 pt-md-5 px-md-5 text-center overflow-hidden', 'bg-dark me-md-3 pt-3 px-3 pt-md-5 px-md-5 text-center text-white overflow-hidden', ] if type_item == 'phones': type_search = 2 category = 'телефоны' elif type_item == 'watch': type_search = 4 category = 'часы' elif type_item == 'tv': type_search = 3 category = 'телевизоры' elif type_item == 'tablets': type_search = 1 category = 'планшеты' id_items = [ item[0] for item in db_sess.query(category_to_items.c.item).filter( category_to_items.c.category == type_search).all() ] items = [ str(item).split('-') for item in db_sess.query(Items).filter(Items.id.in_(id_items)).all() ] return render_template("filtred_items.html", count=len(items), all_types=filter_types, items=items, category=category)
def delete(self, items_id): abort_if_news_not_found(items_id) session = db_session.create_session() news = session.query(Items).get(items_id) session.delete(news) session.commit() return jsonify({'success': 'OK'})
def support(): form = SupportForm() db_sess = db_session.create_session() form.theme.choices = [(theme.id, theme.theme) for theme in db_sess.query(Themes).all()] if form.validate_on_submit(): if db_sess.query(User).filter(User.email == form.email.data).first(): question = Questions(question=form.question.data, user_id=db_sess.query(User.id).filter( User.email == form.email.data).first()[0], theme_id=form.theme.data) db_sess.add(question) db_sess.commit() flash("Ваш запрос успешно отправлен в тех.поддержку", "success") else: return render_template( 'support.html', title='Поддержка', form=form, message= "Обращаться с вопросами в тех.поддержку могут только зарегистрированные пользователи." " Попробуйте ввести корректный email, если у вас уже усть аккаунт. Иначе же создайте новый" ) return redirect('/index') return render_template('support.html', title='Поддержка', form=form)
def index(): db_sess = db_session.create_session() items = [str(item).split('-') for item in db_sess.query(Items).all()] return render_template("index.html", count=len(items), all_types=ALL_TYPES, items=items) # , items=items
def get(self, items_id): abort_if_news_not_found(items_id) session = db_session.create_session() items = session.query(Items).get(items_id) return jsonify({ 'items': items.to_dict(only=( 'id', 'name', 'content', 'characteristics', 'price')) })
def post(self): args = parser.parse_args() session = db_session.create_session() item = Category( name=args['name'] ) session.add(item) session.commit() return jsonify({'success': 'OK'})
def edit_item(id_item, content=None, name=None, about=None): db_sess = db_session.create_session() item = db_sess.query(Items).filter(Items.id == id_item).first() if content: item.content = content if name: item.name = name if about: item.about = about db_sess.commit()
def get(self): session = db_session.create_session() news = session.query(Category).all() return jsonify( { 'categories': [item.to_dict(only=('id', 'name')) for item in news] } )
def more(id): db_sess = db_session.create_session() item = db_sess.query(Items).filter(Items.id == id).first() characteristics = item.characteristics.split('%') img = item.content return render_template('info_more.html', characteristics=characteristics, count=len(characteristics), image=img, id=id)
def create_item(name, content, about, characteristics, price, category): db_sess = db_session.create_session() item = Items(name=name, content=content, about=about, characteristics=characteristics, price=price) item.categories.append( db_sess.query(Category).filter(Category.name == category).first()) db_sess.add(item) db_sess.commit()
def basket_show(): if current_user.is_authenticated: db_sess = db_session.create_session() id_items = [ item[0] for item in db_sess.query(Basket.item_id).filter( Basket.user_id == current_user.id).all() ] print(id_items) items = [ str(item).split('-') for item in db_sess.query(Items).filter( Items.id.in_(id_items)).all() ] return render_template("basket.html", items=items, count=len(items))
def login(): global user form = LoginForm() if form.validate_on_submit(): db_sess = db_session.create_session() user = db_sess.query(User).filter( User.email == form.email.data).first() if user and user.check_password(form.password.data): login_user(user, remember=form.remember_me.data) return redirect("/") return render_template('login.html', message="Неправильный логин или пароль", form=form) return render_template('login.html', title='Авторизация', form=form)
def get(self): session = db_session.create_session() news = session.query(Items).all() return jsonify( { 'items': [(item.to_dict(only=('id', 'name', 'content', 'characteristics', 'price')), session.query(Category.name).filter(Category.id == session.query(category_to_items.c.category).filter( category_to_items.c.item == str(item).split('-')[ 1]).first()[0]).first()[0]) for item in news], } )
def add_to_basket(id_item): if current_user.is_authenticated: db_sess = db_session.create_session() if not db_sess.query(Basket.item_id).filter( Basket.user_id == current_user.id).filter( Basket.item_id == id_item).first(): bas = Basket(item_id=id_item, user_id=current_user.id) db_sess.add(bas) db_sess.commit() flash("Товар успешно добавлен в вашу карзину.") else: flash('Товар уже у вас в корзине') else: flash( "Для начала войдите в вашу учётную запись для добавления товара в карзину." ) return redirect("/")
def main(): db_session.global_init("db/shop_info.db") db_sess = db_session.create_session() api.add_resource(items_recources.ItemsListResource, '/api/v2/items') api.add_resource(items_recources.ItemsResource, '/api/v2/items/<int:items_id>') api.add_resource(items_recources.CategoryListResource, '/api/v2/categories') api.add_resource(items_recources.QuestionsListResource, '/api/v2/questions') """create_item(content='AppleWatch.jpg', name='Apple Watch S5', about='Смарт-часы APPLE Watch Series 5 Nike+, 40мм, серый космос / антрацитовый/черный', characteristics='''Описание% С новым дисплеем, который всегда остаётся включённым, Apple Watch Series 5 — ваш самый преданный помощник. Различные циферблаты и расширения позволяют узнавать информацию, не поднимая запястье. Корпус Apple Watch 5 впервые изготовлен с применением только переработанного алюминия.% Процессор% S5, двухъядерный% Операционная система% Watch OS% Объем постоянной памяти% 32 ГБ% Дисплей% OLED, , 368 х 448 точек% Сенсорный дисплей% да% Размер корпуса% 40 мм%''', price=31290, category='Часы')""" """create_item(content='ipad.jpg', name='APPLE iPad', about='Планшет APPLE iPad 2020 32Gb Wi_Fi + Cellular MYMK2RU/A, 32GB, 3G, 4G, iOS золотистый', characteristics='''Описание% С новым дисплеем, который всегда остаётся включённым, Apple Watch Series 5 ваш самый преданный помощник. Различные циферблаты и расширения позволяют узнавать информацию, не поднимая запястье. Корпус Apple Watch 5 впервые изготовлен с применением только переработанного алюминия.% Процессор% S5, двухъядерный% Операционная система% Watch OS% Объем постоянной памяти% 32 ГБ% Дисплей% OLED, , 368 х 448 точек% Сенсорный дисплей% да% Размер корпуса% 40 мм''', price=40490, category='Планшеты')""" '''edit_item(1, content='iphone_10.jpg') edit_item(2, content='iphone_11.jpg') edit_item(3, content='samsung_s10.jpeg', name='Samsung S10') edit_item(4, content='samsung_a40.jpeg', name='Samsung A40') edit_item(5, content='xiaomi_redmi_8a.jpg', name='Xiaomi Redmi 8A')''' app.run(debug=True)
def post(self): args = parser.parse_args() session = db_session.create_session() item = Items( name=args['name'], content=args['content'], about=args['about'], characteristics=args['characteristics'], price=args['price'] ) with open(f"static/img/{args['content']}", 'wb') as f: f.write(args['img'].encode('latin1')) '''write_to_file(args['img'], args['img_name'])''' print(session.query(Category.id).first()[0]) item.categories.append(session.query(Category).filter(Category.name == args['category']).first()) session.add(item) session.commit() return jsonify({'success': 'OK'})
def get(self): session = db_session.create_session() news = session.query(User.name, User.email, Questions.question, Themes.theme).filter( User.id == Questions.user_id).filter(Questions.theme_id == Themes.id).all() print(news) data = {} for item in news: new_data = {'name': item[0], 'email': item[1], 'question': item[2], 'theme': item[3]} return jsonify( { 'questions': [{'name': item[0], 'email': item[1], 'question': item[2], 'theme': item[3]} for item in news] } )
def register(): form = RegisterForm() if form.validate_on_submit(): if form.password.data != form.password_again.data: return render_template('register.html', title='Регистрация', form=form, message="Пароли не совпадают") db_sess = db_session.create_session() if db_sess.query(User).filter(User.email == form.email.data).first(): return render_template('register.html', title='Регистрация', form=form, message="Такой пользователь уже есть") user = User(name=form.name.data, email=form.email.data, about=form.about.data) user.set_password(form.password.data) db_sess.add(user) db_sess.commit() return redirect('/login') return render_template('register.html', title='Регистрация', form=form)
def create_basket(title, content, user_id): basket = Basket(title=title, content=content, user_id=user_id) db_sess = db_session.create_session() db_sess.add(basket) db_sess.commit()
def delete_item(item_id): db_sess = db_session.create_session() item = db_sess.query(Items).filter(Items.id == item_id).first() db_sess.delete(item) db_sess.commit()
def abort_if_news_not_found(items_id): session = db_session.create_session() news = session.query(Items).get(items_id) if not news: abort(404, message=f"Items {items_id} not found")
def load_user(user_id): db_sess = db_session.create_session() return db_sess.query(User).get(user_id)