Ejemplo n.º 1
0
def create(cdDetails):
    """
    This function creates a new cd in the cd list
    based on the passed in cd data

    :param cd: cd to create in cd structure
    :return:        201 on success, 406 on cd exists
    """
    key = cdDetails.get("key", None)

    # Does the cd exist already?
    existing_cd = (CD.query.filter(CD.key == key).one_or_none())

    if existing_cd is None:
        schema = CDSchema()
        new_cd = schema.load(cdDetails, session=db.session)
        db.session.add(new_cd)
        db.session.commit()

        # Serialize and return the newly created deployment
        # in the response
        data = schema.dump(new_cd)

        return data, 201

    # Otherwise, it already exists, that's an error
    else:
        abort(406, f"CD already exists")
Ejemplo n.º 2
0
def update(key, cdDetails):
    """
    This function updates an existing cd in the cd list

    :param key:    key of the cd to update in the cd list
    :param cd:   cd to update
    :return:       updated cd
    """

    app.logger.debug(pformat(cdDetails))

    if cdDetails["key"] != key:
        abort(400, f"Key mismatch in path and body")

    # Does the cd exist in cd list?
    existing_cd = CD.query.filter(CD.key == key).one_or_none()

    # Does cd exist?

    if existing_cd is not None:
        schema = CDSchema()
        update_cd = schema.load(cdDetails, session=db.session)
        update_cd.key = cdDetails['key']

        db.session.merge(update_cd)
        db.session.commit()

        # return the updted cd in the response
        data = schema.dump(update_cd)
        return data, 200

    # otherwise, nope, deployment doesn't exist, so that's an error
    else:
        abort(404, f"CD not found")
Ejemplo n.º 3
0
def create(cdDetails):
    """
    This function creates a new cd in the cd list
    based on the passed in cd data

    :param cd: cd to create in cd structure
    :return:        201 on success, 406 on cd exists
    """
    # Remove id as it's created automatically
    if "id" in cdDetails:
        del cdDetails["id"]
    # Does the cd exist already?
    existing_cd = (
        db.session.query(CD).filter(CD.value == cdDetails["value"]).one_or_none()
    )

    if existing_cd is None:
        schema = CDSchema()
        new_cd = schema.load(cdDetails, session=db.session)
        db.session.add(new_cd)
        db.session.commit()

        # Serialize and return the newly created deployment
        # in the response
        data = schema.dump(new_cd)

        return data, 201

    # Otherwise, it already exists, that's an error
    else:
        abort(406, "CD already exists")
Ejemplo n.º 4
0
def read_all():
    """
    Responds to a request for /api/cd
    with the complete lists of CDs

    :return:        json string of list of CDs
    """
    # Create the list of CDs from our data
    cd = db.session.query(CD).order_by(CD.id).all()
    app.logger.debug(pformat(cd))
    # Serialize the data for the response
    cd_schema = CDSchema(many=True)
    data = cd_schema.dump(cd)
    return data
Ejemplo n.º 5
0
def read_one(id):
    """
    This function responds to a request for /api/cd/{id}
    with one matching cd from CDs

    :param application:   id of cd to find
    :return:              cd matching id
    """
    cd = db.session.query(CD).filter(CD.id == id).one_or_none()

    if cd is not None:
        # Serialize the data for the response
        cd_schema = CDSchema()
        data = cd_schema.dump(cd)
        return data
    else:
        abort(404, "CD with id {id} not found".format(id=id))
Ejemplo n.º 6
0
def read_one(key):
    """
    This function responds to a request for /api/cd/{key}
    with one matching cd from CDs 

    :param application:   key of cd to find
    :return:              cd matching key
    """

    cd = (CD.query.filter(CD.key == key).one_or_none())

    if cd is not None:
        # Serialize the data for the response
        cd_schema = CDSchema()
        data = cd_schema.dump(cd)
        return data
    else:
        abort(404, "CD with key {key} not found".format(key=key))
Ejemplo n.º 7
0
def read_keyValues():
    """
    This function responds to a request for /keyValues/cd
    with the complete lists of CDs

    :return:        json string of list of CDs
    """
    # Create the list of CDs from our data
    cd = db.session.query(CD).order_by(CD.id).all()
    app.logger.debug(pformat(cd))
    # Serialize the data for the response
    cd_schema = CDSchema(many=True)
    data = cd_schema.dump(cd)
    keyValues = []
    for d in data:
        keyValuePair = {}
        keyValuePair["key"] = d.get("id")
        keyValuePair["value"] = d.get("value")
        keyValues.append(keyValuePair)
    print(keyValues)
    return keyValues