from sqlobject import * #from src import validators from formencode import validators __connection__ = MySQLConnection(db='test', user='test') class UniqueUsername(validators.FancyValidator): column = None columnDescription = None def toPython(self, value, state): # If this object hasn't been created, we won't get a soObject, # just an soClass: try: obj = state.soObject except AttributeError: obj = None cls = state.soClass else: cls = obj.__class__ query = getattr(cls.q, self.column) == value if obj is not None: query = AND(query, cls.q.id != obj.id) if cls.select(query): raise validators.Invalid(self.message( 'notUnique', "%(column)s %(valueRepr)s is already in use") % {'column': self.column, 'columnDescription': self.columnDescription or self.column, 'valueRepr': repr(value), 'value': value}, value, state) class ObjectToPublish(SQLObject): username = StringCol( validator=validators.All(validators.PlainText, UniqueUsername(column='username'))) firstName = StringCol(validator=validators.NotEmpty) lastName = StringCol(validator=validators.NotEmpty) def test_suite(): print 'YEAH BABY' pass