Beispiel #1
0
def get_artist(id):
    artist = Artist.query.get_or_404(id)
    if artist.user.id != flask.g.current_user.id and not flask.g.current_user.is_admin:
        raise APIError(404)
    data = artist_schema.dump(artist)

    return jsonify(data)
Beispiel #2
0
def get_user(id):
    user = User.query.get_or_404(id)
    if user.id != flask.g.current_user.id and not flask.g.current_user.is_admin:
        raise APIError(401)

    data = user_schema.dump(user)
    return jsonify(data)
Beispiel #3
0
def get_venue(id):
    venue = Venue.query.get_or_404(id)
    if venue.user.id != flask.g.current_user.id and not flask.g.current_user.is_admin:
        raise APIError(404)
    data = venue_schema.dump(venue)

    return jsonify(data)
Beispiel #4
0
def delete_user(id):
    user = User.query.get_or_404(id)
    if user.id != flask.g.current_user.id and not flask.g.current_user.is_admin:
        raise APIError(401)

    database.session.delete(user)
    database.session.commit()

    return jsonify({}), 204
Beispiel #5
0
def delete_artist(id):
    artist = Artist.query.get_or_404(id)
    if artist.user.id != flask.g.current_user.id and not flask.g.current_user.is_admin:
        raise APIError(404)

    database.session.delete(artist)
    database.session.commit()

    return jsonify({}), 204
Beispiel #6
0
def delete_venue(id):
    venue = Venue.query.get_or_404(id)
    if venue.user.id != flask.g.current_user.id and not flask.g.current_user.is_admin:
        raise APIError(404)

    database.session.delete(venue)
    database.session.commit()

    return jsonify({}), 204
Beispiel #7
0
def update_artist(id):
    artist = Artist.query.get_or_404(id)
    if artist.user.id != flask.g.current_user.id and not flask.g.current_user.is_admin:
        raise APIError(404)

    json = flask.request.get_json() or {}

    try:
        data = ArtistSchema(partial=True).load(json)
    except ValidationError as error:
        raise APIError(422, details=error.messages)

    check_unique_on_update(flask.g.current_user.artists, artist, data, ["name"])

    for key, value in data.items():
        setattr(artist, key, value)

    database.session.commit()

    data = ArtistSchema().dump(artist)
    return jsonify(data)
Beispiel #8
0
def create_artist():
    json = flask.request.get_json() or {}

    try:
        data = artist_schema.load(json)
    except ValidationError as error:
        raise APIError(422, details=error.messages)

    check_unique_on_create(flask.g.current_user.artists, data, ["name"])

    artist = Artist(**data)
    artist.user = flask.g.current_user

    database.session.add(artist)
    database.session.commit()

    data = artist_schema.dump(artist)

    response = jsonify(data)
    response.status_code = 201
    response.headers["Location"] = flask.url_for("artist.get_artist", id=artist.id)
    return response
Beispiel #9
0
def create_venue():
    json = flask.request.get_json() or {}

    try:
        data = venue_schema.load(json)
    except ValidationError as error:
        raise APIError(422, details=error.messages)

    check_unique_on_create(flask.g.current_user.venues, data, ["name"])

    venue = Venue(**data)
    venue.user = flask.g.current_user

    database.session.add(venue)
    database.session.commit()

    data = venue_schema.dump(venue)

    response = jsonify(data)
    response.status_code = 201
    response.headers["Location"] = flask.url_for("venue.get_venue", id=venue.id)
    return response
Beispiel #10
0
def create_user():
    json = flask.request.get_json() or {}
    try:
        data = user_schema.load(json)
    except ValidationError as error:
        raise APIError(422, details=error.messages)

    check_unique_on_create(User.query, data, ["username", "email"])

    password = data.pop("password", None)
    user = User(**data)
    assert password is not None
    user.set_password(password)

    database.session.add(user)
    database.session.commit()

    data = user_schema.dump(user)

    response = jsonify(data)
    response.status_code = 201
    response.headers["Location"] = flask.url_for("user.get_user", id=user.id)
    return response
Beispiel #11
0
def update_user(id):
    user = User.query.get_or_404(id)
    if user.id != flask.g.current_user.id and not flask.g.current_user.is_admin:
        raise APIError(401)

    json = flask.request.get_json() or {}
    try:
        data = UserSchema(partial=True).load(json)
    except ValidationError as error:
        raise APIError(422, details=error.messages)

    check_unique_on_update(User.query, user, data, ["username", "email"])

    password = data.pop("password", None)
    if password is not None:
        user.set_password(password)

    for key, value in data.items():
        setattr(user, key, value)

    database.session.commit()

    data = UserSchema().dump(user)
    return jsonify(data)
Beispiel #12
0
def get_users():
    if not flask.g.current_user.is_admin:
        raise APIError(401)
    users = paginate(User.query)
    data = users_schema.dump(users.items)
    return jsonify(data)
Beispiel #13
0
def delete_token():
    flask.g.current_user.revoke_token()
    database.session.commit()
    return jsonify({}), 204
Beispiel #14
0
def create_token():
    token = flask.g.current_user.get_token()
    database.session.commit()
    return jsonify({"token": token}), 201
Beispiel #15
0
def get_artists():
    artists = paginate(flask.g.current_user.artists)
    data = artists_schema.dump(artists.items)

    return jsonify(data)
Beispiel #16
0
def get_venues():
    venues = paginate(flask.g.current_user.venues)
    data = venues_schema.dump(venues.items)

    return jsonify(data)