def config_validater(app): def friendly_date(date): s = "{}年{}月{}日".format(date.year, date.month, date.day) return s def iso_datetime_validater(v): """iso_str -> datetime or datetime -> iso_str""" if isinstance(v, datetime): return (True, v.isoformat()) else: return validaters["datetime"](v) def friendly_date_validater(v): if isinstance(v, datetime): return (True, friendly_date(v)) else: return (False, None) add_validater("iso_datetime", iso_datetime_validater) add_validater("friendly_date", friendly_date_validater)
def custom_validaters(): year_validater = re_validater(re.compile(r"^\d{4}$")) add_validater("year", year_validater, my_validaters) add_validater("list", type_validater(list, empty=[]), my_validaters) def abs_validater(v, debug=False): try: return True, abs(v) except: if debug: raise return False, None add_validater('abs', abs_validater, my_validaters)
from __future__ import absolute_import from flask import Flask from flask_restaction import Api from datetime import datetime from validater import add_validater def user_role(uid): if uid == 1: return "admin" def iso_datetime_validater(v): if isinstance(v, datetime): return (True, v.isoformat()) else: return (False, None) add_validater("iso_datetime", iso_datetime_validater) app = Flask(__name__) app.debug = True api = Api(app, fn_user_role=user_role) app.config["JSON_AS_ASCII"] = False from .users import User from .todos import Todo api.add_resource(User) api.add_resource(Todo) api.gen_resjs() api.gen_resdocs()
def config_validater(app): def plus_int_validater(v): try: i = int(v) return (i > 0, i) except: pass return (False, None) def friendly_date(date): s = "{}年{}月{}日".format(date.year, date.month, date.day) return s def iso_datetime_validater(v): if isinstance(v, datetime): return (True, v.isoformat()) else: return (False, None) def friendly_date_validater(v): if isinstance(v, datetime): return (True, friendly_date(v)) else: return (False, None) re_password = re.compile(ur"""^[a-zA-Z0-9~!@#$%^&*(),./;'<>?:"-_=+]{6,16}$""") add_validater("+int", plus_int_validater) add_validater("password", re_validater(re_password)) add_validater("iso_datetime", iso_datetime_validater) add_validater("friendly_date", friendly_date_validater) user_roles = ["user.admin", "user.normal"] def userrole_validater(v): return (True, v) if v in user_roles else (False, None) add_validater("userrole", userrole_validater) bloguser_roles = ["bloguser.admin", "bloguser.normal"] def bloguser_role_validater(v): return (True, v) if v in bloguser_roles else (False, None) add_validater("bloguser_role", bloguser_role_validater)