37 lines
1.2 KiB
Python
37 lines
1.2 KiB
Python
from flask import Blueprint, request
|
|
from ..schemas import model
|
|
from .. import impl
|
|
from ..services.auth_guard import auth_guard
|
|
|
|
from marshmallow import ValidationError
|
|
from . import verify_if_request_is_json
|
|
from BreCal.validators.validation_error import create_dynamic_exception_response, create_validation_error_response
|
|
|
|
import json
|
|
import logging
|
|
import traceback
|
|
|
|
bp = Blueprint('user', __name__)
|
|
|
|
@bp.route('/user', methods=['put'])
|
|
@auth_guard() # no restriction by role
|
|
def PutUser():
|
|
|
|
content = None
|
|
try:
|
|
verify_if_request_is_json(request)
|
|
|
|
content = request.get_json(force=True)
|
|
loadedModel = model.UserSchema().load(data=content, many=False, partial=True)
|
|
return impl.user.PutUser(loadedModel)
|
|
|
|
except ValidationError as ex:
|
|
logging.warning("UserSchema validation failed. Payload=%s", json.dumps(content, default=str))
|
|
return create_validation_error_response(ex=ex, status_code=400)
|
|
|
|
except Exception as ex:
|
|
logging.error("UserSchema load failed. Payload=%s\n%s", json.dumps(content, default=str), traceback.format_exc())
|
|
return create_dynamic_exception_response(ex=None, status_code=400, message="bad format")
|
|
|
|
|