def get_portfolio_manager():
    """ function that is called when you visit /portfolio_manager """

    token = request.headers.get("token")
    headers = {"Content-type": "application/x-www-form-urlencoded", "token": token}

    message, info = verify_token(token)
    if message != None:
        return create_response(status=400, message=message)
    if info == "fp":
        return create_response(
            status=400, message="You do not have permission to create new documents!"
        )

    kwargs = {}
    kwargs["email"] = request.args.get("email")
    kwargs["name"] = request.args.get("name")

    kwargs = {k: v for k, v in kwargs.items() if v is not None}

    if len(kwargs) == 0:
        portfolio_manager_list = serialize_list(PortfolioManager.query.all())
    else:
        portfolio_manager_list = serialize_list(
            PortfolioManager.query.filter_by(**kwargs).all()
        )

    return create_response(data={"portfolio_manager": portfolio_manager_list})
def get_field_partner():
    """ function that is called when you visit /field_partner, gets all the FPs """

    # gets database values from query string, if missing is None
    kwargs = {}
    kwargs["email"] = request.args.get("email")
    kwargs["org_name"] = request.args.get("org_name")
    kwargs["pm_id"] = request.args.get("pm_id")
    kwargs["due_date"] = request.args.get("due_date")
    kwargs["app_status"] = request.args.get("app_status")
    kwargs["instructions"] = request.args.get("instructions")

    kwargs = {k: v for k, v in kwargs.items() if v is not None}

    if len(kwargs) == 0:
        field_partner_list = serialize_list(FieldPartner.query.all())
    else:
        field_partner_list = serialize_list(
            FieldPartner.query.filter_by(**kwargs).all()
        )

    for field_partner in field_partner_list:
        field_partner["documents"] = serialize_list(
            Document.query.filter(Document.userID == field_partner["_id"]).all()
        )

    return create_response(data={"field_partner": field_partner_list})
def get_all_events():
    event_category_ids = request.args.getlist('event_category_ids[]')
    if not event_category_ids:
        return create_response(
            data={"events": serialize_list(eventService.getAll())})
    return create_response(
        data={
            "events":
            serialize_list(
                eventService.getEventWithCategories(event_category_ids))
        })
Beispiel #4
0
def return_visualizations():
    data = request.get_json()
    logger.info("Data recieved: %s", data)
    if "user_id" not in data:
        msg = "No user ID provided for visualizations."
        logger.info(msg)
        return create_response(status=422, message=msg)
    if "visualization_id" not in data:
        visualizations = db.session.query(Visualization).filter(
            Visualization.id.in_(
                db.session.query(Access.model_id).filter(Access.user_id == data["user_id"], Access.model=='visualization').all()
            )
        ).all()
        # return visualizations 
        return create_response(data={"visualizations": serialize_list(visualizations)})
    # If there was a specific visualization requested, fetch it and return it
    visualization = db.session.query(Visualization).filter(
        Visualization.id == data["visualization_id"],
        Visualization.id.in_(
            db.session.query(Access.model_id).filter(Access.user_id == data["user_id"], Access.model=='visualization').all()
        )
    ).first()
    visualization_details = visualization.get_fields()
    # visualization_details.pop('_sa_instance_state', None)
    return create_response(data={"visualization": visualization_details})
Beispiel #5
0
def edit_dashboard():
    data = request.get_json()
    logger.info("Data recieved: %s", data)
    if "dashboard_id" not in data:
        msg = "No ID provided for dashboard."
        logger.info(msg)
        return create_response(status=422, message=msg)
    if "name" not in data:
        msg = "No name provided for dashboard."
        logger.info(msg)
        return create_response(status=422, message=msg)
    if "comment" not in data:
        data["comment"] = ""
    # Fetch Dashboard
    dash = Dashboard.query.get(data["dashboard_id"])
    # Edit it
    dash.name = data["name"]
    dash.comment = data["comment"]
    dash.visualizations=[]
    for vis in data["visualizations"]:
        dash_vis = DashboardsVisualizations(
            visualization = Visualization.query.get(vis["_id"]),
            order = vis["order"]
        )
        dash.visualizations.append(dash_vis)
    # commit it to database
    db.session.commit()
    return create_response(
        message=f"Successfully edited dashboard {dash.name} with id: {dash.id}. ",
        data= {"visualizations": serialize_list(dash.visualizations)}
    )
