Пример #1
0
def list_my_reservations_api():
    session = Session()
    user_id = request.args.get('usr_id')

    if usr_exists(session, user_id):
        user = get_usr_by_idauth(session, user_id)
        url = URL_RESERVATION + str(BOOKING_SERVICE_ID) + "/client/" + str(
            user.id_client_booking) + "/reservation"
        r = requests.get(url)
        r_list = r.json()

        response = list()
        for e in r_list:
            trip = get_trip_by_domainid(session, e["id_domain"])
            if trip is not None:
                elem = dict()
                event = get_event(session, trip.id_event)
                driver = get_usr(session, trip.id_user)
                elem['event'] = event.get_dict()
                elem['driver'] = driver.get_dict_profile()
                elem['trip'] = e
                response.append(elem)

        session.close()
        return jsonify(response)

    session.close()
    return "ERROR"
Пример #2
0
def create_element_api(id, id_owner, id_domain) -> str:

    body = request.json

    session = Session()
    service = get_service(session, id)
    owner = get_owner(session, id_owner)
    domain = get_domain(session, id_domain)
    if (service is not None) and (owner is not None) and (domain is not None)\
        and (owner in service.owner) and (domain in owner.domain):

        element = create_element(session, domain, body["name"],
                                 body["information"], None,
                                 datetime.datetime.now(), body["init_time"],
                                 body["end_time"], body["price"])

        element.url = "/service/%d/owner/%d/domain/%d/element/%d" % (
            service.id, owner.id, domain.id, element.id)
        element.reserved = False
        session.commit()
        response = element.get_dict()
        session.close()
        return json.dumps(response)

    session.close()
    return "ERROR"
Пример #3
0
def get_usr_profile_api():
    usr_mail = request.args.get('usr_mail')

    session = Session()
    usr = get_usr_from_mail(session, usr_mail)
    if usr is not None:

        response = usr.get_dict_profile()
        r = requests.get(URL_REVIEW + "review",
                         params={'reviewdObjectID': usr.mail})
        r = r.json()
        for e in r:
            mail = e['authorID']
            tmp_usr = get_usr_from_mail(session, mail)
            if tmp_usr is not None:
                e['img_url'] = tmp_usr.img_url
                e['name'] = tmp_usr.name
                e['mail'] = tmp_usr.mail

        response["reviews"] = r

        r = requests.get(URL_REVIEW + "avgRating/" + usr.mail)
        r = r.json()
        if "avgRating" in r.keys():
            response["avgRating"] = r["avgRating"]
        else:
            response["avgRating"] = 0

        session.close()
        return jsonify(response)

    session.close()
    return "ERROR"
Пример #4
0
def create_review_api():
    session = Session()
    user_id = request.args.get('usr_id')
    body = request.json

    if usr_exists(session, user_id) and\
        set(["rating", "reviewText", "reviewdObjectID"]).issubset(set(body.keys())):

        usr = get_usr_by_idauth(session, user_id)
        usr_to = get_usr_from_mail(session, body["reviewdObjectID"])
        review = None

        if usr_to is None or not review_to_usr_exist(session, usr, usr_to.id):
            session.close()
            return "ERROR"

        if not "reviewID" in body.keys():
            review = get_review_by_usrs(session, usr, usr_to.id)
        else:
            review = get_review(session, body["reviewID"])

        if review is not None and\
            review_detail_exist(session, usr, usr_to, review.id):
            body["authorID"] = usr.mail
            r = requests.post(URL_REVIEW + "review", json=body)
            delete_review(session, id=review.id)
            session.close()
            return "OK"

    session.close()
    return "ERROR"
Пример #5
0
def create_reservation_api(id, id_owner, id_domain, id_element) -> str:

    body = request.json

    session = Session()
    service = get_service(session, id)
    owner = get_owner(session, id_owner)
    domain = get_domain(session, id_domain)
    element = get_element(session, id_element)
    client = get_client(session, body["id_client"])

    if (element is not None) and (element.reserved == True):
        session.close()
        return "RESERVED"

    if (service is not None) and (owner is not None) and (domain is not None)\
        and (owner in service.owner) and (domain in owner.domain)\
         and (client is not None) and (element in domain.element)\
            and (client in service.client) and (element.reserved ==False):

        reservation = create_reservation(session, service, client, element,
                                         body["name"], body["information"],
                                         None, datetime.datetime.now())

        reservation.url = "/service/%d/client/%d/reservation/%d" % (
            service.id, client.id, reservation.id)
        session.commit()

        response = reservation.get_dict()
        session.close()
        return json.dumps(response)

    session.close()
    return "ERROR"
