Code Monkey home page Code Monkey logo

cleancat's Introduction

CleanCat

Build Status

Validation library for Python designed to be used with JSON REST frameworks

Basic example in Flask

class JobApplication(Schema):
    first_name = String()
    last_name = String()
    email = Email()
    urls = List(URL(default_scheme='http://'))

@app.route('/job_application', methods=['POST'])
def test_view():
    schema = JobApplication(request.json)
    try:
        data = schema.full_clean()
    except SchemaValidationError:
        return jsonify({'field-errors': schema.field_errors, 'errors': schema.errors }), 400
        
    # Now "data" has the validated data

cleancat's People

Contributors

alecrosenbaum avatar anemitz avatar caseywebdev avatar drewler avatar jnrowe avatar jpmelos avatar leth avatar philfreo avatar thomasst avatar tsx avatar vtclose avatar wojcikstefan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cleancat's Issues

PhoneNumber schema

Rather than having to rely on a Mongoengine field for validating phone numbers, this should be handled at the schema level

Make error messaging consistent

Some of the error messages start with "Value" (e.g. "Value cannot be changed." or "Value must be of int type.") whereas others start with "The value" (e.g. "The value must be at least X characters long.").

Discovered via #42

DateTime should always return a `datetime.datetime`

Currently, DateTime will return a datetime.date for ISO8601 dates like 2000-01-01 and a datetime.datetime for ISO8601 datetimes like 2000-01-01T00:00:00Z. This is not expected behavior. Date should return a date, DateTime should return a datetime, and something like Union(Date, Datetime) should do what the current DateTime does.

Provide CleanCat schema with a context

There should be a way to provide a CleanCat schema not only with the data we want to validate, but also the context in which we want to validate it.

Currently, you have to rely on global variables (like Flask's g and request) to determine the context you're working in, which is bad for readability, testing, separation of concerns, etc.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.