def save_feedback(target_id: int, target: str): if get_user_from_session(session).role == UserRole.BUYER.value: user = get_user_from_session(session) message = request.form['message'] if target == 'agronom': if comm.add_agronom_feed_back(user_id=user.id, message=message, agronom_id=target_id): return user.render('result_messages/success.j2', -1, message='Відгук залишено успішно!') else: return user.render( 'result_messages/fail.j2', -1, message='Упс.. З відгуком виникли проблеми!') elif target == 'product': if comm.add_deal_feed_back(user_id=user.id, message=message, deal_id=target_id): return user.render('result_messages/success.j2', -1, message='Відгук залишено успішно!') else: return user.render( 'result_messages/fail.j2', -1, message='Упс.. З відгуком виникли проблеми!') return redirect('/')
def get_goods(): data = request.get_json() user = get_user_from_session(session) if user.role == UserRole.BUYER.value: min_age = data['minAge'] min_price = data['minPrice'] max_price = data['maxPrice'] # Done: make request to DB here return jsonify( comm.get_user_items(min_price=min_price, max_price=max_price, min_age=min_age)) # return jsonify(({"name": 'Best hemp', 'price': '128', 'pack': '15', 'min_age': 18, 'id': 1}, # {"name": 'Best hemp 2', 'price': '100', 'pack': '5', 'min_age': 16, 'id': 2}, # {"name": 'Cool hemp', 'price': '10145', 'pack': '1', 'min_age': 0, 'id': 3})) elif user.role == UserRole.ADMIN.value: min_distinct_buyers = data['minDistinctBuyers'] min_date = data['minDate'] max_date = data['maxDate'] return (jsonify( comm.get_admin_items(min_distinct_buyers=min_distinct_buyers, min_date=min_date, max_date=max_date))) return jsonify(({ 'id': 4, 'name': 'Best hemp', 'return_percent': '15', 'pack': 1, 'price': 16, 'min_age': 18 }, )) elif user.role == UserRole.AGRONOMIST.value: # Done: request to DB here. Need only names and ids return jsonify(comm.get_goods())
def get_buyers(): user = get_user_from_session(session) data = request.get_json() if user.role == UserRole.AGRONOMIST.value: min_date = data['minDate'] max_date = data['maxDate'] min_buys = data['minBuys'] max_buys = data['maxBuys'] return jsonify( comm.agronom_buyers(user.id, min_date, max_date, min_buys, max_buys)) if user.role == UserRole.ADMIN.value: min_date = data['minDate'] max_date = data['maxDate'] min_buys = data['minBuys'] # TODO: Request to DB here # return jsonify() return jsonify(comm.get_admin_buyers(min_buys, min_date, max_date)) return jsonify(({ 'id': 0, 'full_name': 'Ostap', 'buys': 10, 'location': 'Lviv' }, ))
def product(product_id: int): # Done: Request to DB here res = comm.get_admin_items(id=product_id) if (res): # any items here return get_user_from_session(session).render_item_view(res[0]) else: return None
def confirm_buy(product_id): user = get_user_from_session(session) if user.role != UserRole.BUYER.value: return make_response('', 404) product = comm.get_item(product_id) return user.render('item_creations/buy_product.j2', -1, product_name=product['name'])
def hemp(hemp_id: int): # Done: Request to DB here res = comm.get_admin_items(id=hemp_id) # return get_user_from_session(session).render_hemp( # {'item_name': 'Cool hemo', 'Days growtime': '125', 'Frost Resistance': 'Good'}) # any items here if (res): # any items here return get_user_from_session(session).render_item_view(res[0]) else: return None
def get_orders(): user = get_user_from_session(session) if user.role == UserRole.BUYER.value: user_id = user.id filters = request.get_json() # Обережно з формаом дати. В запиті вона у форматі "yyyy-mm-dd" min_date = filters['minDate'] max_date = filters['maxDate'] # Done: Request to db here return jsonify(comm.get_user_orders(user_id, min_date, max_date))
def trip(trip_id: int): # Done: Request to DB here res = comm.get_trip_info(trip_id) if res: return get_user_from_session(session).render_item_view(res) # return get_user_from_session(session).render_trip( # {'item_name': 'Ternopil', 'Date': '2020-01-01', 'Purpose': 'Degustation of Vlad`s hemp', # 'Agronoms': ['Denys', 'Ostap', 'Anya']}) # any items here else: return make_response('', 404)
def get_feed_backs(): user = get_user_from_session(session) if user.role == UserRole.BUYER.value: # Бо різні запити до БД для покупця і, наприклад, агронома user_id = user.id data = request.get_json() min_date = data['minDate'] max_date = data['maxDate'] res = comm.get_user_feedbacks(user_id, date_from=min_date, date_to=max_date) print(res) return jsonify(res)
def get_trips(): user = get_user_from_session(session) if user.role == UserRole.AGRONOMIST.value: data = request.get_json() user_id = user.id min_date = data['minDate'] max_date = data['maxDate'] trips = comm.get_agronom_trips(agronom_id=user_id, date_from=min_date, date_to=max_date) return jsonify(trips)
def agronom(agronom_id: int): # Done: Request to DB here. Note: dict can contain any keys. All will be displayed. Only item_name will be displayed with bold text res = comm.get_admin_agronom() if res: return get_user_from_session(session).render_item_view({ **{ 'item_name': " ".join(['Агроном', res[0]["name"], res[0]["surname"]]) }, **res[0] }) else: return make_response('', 404)
def leave_feedback(target_id: int, target: str): if get_user_from_session(session).role == UserRole.BUYER.value: user = get_user_from_session(session) print("HERE") if target == 'agronom': person = comm.get_admin_person(id=target_id) if person: return user.render('feed_back_forms/feed_back_form.j2', -1, name=person[0]["name"]) return make_response('', 400) # return user.render('feed_back_forms/feed_back_form.j2', -1, name='Agronom name') elif target == 'product': # Done: request to DB to get product name by id # TODO: Handle if there is no such product :1 product = comm.get_admin_items(id=target_id) if (product): return user.render('feed_back_forms/feed_back_form.j2', -1, name=product[0]["name"]) return make_response('', 400) return redirect('/')
def get_sorts(): user = get_user_from_session(session) data = request.get_json() if user.role == UserRole.ADMIN.value: min_date = data['minDate'] max_date = data['maxDate'] min_harvesting = data['minHarvesting'] res = comm.get_sorts_by_harvesting(min_harvesting, min_date, max_date) print(res) return jsonify(res) if user.role == UserRole.AGRONOMIST.value: res = comm.get_sorts() return jsonify(res)
def degustation(degustation_id: int): # Done: Request to DB here res = comm.get_admin_degustation(degustation_id) if res: degustation = res[-1] print(degustation) return get_user_from_session(session).render_item_view({ 'Agronom name': degustation["seller_name"], 'Product name': degustation["product_name"], 'Buyers': comm.get_admin_degustation_peers(degustation_id) })
def make_new_degustation(): user = get_user_from_session(session) if user.role == UserRole.AGRONOMIST.value: data = request.get_json() date = data['date'] amount = data['amount'] product_id = data['productId'] buyer_ids = data['buyerIds'] # Done: Request to DB here if comm.add_agronom_degustation( user.id, date, product_id, amount, buyer_ids): # If request was successful return make_response('', 200) return make_response('', 400)
def register_crop(): user = get_user_from_session(session) if user.role == UserRole.AGRONOMIST.value: data = request.form date = data['date'] amount = float(data['amount']) sort_id = int(data['sortId']) # Done: Request to DB here res = comm.add_agronom_crop(user.id, sort_id, amount, date, False) if res: return user.render('result_messages/success.j2', -1, message='Урожай успішно зареєстровано') return user.render('result_messages/fail.j2', -1, message="Помилка. Урожай не зареєстровано")
def buyer(buyer_id: int): # Done: Request to DB here. Note: dict can contain any keys. All will be displayed. Only item_name will be displayed with bold text res = comm.get_admin_agronom() if (res): return get_user_from_session(session).render_item_view({ **{ 'item_name': " ".join(['Покупець', res[0]["name"], res[0]["surname"]]) }, **res[0] }) # return get_user_from_session(session).render_item_view( # {'item_name': 'Покупець Vlad Zadorozhnyi', 'Name': 'Vlad', 'Surname': 'Zadorozhnyi', # 'Location': 'Ternopil, Ukraine', 'Debt': '100 000 $'}) else: return None
def create_new_trip(): if get_user_from_session(session).role == UserRole.ADMIN.value: data = request.get_json() departion = data['departion'] arrival = data['arrival'] location = data['location'] purpose = data['purpose'] agronom_ids = data['agronomIds'] # Done: request to DB to create trip comm.add_admin_trip(location, departion, arrival, purpose) # TODO: better way to get vacation_id? vacation_id = comm.get_admin_trip(None, location, departion, arrival, purpose)[-1]["id"] comm.add_admin_trip_agronoms(vacation_id, agronom_ids) if True: return make_response('', 200) return make_response('', 400)
def return_deal(deal_id: int): user = get_user_from_session(session) # Done: check if the user made this deal and if it can be returned (date and if not returned already) res = comm.get_admin_deal(deal_id) if res: can_be_returned = (res["successful"]) # Done: make DB request to return deal if can_be_returned: if comm.change_user_cancel_deal(deal_id): return user.render('result_messages/success.j2', -1, message="Угоду успішно відмінено") return user.render( 'result_messages/fail.j2', -1, message="Угоду не вдалося відмінити. Перевірте, чи вона " "вже не відмінена та чи не пройшло 14 " "днів з моменту укладання")
def confirm_buy_post(product_id): user = get_user_from_session(session) if user.role != UserRole.BUYER.value: return make_response('', 404) agronom_id = request.form['agronom_id'] amount = float(request.form['amount']) if amount <= 0: return user.render( 'result_messages/fail.j2', -1, message="Не можна куаляти від'ємну кількість продукту...") if comm.add_deal(user.id, product_id, agronom_id, amount): return user.render( 'result_messages/success.j2', -1, message= "Покупка пройшля успішно. Тепер ви можете переглянути її у своїх замовленнях" ) return user.render('result_messages/fail.j2', -1, message="Упс... Щось пішло не так...")
def get_agronoms(): data = request.get_json() user = get_user_from_session(session) if user.role == UserRole.BUYER.value: # Превірка, бо в цьому випадку треба знайти спільні покупки та дегустації user_id = user.id min_buys = data['minBuys'] max_buys = data['maxBuys'] min_degustations = data['minDegustations'] max_degustations = data['maxDegustations'] return jsonify( comm.get_user_agronoms(user_id, min_buys, max_buys, min_degustations, max_degustations)) elif user.role == UserRole.AGRONOMIST.value: min_date = data['minDate'] max_date = data['maxDate'] return jsonify(comm.get_agronom_agronoms(user.id, min_date, max_date)) # return jsonify(({"id": 0, "full_name": "Osta Dyhdalovych", "location": "Lviv", "rating": "10", "trips": 5},)) elif user.role == UserRole.ADMIN.value: min_sorts = data['minSorts'] min_date = data['minDate'] max_date = data['maxDate'] return jsonify(comm.get_admin_agronoms(min_sorts, min_date, max_date))
def get_degustations(): user = get_user_from_session(session) data = request.get_json() user_id = user.id if user.role == UserRole.BUYER.value: min_date = data['minDate'] max_date = data['maxDate'] agronom_name = data['agronomName'] return jsonify( comm.get_user_degustations(user_id, min_date, max_date, agronom_name)) elif user.role == UserRole.AGRONOMIST.value: print(data) min_date = data['minDate'] max_date = data['maxDate'] product_name = data['productName'] or '' min_buyers = int(data['minBuyers']) print(product_name) # Done: Request to DB here res = comm.get_agronom_degustations(user_id, min_date, max_date, product_name, min_buyers) print(res) return jsonify(res)
def trips(): return get_user_from_session(session).render_trips()
def render_login(): # takes login data from user user = get_user_from_session(session) return user.render_login()
def sorts(): return get_user_from_session(session).render_sorts()
def products(): return get_user_from_session(session).render_products()
def make_degustation(): return get_user_from_session(session).render_make_degustation()
def gather_crop(): return get_user_from_session(session).render_gather_crop()
def page_not_found(e): # note that we set the 404 status explicitly return get_user_from_session(session).render( 'result_messages/fail.j2', -1, message="Сторінку не знайдено..")
def make_trip(): user = get_user_from_session(session) return user.render_make_trip()