Пример #6
0
def make_event() -> str:
    body = request.json

    session = Session()
    if set([
            "Name", "Description", "Category", "ImageUrl", "City", "SubCity",
            "Lat", "Lon", "Date"
    ]).issubset(set(body.keys())):

        event = create_event(session,
                             body["Name"],
                             body["Description"],
                             body["Category"],
                             body["ImageUrl"],
                             body["City"],
                             body["Lat"],
                             body["Lon"],
                             body["Date"],
                             sub_city=body["SubCity"])

        response = event.get_dict()
        session.close()
        return json.dumps(response)

    session.close()
    return "ERROR"
    def write(self):
        print(
            f'Writing {len(self.rows):,} rows to {IpedsCharge.__tablename__} table in database.'
        )
        session = Session()

        if len(self.rows) > 0:
            try:
                for row in self.rows:
                    _ = session.query(IpedsCharge).filter(
                        IpedsCharge.unitid == row.unitid,
                        IpedsCharge.date_key == row.date_key).delete(
                            synchronize_session=False)
                session.bulk_save_objects(self.rows)
                session.commit()
            except Exception as e:
                print(f'An error occurred:\n{str(e)}.')
                session.rollback()
                print('No changes were made to the database due to error.')
            else:
                print('Rows successfully written to database.')
        else:
            print('No rows were available to insert.')

        session.close()
Пример #8
0
def get_my_trips_api():
    session = Session()

    user_id = request.args.get('usr_id')

    if usr_exists(session, user_id):
        response = list()
        usr = get_usr_by_idauth(session, user_id)
        trips = get_usr_trips(session, usr.id)

        for t in trips:
            tmp = t.get_dict()

            event = get_event(session, t.id_event)
            tmp['eventName'] = event.name
            tmp['eventImg'] = event.image_url

            r = requests.get(URL_TRIP_FOLLOWER + "get_trip",
                             params={"TripId": t.id_iptf})
            r = r.json()

            tmp["trip"] = r
            response.append(tmp)

        session.close()
        return jsonify(response)

    session.close()
    return "ERROR"
Пример #9
0
def get_user_status(username):
    session = Session()
    user_info = session.query(User).filter(User.name == username).all()
    if user_info != []:
        session.close()
        return user_info[0].state
    else:
        return None
Пример #10
0
def insert_user(username, state):
    session = Session()
    user = User(username, state)
    res = session.query(User).filter(User.name == username).all()
    if len(res) < 1:
        session.add(user)
        session.commit()
        session.close()
    else:
        print('User already exists')
Пример #11
0
def book_trip()->str:
    user_id         = request.args.get('usr_id')
    body            = request.json

    session = Session()

    if set(["EventID","StartTime", "City", "StartCoords","Consumption","AvoidTolls",
            "MaxDetour","FuelType", "name", "information", "Price",
            "NumSeats"]).issubset(set(body.keys())) and\
            usr_exists(session, user_id) and\
            event_exist(session, body["EventID"]):

        event = get_event(session, body["EventID"])
        body["EndCoords"] = [event.lat, event.lon]
        body["StartTime"] += event.date

        r       = requests.post(URL_TRIP_FOLLOWER + "register_trip", json=body)
        id_iptf = r.json()

        user        = get_usr_by_idauth(session, user_id)
        owner_id    = user.id_owner_booking
        url         = URL_RESERVATION + str(BOOKING_SERVICE_ID) +"/owner/"+str(owner_id)+"/domain"
        d_json      = {"name": body["name"], "information": body["information"]}
        r           = requests.post(url, json=d_json)
        id_domain_booking   = r.json()['id']

        url = URL_RESERVATION + str(BOOKING_SERVICE_ID) + "/owner/" +\
                str(owner_id) +"/domain/" + str(id_domain_booking) + "/element"
        elem_bdy = {
            "name"          : body["name"] + "_elem",
            "information"   : body["information"],
            "init_time"     : body["StartTime"],
            #"init_time"     : event.date + body["StartTime"],
            #"init_time"     : event.date - body["StartTime"],
            "end_time"      : event.date,
            "price"         : body["Price"]+2.9
        }

        if 'NumSeats' in set(body.keys()):
            for i in range(0,body['NumSeats']):

                elem_bdy["name"] = body["name"] + "_elem" + str(i)

                r = requests.post(url, json=elem_bdy)

        else:
            r = requests.post(url, json=elem_bdy)

        trip = create_trip(session, id_domain_booking, id_iptf, body["City"], True, user, event)
        response = trip.get_dict()
        session.close()
        return json.dumps(response)

    session.close()
    return "ERROR"
Пример #12
0
def get_service_api(id):

    session = Session()
    service = get_service(session, id)
    if service is not None:
        response = get_json_service(service)
        session.close()
        return response

    session.close()
    return "ERROR"
