now returning bad request when wrong parameters are supplied for room / recorder creation
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
from flask import Blueprint, abort
|
||||
from flask_restx import Api, Namespace
|
||||
from werkzeug.exceptions import InternalServerError
|
||||
|
||||
api_authorizations = {
|
||||
'apikey': {
|
||||
@@ -73,6 +74,19 @@ from .virtual_command_api import *
|
||||
|
||||
# from .group_api import *
|
||||
|
||||
"""
|
||||
@api_v1.errorhandler(InternalServerError)
|
||||
def handle_500(e):
|
||||
original = getattr(e, "original_exception", None)
|
||||
|
||||
if original is None:
|
||||
# direct 500 error, such as abort(500)
|
||||
api_v1.abort(500)
|
||||
|
||||
# wrapped unhandled error
|
||||
#return render_template("500_unhandled.html", e=original), 500
|
||||
api_v1.abort(500)
|
||||
"""
|
||||
|
||||
@api_bp.route('/<path:path>')
|
||||
def catch_all_api(path):
|
||||
|
||||
@@ -2,19 +2,21 @@
|
||||
"""
|
||||
This module provides functions related to recorders through the API.
|
||||
"""
|
||||
import logging
|
||||
from datetime import datetime
|
||||
from pprint import pprint
|
||||
|
||||
from flask_jwt_extended import jwt_required
|
||||
from flask_restx import fields, Resource, inputs
|
||||
|
||||
from backend import db, app
|
||||
from backend import db, app, LrcException
|
||||
from backend.api import api_recorder
|
||||
from backend.api.models import recorder_model, recorder_model_model, recorder_command_model
|
||||
from backend.models.recorder_model import Recorder, RecorderModel, RecorderCommand
|
||||
from backend.models.room_model import Room
|
||||
import backend.recorder_adapters as r_a
|
||||
|
||||
logger = logging.getLogger("lrc.api.recorder")
|
||||
|
||||
# ==
|
||||
|
||||
@@ -116,10 +118,14 @@ class RecorderList(Resource):
|
||||
else:
|
||||
return "specified recorder model (id: {}) does not exist!".format(
|
||||
api_recorder.payload["recorder_model_id"]), 404
|
||||
recorder = Recorder(**api_recorder.payload)
|
||||
db.session.add(recorder)
|
||||
db.session.commit()
|
||||
return recorder
|
||||
try:
|
||||
recorder = Recorder(**api_recorder.payload)
|
||||
db.session.add(recorder)
|
||||
db.session.commit()
|
||||
return recorder
|
||||
except LrcException as e:
|
||||
logger.error(e)
|
||||
return api_recorder.abort(400, str(e))
|
||||
|
||||
|
||||
@api_recorder.route('/model/<int:id>')
|
||||
|
||||
@@ -5,15 +5,20 @@ For example: listing of available auth providers or registration of users.
|
||||
|
||||
Login through API does not start a new session, but instead returns JWT.
|
||||
"""
|
||||
import logging
|
||||
|
||||
from flask_jwt_extended import jwt_required
|
||||
from flask_restx import fields, Resource
|
||||
from sqlalchemy import exc
|
||||
|
||||
from backend import db, app
|
||||
from backend import db, app, LrcException
|
||||
from backend.api import api_room
|
||||
from backend.models.room_model import Room
|
||||
from backend.models.recorder_model import Recorder
|
||||
|
||||
|
||||
logger = logging.getLogger("lrc.api.room")
|
||||
|
||||
room_model = api_room.model('Room', {
|
||||
'id': fields.String(required=False, description='The room\'s identifier'),
|
||||
'created_at': fields.DateTime(required=False, description='Creation date of the room info'),
|
||||
@@ -80,8 +85,8 @@ class RoomResource(Resource):
|
||||
room.recorder = api_room.payload["recorder"]
|
||||
else:
|
||||
num_rows_matched = Room.query.filter_by(id=id).update(api_room.payload)
|
||||
db.session.commit()
|
||||
return "ok"
|
||||
db.session.commit()
|
||||
return "ok"
|
||||
api_room.abort(404)
|
||||
|
||||
|
||||
@@ -112,11 +117,15 @@ class RoomList(Resource):
|
||||
else:
|
||||
return "specified recorder (id: {}) does not exist!".format(api_room.payload["recorder_id"]), 404
|
||||
del api_room.payload["recorder_id"]
|
||||
room = Room(**api_room.payload)
|
||||
db.session.add(room)
|
||||
try:
|
||||
db.session.commit()
|
||||
return room
|
||||
except exc.IntegrityError as e:
|
||||
db.session.rollback()
|
||||
return str(e.detail), 400
|
||||
room = Room(**api_room.payload)
|
||||
db.session.add(room)
|
||||
try:
|
||||
db.session.commit()
|
||||
return room
|
||||
except exc.IntegrityError as e:
|
||||
db.session.rollback()
|
||||
return str(e.detail), 400
|
||||
except LrcException as e:
|
||||
logger.error(e)
|
||||
return api_room.abort(400, str(e))
|
||||
|
||||
Reference in New Issue
Block a user