References sites table updated so we can filter by site later, added timestamp to tunes so they can be sorted in certain contexts, enforced uniqueness on some tables that were causing issues
43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
"""Routes for reference_sites lookup table."""
|
|
from flask import Blueprint, jsonify, request
|
|
from app.extensions import db
|
|
from app.models import ReferenceSite
|
|
from app.auth import require_api_key
|
|
|
|
reference_sites_bp = Blueprint("reference_sites", __name__, url_prefix="/reference_sites")
|
|
|
|
|
|
@reference_sites_bp.get("/")
|
|
def list_reference_sites():
|
|
sites = db.session.query(ReferenceSite).order_by(ReferenceSite.name).all()
|
|
return jsonify([s.to_dict() for s in sites])
|
|
|
|
|
|
@reference_sites_bp.post("/")
|
|
@require_api_key
|
|
def create_reference_site():
|
|
data = request.get_json(force=True)
|
|
site = ReferenceSite(name=data["name"])
|
|
db.session.add(site)
|
|
db.session.commit()
|
|
return jsonify(site.to_dict()), 201
|
|
|
|
|
|
@reference_sites_bp.patch("/<int:site_id>")
|
|
@require_api_key
|
|
def update_reference_site(site_id):
|
|
site = db.get_or_404(ReferenceSite, site_id)
|
|
data = request.get_json(force=True)
|
|
if "name" in data:
|
|
site.name = data["name"]
|
|
db.session.commit()
|
|
return jsonify(site.to_dict())
|
|
|
|
|
|
@reference_sites_bp.delete("/<int:site_id>")
|
|
@require_api_key
|
|
def delete_reference_site(site_id):
|
|
site = db.get_or_404(ReferenceSite, site_id)
|
|
db.session.delete(site)
|
|
db.session.commit()
|
|
return jsonify({"deleted": site_id})
|