Пример #13
0
def find_event() -> str:
    session = Session()
    event_id = request.args.get('event_id')
    if event_exist(session, event_id):
        event = get_event(session, event_id)
        response = event.get_dict()
        session.close()
        return json.dumps(response)

    session.close()
    return "ERROR"
Пример #14
0
def remove_event() -> str:

    event_id = request.args.get('event_id')

    session = Session()
    if event_exist(session, event_id):
        delete_event(session, id=event_id)
        session.close()
        return "DELETED"

    session.close()
    return "ERROR"
Пример #15
0
def create_service_api() -> str:

    session = Session()
    body = request.json
    service = create_service(session, body['name'], body['information'], None,
                             datetime.datetime.now())
    service.url = "/service/%d" % (service.id)
    session.commit()

    response = service.get_dict()
    session.close()

    return json.dumps(response)
Пример #16
0
def update_status(username, state):
    session = Session()
    res = session.query(User).filter(User.name == username).all()
    if len(res) < 1:
        user = User(username, state)
        session.add(user)
        session.commit()
        session.close()
    if len(res) == 1:
        user = session.query(User).filter(User.name == username).first()
        user.state = state
        session.commit()
        session.close()
Пример #17
0
def get_aval_elems(id, id_domain):
    session = Session()
    service = get_service(session, id)
    domain = get_domain(session, id_domain)

    if (service is not None) and (domain is not None):

        elements = get_domain_aval_elements_w_info(session, domain=domain)
        session.close()
        return jsonify(elements)

    session.close()
    return "ERROR"
Пример #18
0
def get_domain_reservations_api(id, id_domain):
    session = Session()
    service = get_service(session, id)
    domain = get_domain(session, id_domain)

    if (service is not None) and (domain is not None):

        reservations = get_domain_reservations(session, domain=domain)
        session.close()
        return jsonify(reservations)

    session.close()
    return "ERROR"
Пример #19
0
def create_client_api(id)->str:
    body = request.json
    session = Session()
    service = get_service(session, id)
    if service is not None:
        client = create_client(session, service, body['name'], body['information'],None,datetime.datetime.now())
        client.url="/service/%d/client/%d" % (service.id,client.id)
        session.commit()
        response = client.get_dict()
        session.close()
        return json.dumps(response)

    session.close()
    return "ERROR"
Пример #20
0
def get_client_reservations_api(id, id_client):
    session = Session()
    service = get_service(session, id)
    client = get_client(session, id_client)

    if (service is not None) and (client is not None) and\
        (client in service.client):

        response = get_client_reservations(session, client=client)
        session.close()
        return jsonify(response)

    session.close()
    return "ERROR"
Пример #21
0
def genera_risposte(nome_comando, chat_id, bot, list_args):
    session = Session()
    db_bot = session.query(Bot).filter_by(token=bot._token).first()
    comando = db_bot.get_command(nome_comando)
    if comando.get_tipo() == 'TEXT':
        comando_txt = session.query(Testuali).get(comando.id)
        if comando_txt.controllo_args(list_args):
            risposta = comando_txt.risposta.format(*list_args)
            bot.sendMessage(chat_id, risposta)
        else:
            bot.sendMessage(chat_id, comando.help_msg)
    elif comando.get_tipo() == 'API':
        comando_api = session.query(Api).get(comando.id)
        _APIS[comando_api.funzione](bot, list_args, chat_id)
    else:
        pass
Пример #22
0
def get_element_byid_api(id, id_element):

    session = Session()
    service = get_service(session, id)
    element = get_element(session, id_element)

    client_id = request.args.get('client_id')

    client = get_client(session, client_id)

    if (service is not None) and (element is not None):
        #Get Reservation
        if request.method == 'GET':
            response = element.get_dict()
            session.close()
            return json.dumps(response)

        #Make Reservation
        elif request.method == 'POST' and (client is not None):
            body = request.json

            if isinstance(body["information"], dict):
                body["information"] = json.dumps(body["information"])

            reservation = create_reservation(session, service, client, element,
                                             body["name"], body["information"],
                                             None, datetime.datetime.now())

            if reservation is not None:
                reservation.url = "/service/%d/client/%d/reservation/%d" % (
                    service.id, client.id, reservation.id)
                session.commit()
                response = reservation.get_dict()
                session.close()
                return jsonify(response)

            else:
                session.close()
                return "RESERVED"

        #Delete element
        delete_element(session, element=element)
        session.close()
        return "DELETED"

    session.close()
    return "ERROR"