Beispiel #6
0
def get_data():
    """Retrive widgets data. arguments are filters."""
    if request.args:
        data = Widget.query.filter_by(**request.args.to_dict()).all()
    else:
        data = Widget.query.all()
    return create_response(data={"data": serialize_list(data)})
Beispiel #7
0
def get_company_info():
    ticker = request.args.get('ticker')
    if ticker is not None and ticker != "":
        company = Company.query.filter_by(ticker=ticker).first_or_404()
        return create_response(data={"data": company.to_dict()})

    companies = Company.query.all()
    return create_response(data={"data": serialize_list(companies)})
Beispiel #8
0
def get_connections():
    query_params = request.args
    connection_id = query_params.get('id')
    if (not(connection_id)):
        connections = Connection.query.all()
        return create_response(data={"connections": serialize_list(connections)})
    ###### If there was a specific connection as parameter...
    connection_details = Connection.query.get(connection_id).get_fields()
    return create_response(data={"connection_details": connection_details})
Beispiel #9
0
def get_document():
    """
    Gets all documents that can be specified using a query string
    """
    # gets database values from query string, if missing is None
    kwargs = {}
    kwargs["fileID"] = request.args.get("fid")
    kwargs["userID"] = request.args.get("uid")
    kwargs["status"] = request.args.get("status")
    kwargs["docClassID"] = request.args.get("docClassID")
    kwargs["fileName"] = request.args.get("fileName")

    # refines kwargs to remove all the None values and only search by values provided
    kwargs = {k: v for k, v in kwargs.items() if v is not None}

    # if no search parameters provided return all documents
    if len(kwargs) == 0:
        docs = Document.query.all()
    # if there are query arguments the following occurs
    else:
        # Unpacks the search values in our dictionary and provides them to Flask/SQLalchemy
        docs = Document.query.filter_by(**kwargs).all()

    # adds the corresponding document class to each document
    for doc in docs:
        doc.docClass = DocumentClass.query.get(doc.docClassID).to_dict()

    # separate documents by different statuses and return based on this
    pending = [i for i in docs if i.status == "Pending"]
    verified = [i for i in docs if i.status == "Approved"]
    missing = [i for i in docs if i.status == "Missing"]
    rejected = [i for i in docs if i.status == "Rejected"]

    return create_response(
        status=200,
        data={
            "documents": {
                "Pending": serialize_list(pending),
                "Approved": serialize_list(verified),
                "Missing": serialize_list(missing),
                "Rejected": serialize_list(rejected),
            }
        },
    )
Beispiel #10
0
def get_sentences():
    query_params = request.args
    sentence_id = query_params.get('id')
    if (not(sentence_id)):
        sentences = Sentence.query.all()
        return create_response(data={"sentences": serialize_list(sentences)})
    ###### If there was a specific sentence as parameter...
    sentence = Sentence.query.get(sentence_id)
    sentence_details = sentence.__dict__
    sentence_details.pop('_sa_instance_state', None)
    # return sentence.connection.user_id
    return create_response(data={"sentence": sentence_details})
Beispiel #11
0
def get_known_faces():
    # faces = Face.query.join(Person).filter_by(profile_face=True)
    faces = Face.query.filter_by(profile_face=True).all(
    )  #.join(Person, Face.person_id_by_human == Person.id)
    serialized_faces = serialize_list(faces)
    # serialized_people = [face.person_by_human.to_dict() for face in faces]
    # logger.info(people_for_faces)
    for i in range(len(serialized_faces)):
        serialized_faces[i]['person_by_human'] = faces[
            i].person_by_human.to_dict()
    logger.info(serialized_faces)
    return create_response({"Faces": serialized_faces})
Beispiel #12
0
def robot_data_list(args):
    data_list_total_length = len(Data.query.all())
    data_list = Data.query.order_by(
        Data.create_time.desc()).paginate(page=int(args["page"]),
                                          per_page=int(args["size"]),
                                          error_out=False).items
    if data_list:
        return create_response(data={
            "data": serialize_list(data_list),
            "total": data_list_total_length
        },
                               code=0)
    else:
        return create_response(data=[], code=5001, message="data is not exist")
Beispiel #13
0
def get_readings():
    data = request.form

    from_time_str = data.get("from", "2020-01-01 00:00:00")
    from_time = datetime.strptime(from_time_str, '%Y-%m-%d %H:%M:%S')

    if data.get("to") is None:
        to_time = datetime.now()
    else:
        to_time_str = data.get("to")
        to_time = datetime.strptime(to_time_str, '%Y-%m-%d %H:%M:%S')

    readings = Reading.query.filter(Reading.timestamp <= to_time).filter(
        Reading.timestamp >= from_time)
    return create_response(data={"readings": serialize_list(readings)})
