add basic validation support

This commit is contained in:
Martin
2016-06-30 15:45:20 +02:00
parent 7dcb8c5f50
commit 39188e6000
4 changed files with 40 additions and 2 deletions
+11 -2
View File
@@ -2,6 +2,7 @@ from flask import Flask, jsonify, Response, request
from flask_sqlalchemy import SQLAlchemy
from api.extensions.esales import Esales
from api.helpers import check_api_key
from api.validators import ValidationError
db = SQLAlchemy()
esales = Esales()
@@ -15,8 +16,16 @@ def create_app(config_name='config'):
# register errors handlers
@app.errorhandler(404)
def on_404(e):
return jsonify(dict(error='Not found')), 404
def on_404(error):
response = jsonify({'status': 404, 'message': 'The requested resource was not found'})
response.status_code = 404
return response
@app.errorhandler(ValidationError)
def on_validation_error(error):
response = jsonify({'status': 400, 'message': error.message})
response.status_code = 400
return response
# register blueprints
from api.views import server, designers, categories
+14
View File
@@ -0,0 +1,14 @@
# coding=UTF-8
class ValidationError(Exception):
def __init__(self, message):
Exception.__init__(self)
self.message = message
def validate_keys_exists(obj, *keys):
for key in keys:
if not key in obj:
raise ValidationError('No {} is specified'.format(key))
return True
+3
View File
@@ -1,6 +1,8 @@
from flask import Blueprint, request, jsonify
from api import db, tasks
from api.models import Designer
from api.validators import validate_keys_exists
mod = Blueprint('designers', __name__, url_prefix='/designers')
@@ -14,6 +16,7 @@ def list():
@mod.route("/", methods=["POST"])
def create():
data = request.json
validate_keys_exists(data, 'username', 'name')
designer = Designer(**data)
db.session.add(designer)
db.session.commit()