Пример #23
0
def end_trip():
    user_id         = request.args.get('usr_id')
    trip_id         = request.args.get('trip_id')

    session = Session()

    if usr_exists(session, user_id):
        user = get_usr_by_idauth(session, user_id)
        trip = get_trip(session, trip_id)

        if (trip is not None) and trip_belongs_usr(session, user.id, int(trip_id)):
            url = URL_RESERVATION + str(BOOKING_SERVICE_ID) + "/domain/" +\
                    str(trip.id_domain_booking) + "/get_dom_reservations"

            r = requests.get(url)
            reservations = r.json()
            token_list = list()

            #End Trip Trip Follower
            requests.post(URL_TRIP_FOLLOWER + "/end_trip", params={'TripId':trip.id_iptf})

            for res in reservations:
                usr_client = get_usr_by_idclient(session, res["client_id"])
                payment_info = json.loads(res["information"])
                payment_bdy = {
                    "targetID"  : user.mail,
                    "sourceID"  : IKER_MAIL,
                    "amount"    : res["price"],
                    "briefDescription": "None"
                }

                token_list.append({
                    "usr_id"        : usr_client.id,
                    "payment_token" : payment_info["ttoken"],
                    "amount"        : res["price"]
                    })

                requests.post(URL_PAYMENT + "completePayment", json=payment_bdy)

                create_review(session, usr_client, user)

            delete_trip(session, trip=trip)
            session.close()
            return jsonify(token_list)

    session.close()
    return "ERROR"
Пример #24
0
def create_owner_api(id) -> str:

    body = request.json
    session = Session()
    service = get_service(session, id)
    if service is not None:
        owner = create_owner(session, service,
                             body['name'], body['information'], None,
                             datetime.datetime.now())
        owner.url = "/service/%d/owner/%d" % (service.id, owner.id)
        session.commit()
        response = owner.get_dict()
        session.close()
        return json.dumps(response)

    session.close()
    return "ERROR"
Пример #25
0
def setup_db():
    Base.metadata.create_all(engine)

    session = Session()

    if session.query(User).first() == None:
        # plain text password: admin
        session.add(
            User(
                0, "admin",
                "103ed64fd2ec3a053dd50bca44ddf7ed6cdeedf83963c44044b494ea69afa52e"
            ))
    if session.query(Room).first() == None:
        session.add(
            Room(0, "Main Room", "Initial room you connect to.", 100, "admin"))

    session.commit()
    session.close()
Пример #26
0
def probe_trip()->str:
    body        = request.json
    event_id    = request.args.get('event_id')

    session = Session()
    if set(["StartCoords", "Consumption", "AvoidTolls",
                "MaxDetour", "FuelType"]).issubset(set(body.keys())) and\
                    any(e in body.keys() for e in ["StartTime", "EndTime"]) and\
                        event_id is not None:
        event = get_event(session, event_id)
        if event is not None:
            body["EndCoords"] = [event.lat, event.lon]
            r = requests.post(URL_TRIP_FOLLOWER + "probe_trip", json=body)
            session.close()
            return jsonify(r.json())

    session.close()
    return "ERROR"
    def write(self):
        session = Session()

        if len(self.rows) > 0:
            try:
                _ = session.query(self.rows[0].__class__).filter(self.rows[0].__class__.date_key==self.date_key).delete(synchronize_session=False)
                session.bulk_save_objects(self.rows)
                session.commit()
            except Exception as e:
                print(f'An error occurred:\n{str(e)}.')
                session.rollback()
                print('No changes were made to the database due to error.')
            else:
                print('Rows successfully written to database.')
        else:
            print('No rows were available to insert.')
            
        session.close()
Пример #28
0
def get_owner_api(id, id_owner) -> str:

    session = Session()
    service = get_service(session, id)
    owner = get_owner(session, id_owner)

    if request.method == 'GET':
        if (service is not None) and (owner
                                      is not None) and (owner
                                                        in service.owner):
            response = get_json_owner(owner)
            session.close()
            return response

        session.close()
        return "ERROR"

    delete_owner(session, owner=owner)
    session.close()
    return "DELETED"
Пример #29
0
def get_aval_seats():
    trip_id         = request.args.get('trip_id')

    session = Session()
    if trip_exists_id(session, trip_id):

        trip = get_trip(session, trip_id)
        if trip.available:
            r = requests.get(URL_RESERVATION + str(BOOKING_SERVICE_ID) + "/domain/" +\
                    str(trip.id_domain_booking) + "/get_aval_elems")

            r = r.json()
            session.close()
            return jsonify(r)

        session.close()
        return jsonify(list())

    session.close()
    return "ERROR"
Пример #30
0
def get_client_api(id, id_client)->str:

    session = Session()
    service = get_service(session, id)
    client = get_client(session, id_client)

    if request.method == 'GET':
        if (service is not None) and (client is not None)\
            and (client in service.client):

            response = get_json_client(client)
            session.close()
            return response

        session.close()
        return "ERROR"

    delete_client(session, client=client)
    session.close()
    return "DELETED"