Beispiel #14
0
def get_flyers_in_map():
    params = request.args.to_dict()
    flyers = []

    if params and params['top']:
        top, bottom, left, right = itemgetter('top', 'bottom', 'left', 'right')(params)
        flyers = SearchFlyer.query.filter(
            SearchFlyer.latitude <= top,
            SearchFlyer.latitude >= bottom,
            SearchFlyer.longitude <= right,
            SearchFlyer.longitude >= left,
        )
    else:
        flyers = SearchFlyer.query.all()

    return create_response(data={"flyers": serialize_list(flyers)})
Beispiel #15
0
def get_list(args):
    robot_list_total_length = len(Robot.query.all())
    robot_list = Robot.query.order_by(
        Robot.create_time.desc()).paginate(page=int(args["page"]),
                                           per_page=int(args["size"]),
                                           error_out=False).items
    if robot_list:
        return create_response(
            data={
                "data": serialize_list(robot_list),
                "total": robot_list_total_length
            },
            code=0,
        )
    else:
        return create_response(data={}, code=3001, message="data is not exist")
Beispiel #16
0
def get_daily_price_info():
    ticker = request.args.get('ticker')
    start_date = request.args.get('start_date')
    end_date = request.args.get('end_date')
    prices = Price.query

    if ticker is not None and ticker != "":
        prices = prices.filter_by(ticker=ticker)

    if start_date is not None and start_date != "":
        prices = prices.filter(Price.price_date > start_date)

    if end_date is not None and end_date != "":
        prices = prices.filter(Price.price_date < end_date)

    return create_response(data={"data": serialize_list(prices.all())})
Beispiel #17
0
def get_recommendations():
    ticker = request.args.get('ticker')
    start_date = request.args.get('start_date')
    end_date = request.args.get('end_date')
    recommendations = Recommendation.query

    if ticker is not None and ticker != "":
        recommendations = recommendations.filter_by(ticker=ticker)

    if start_date is not None and start_date != "":
        recommendations = recommendations.filter(
            Recommendation.recommendation_date > start_date)

    if end_date is not None and end_date != "":
        recommendations = recommendations.filter(
            Recommendation.recommendation_date < end_date)

    return create_response(
        data={"data": serialize_list(recommendations.all())})
def get_messages():
    kwargs = {}
    kwargs["pm_id"] = request.args.get("pm_id")
    kwargs["fp_id"] = request.args.get("fp_id")
    kwargs["to_fp"] = request.args.get("to_fp")
    kwargs["doc_id"] = request.args.get("doc_id")

    kwargs = {k: v for k, v in kwargs.items() if v is not None}

    if len(kwargs) == 0:
        messages = Message.query.all()
    else:
        messages = Message.query.filter_by(**kwargs).all()

    # add the corresponding name to the message
    for message in messages:
        if message.to_fp == True:
            message.name = PortfolioManager.query.get(message.pm_id).name
        else:
            message.name = FieldPartner.query.get(message.fp_id).org_name

    return create_response(data={"messages": serialize_list(messages)})
Beispiel #19
0
def return_accesses():
    data = request.get_json()
    logger.info("Data recieved: %s", data)
    if "user_id" not in data:
        msg = "No user ID provided for accesses."
        logger.info(msg)
        return create_response(status=422, message=msg)
    if "access_id" not in data:
        accesses = db.session.query(Access).filter(
            Access.user_id == data["user_id"]
        ).all()
        return create_response(data={"accesses": serialize_list(accesses)})
    #If a specific acceess ID was passed...
    access = db.session.query(Access).filter(
        Access.id == data["access_id"],
        Access.user_id == data["user_id"]
    ).first()
    access_details = access.__dict__
    access_details.pop('_sa_instance_state', None)
    return create_response(data={
        "access": access_details
    })
Beispiel #20
0
def return_sentences():
    data = request.get_json()
    logger.info("Data recieved: %s", data)
    if "user_id" not in data:
        msg = "No user ID provided for sentences."
        logger.info(msg)
        return create_response(status=422, message=msg)
    if "sentence_id" not in data:
        sentences = db.session.query(Sentence).filter(
            Sentence.id.in_(
                db.session.query(Access.model_id).filter(Access.user_id == data["user_id"], Access.model=='sentence')
            ) 
        ).all()
        # return sentences 
        return create_response(data={"sentences": serialize_list(sentences)})
    sentence = db.session.query(Sentence).filter(
        Sentence.id == data["sentence_id"],
        Sentence.id.in_(db.session.query(Access.model_id).filter(Access.user_id == data["user_id"], Access.model=='sentence'))
    ).first()
    sentence_details = sentence.__dict__
    sentence_details.pop('_sa_instance_state', None)
    return create_response(data={"sentence": sentence_details})
Beispiel #21
0
def return_connections():
    data = request.get_json()
    logger.info("Data recieved: %s", data)
    if "user_id" not in data:
        msg = "No user ID provided for connection(s)."
        logger.info(msg)
        return create_response(status=422, message=msg)
    if "connection_id" not in data: #We return all connections that user has access to
        connections = db.session.query(Connection).filter(
            Connection.id.in_(
                db.session.query(Access.model_id).filter(Access.user_id == data["user_id"], Access.model=='connection').all()
            )
        ).all()
        return create_response(data={"connections": serialize_list(connections)})
    connection = db.session.query(Connection).filter(
        Connection.id == data["connection_id"],
        Connection.id.in_(
            db.session.query(Access.model_id).filter(Access.user_id == data["user_id"], Access.model=='connection').all()
        )
    ).first()
    connection_details = connection.get_fields()
    connection_details.pop('_sa_instance_state', None)
    return create_response(data={"connection": connection_details})
def getemails():
    root_created_by = request.args.get('root_created_by', None)
    if root_created_by is None:
        return Response(json.dumps({'error': 'need subscriber'}),
                        mimetype='application/json',
                        status=400)
    original_links = Link.query.filter_by(created_by=root_created_by).all()
    all_links = []
    parent_links = original_links
    print(original_links)
    while parent_links is not None and len(parent_links) > 0:
        all_links = all_links + parent_links
        parent_links_ids = (l.id for l in parent_links)
        print('PARENT LINK IDS IS', parent_links_ids)
        next_links = Link.query.filter(
            Link.parent_link_id.in_(parent_links_ids)).all()
        parent_links = next_links
    #get all the emails for these links
    all_links_ids = (l.id for l in all_links)
    emails = Email.query.filter(Email.parent_link_id.in_(all_links_ids)).all()
    return Response(json.dumps(serialize_list(emails)),
                    mimetype='application/json',
                    status=200)
Beispiel #23
0
def return_dashboards():
    data = request.get_json()
    logger.info("Data recieved: %s", data)
    if "user_id" not in data:
        msg = "No user ID provided for dashboards."
        logger.info(msg)
        return create_response(status=422, message=msg)
    if "dashboard_id" not in data:
        dashboards = db.session.query(Dashboard).filter(
            Dashboard.id.in_(
                db.session.query(Access.model_id).filter(Access.user_id == data["user_id"], Access.model=='dashboard').all()
            )
        ).all()
        return create_response(data={"dashboards": serialize_list(dashboards)})
    #If a specific dashboard ID was passed...
    dashboard = db.session.query(Dashboard).filter(
        Dashboard.id == data["dashboard_id"],
        Dashboard.id.in_(
            db.session.query(Access.model_id).filter(Access.user_id == data["user_id"], Access.model=='dashboard').all()
        )
    ).first()
    return create_response(data={
        "dashboard": dashboard.export()
    })
Beispiel #24
0
def get_persons():
    persons = Person.query.all()
    return create_response(data={"persons": serialize_list(persons)})
Beispiel #25
0
def get_flyers():
    flyers = SearchFlyer.query.all()
    return create_response(data={"flyers": serialize_list(flyers)})
Beispiel #26
0
def post_reply(flyer_id):
    messages = Message.query.all()
    return create_response(data={"messages": serialize_list(messages)})
Beispiel #27
0
def get_all_event_category():
    return create_response(
        data={
            "event-categories": serialize_list(eventCategoryService.getAll())
        })
Beispiel #28
0
def get_users():
    users = Users.query.all()
    return create_response(data={"users": serialize_list(users)})
def alllinks():
    body = request.json
    links = Link.query.all()
    return Response(json.dumps(serialize_list(links)),
                    mimetype='application/json',
                    status=200)
Beispiel #30
0
def get_all_items():
    return create_response(data={"items": serialize_list(db.get_items())})