def setUp(self): from block.form.validation import validation_repository_factory validations = validation_repository_factory() ## define validation @validations.config(UserSchema, "name", positionals=["db"]) def name_conflict_validation(data, db): if data["name"] in db: raise NameConflict(data["name"]) self.repository = validations
def test_it(self): from block.form.validation import validation_repository_factory repository = validation_repository_factory() mark = object() self.assertEqual(len(repository[mark].validators), 0) self._add_validation(repository, mark) self.assertEqual(len(repository[mark].validators), 1) self._add_validation(repository, mark) self.assertEqual(len(repository[mark].validators), 1) self._add_validation(repository, mark) self.assertEqual(len(repository[mark].validators), 1)
def setUp(self): self.config = testing.setUp(autocommit=False) self.config.include("block.form") from block.form.validation.core import AppendListErrorControl error_control = AppendListErrorControl({NameConflict: "conflict. {}"}) self.config.block_set_error_control(error_control) from block.form.validation import validation_repository_factory validations = validation_repository_factory() self.config.block_set_validation_repository(validations) ## define validation @validations.config(UserSchema, "name", positionals=["db"]) def name_conflict_validation(data, db): if data["name"] in db: raise NameConflict(data["name"]) self.repository = validations self.config.commit()
# -*- coding:utf-8 -*- import logging logging.basicConfig(level=logging.DEBUG) logger = logging.getLogger(__name__) import sqlalchemy as sa import sqlalchemy.orm as orm from sqlalchemy.ext.declarative import declarative_base from datetime import datetime from block.form.validation import validation_repository_factory Session = orm.sessionmaker() Base = declarative_base() validation = validation_repository_factory() class User(Base): __tablename__ = "users" id = sa.Column(sa.Integer(), primary_key=True, nullable=False) name = sa.Column(sa.String(255), unique=True, nullable=False) created_at = sa.Column(sa.DateTime, default=datetime.now) updated_at = sa.Column(sa.DateTime, onupdate=datetime.now, default=datetime.now) from pyramid.config import Configurator def setup_database(config): # engine = sa.create_engine('sqlite://', echo=True) engine = sa.create_engine('sqlite://') Session.configure(bind=engine, autoflush=False) Base.metadata.bind = engine Base.metadata.create_all() def session_factory(request):