コード例 #1
0
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('/')
コード例 #2
0
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())
コード例 #3
0
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'
        }, ))
コード例 #4
0
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
コード例 #5
0
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'])
コード例 #6
0
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
コード例 #7
0
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))
コード例 #8
0
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)
コード例 #9
0
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)
コード例 #10
0
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)
コード例 #11
0
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)
コード例 #12
0
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('/')
コード例 #13
0
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)
コード例 #14
0
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)
        })
コード例 #15
0
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)
コード例 #16
0
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="Помилка. Урожай не зареєстровано")
コード例 #17
0
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
コード例 #18
0
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)
コード例 #19
0
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 "
        "днів з моменту укладання")
コード例 #20
0
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="Упс... Щось пішло не так...")
コード例 #21
0
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))
コード例 #22
0
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)
コード例 #23
0
def trips():
    return get_user_from_session(session).render_trips()
コード例 #24
0
def render_login():
    # takes login data from user
    user = get_user_from_session(session)
    return user.render_login()
コード例 #25
0
def sorts():
    return get_user_from_session(session).render_sorts()
コード例 #26
0
def products():
    return get_user_from_session(session).render_products()
コード例 #27
0
def make_degustation():
    return get_user_from_session(session).render_make_degustation()
コード例 #28
0
def gather_crop():
    return get_user_from_session(session).render_gather_crop()
コード例 #29
0
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="Сторінку не знайдено..")
コード例 #30
0
def make_trip():
    user = get_user_from_session(session)
    return user.render_make_trip()