Skip to content

This is a plugin for orator that let you validate on the model the entrance of data

License

Notifications You must be signed in to change notification settings

alfonsocv12/orator-validator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

38 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Orator Validator

Downloads

This is a orator plugin that you can use to validate your model when the user is creating a new item or updating one on the database is easy to use and cleans the code a lot

Installation

You can install the plugin by using pip

$ pip install orator-validator

How to use it

Setup

this is an example of how to implement on your orator model

from orator import Model
from orator_validator import Validator


class User(Model, Validator):

    __connection__ = 'local'
    __fillable__ = [
          'name', 'email', 'password', 'phone_number'
    ]
    __guarded__ = ['id', 'password']


class UserValidation(object):
  '''Here goes the validations that you need'''

User.observe(UserValidation())

Functions available

Validate saving function

the validate function accepts this params

  • require: boolean when True checks if they send the value
  • data_type: object Verifies if the value is specific data type
  • regex: string pass a regex to verified
  • date_str: string witch you want to check the format of the date example '%H:%M'

Example

def saving(self, user):
    user.validate('name', require=True, data_type=str)
    user.validate(
        'email', regex="(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])"
    )
    user.validate(
        'password', regex="^(?=.*[A-Za-z])(?=.*\\d)(?=.*[@$!%*#?&])[A-Za-z\\d@$!%*#?&]{6,}$"
    )
    user.errors()

Validate update function

the validate_update accepts this params

  • guarded: boolean if True value cannot be updated
  • data_tpe: needs to send specific data type
  • regex: regex to validate the value
  • date_str: string to validate a date format
  • function_callback: callback function if the value was send
  • args: arguments for the function callbacks

Example

def updating(self, user):
    user.validate_update('email', guarded=True)
    user.validate_update(
      'password', function_callback=self.__validate_new_password, user=user
    )
    user.errors()

def __validate_new_password(self, user):
    '''
    Validate that the new password is diferent than the old one
    '''
    User.find(user.id)
    if user.password == User.find(user.id).password:
      raise Exception("Can't update password with old one")

Process function

the process function accepts

  • exist: function uses as a callback if the value was send
  • not_exist: function uses as a callback if the value was not send
  • args: arguments for the function callbacks

Example

def saving(self, user):
    user.process('phone_number', exist=self.__process_phone)
    user.errors()

def __process_phone(self, user):
    '''
    This function process the phone if the user send one
    '''
    if user.phone[0] != "+":
      user.phone = "+1 {}".format(user.phone)

About

This is a plugin for orator that let you validate on the model the entrance of data

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages