class Ttt(BaseModel): id = Field(int, primary_key=True, output=str) time = Field( datetime, name='created_at', default=datetime.now )
class Ttt(BaseModel): id = Field(int, primary_key=True, output=str, auto_increment=True, length=11) time = Field(datetime, name='created_at', default=datetime.now)
class Lala(BaseModel): id = Field(int, primary_key=True, output=str, auto_increment=True, length=11) name = Field(str, length=255) age = Field(int, length=11)
class Foo(BaseModel): id = Field(int, primary_key=True) name = Field(str, default='') age_str = Field(str, noneable=True) @declared_attr def age(cls): return Field(int) @declared_attr def key(cls): return Field(str, default='key')
class F_O_O(BaseModel): id = Field(int, primary_key=True) name = Field(str, default='') age_str = Field(str, noneable=True) key = Field(str, noneable=True) @declared_attr def age(cls): return Field(int) @declared_attr def __table_name__(cls): return cls.__name__.lower().replace('_', '')
class Foo(BaseModel): id = Field(int, primary_key=True, auto_increment=True, length=11) name = Field(str, noneable=True, default='foo', length=255) age = Field(int, noneable=True, default=1, length=11) age_str = Field(int, noneable=True, default=1, output=str, length=11) key = Field(str, noneable=True, default=lambda: str(uuid4()), length=255) prop1 = DbField(list, noneable=True) boolean = Field(bool, default=False) test_getter = Field(int, default=0) test_setter = Field(int, default=0) @test_getter.getter def test_getter(self, value): return value + 1 @test_setter.setter def test_setter(self, value): return value - 1 __unique_keys__ = ((name, 'age'), ('key', )) __index_keys__ = ('age', ) def get_uuid(self): return '/foo/{}'.format(self.id)
class Foo(BaseModel): id = Field(int, primary_key=True, auto_increment=True, length=11) name = Field(str, noneable=True, default='foo', length=255) age = Field(int, noneable=True, default=1, length=11) age_str = Field(int, noneable=True, default=1, output=str, length=11) key = Field(str, noneable=True, default=lambda: str(uuid4()), length=255) prop1 = DbField(list, noneable=True) __unique_keys__ = (('name', 'age'), ('key', )) __index_keys__ = ('age', ) def get_uuid(self): return '/foo/{}'.format(self.id)
def test_encrypt(self): dummy = Dummy.create(**attrs) self.assertEqual(dummy.password, attrs['password']) self.assertEqual(Dummy.get(dummy.id).password, attrs['password']) self.assertEqual(Dummy.gets([dummy.id])[0].password, attrs['password']) not_raw = Dummy.query('password').filter(id=dummy.id).one() self.assertEqual(not_raw, attrs['password']) raw = Dummy.query('password', raw=True).filter(id=dummy.id).one() self.assertEqual(raw, to_str(encrypt(attrs['password'], Dummy.AES_KEY))) dummy.update(password='******') self.assertEqual(dummy.password, '123') dummy = Dummy.get(dummy.id) self.assertEqual(dummy.password, '123') raw = Dummy.query('password', raw=True).filter(id=dummy.id).one() self.assertEqual(raw, to_str(encrypt('123', Dummy.AES_KEY))) dummy.password = '******' dummy.save() dummy = Dummy.get(dummy.id) self.assertEqual(dummy.password, '456') old_password = Dummy.password try: Dummy.password = Field( str, name='password', input=lambda x: 'encrypted', output=lambda x: 'decrypted' ) dummy = Dummy.create(**attrs) self.assertEqual(dummy.password, 'decrypted') self.assertEqual( Dummy.query('password', raw=True).filter(id=dummy.id).one(), 'encrypted' ) finally: Dummy.password = old_password
class Bar(BaseModel): name = Field(str, primary_key=True, length=255) age = Field(int, default=1, length=11) xixi = Field(str, name='key', default=lambda: str(uuid4()), length=255) word = Field(str, noneable=True, length=255) prop1 = DbField(list, noneable=True) __index_keys__ = ((), ('xixi', 'age'), 'age') __order_bys__ = ( 'xixi', ('xixi', 'age'), ('-age', 'xixi'), ) def get_uuid(self): return '/foo/{}'.format(self.id)
class _Dummy(Dummy): class Options: foo = 'bar' name = Field(int) @classmethod def validate_name(cls, name): if name > 1000: raise ValidationError('%s more than 1000' % name)
def test_pickle(self): dummy = Dummy.create(**attrs) d = pickle.dumps(dummy, -1) self.assertEqual(dummy.password, pickle.loads(d).password) dummy = Dummy.get(dummy.id) d = pickle.dumps(dummy, -1) self.assertEqual(dummy.password, pickle.loads(d).password) _dummy = Dummy.cache.get(dummy.id) _dummy = Dummy.cache.get(dummy.id) self.assertEqual(dummy.password, _dummy.password) pickle.dumps(Dummy.password) f = Field(str, input=lambda x: 'encrypted', output=lambda x: 'decrypted') pickle.dumps(f) pickle.dumps(Dummy.created_at)
def age(cls): return Field(int)
def key(cls): return Field(str, default='key')
class Dummy(BaseModel): id = Field(int, primary_key=True, length=11, auto_increment=True) name = Field(str, noneable=True, default='dummy', length=255, charset='utf8mb4') age = Field(int, default=12, on_update=lambda x: x.__class__.age + 1, length=11) password = Field(str, noneable=True, encrypt=True, length=511) flag = Field(int, default=0, noneable=True, choices=[0, 1, 2], length=5) tags = Field([str], default=[]) payload = Field({str: [int]}, noneable=True, default={}) foo = Field(int, noneable=True, length=11) dynasty = Field(str, default='现代', length=4, charset='utf8mb4') dynasty1 = Field(str, noneable=True, length=4) gender = Field(Gender, default=Gender.FEMALE) created_at = Field(datetime, default=datetime.now) updated_at = Field(datetime, default=datetime.now, on_update=datetime.now) created_date = Field(date, default=date.today) prop1 = DbField([str], noneable=True) count = DbField(int, default=0, choices=range(30), on_update=lambda x: x.count + 3) db_dt = DbField(datetime, noneable=True) count1 = DbField(int, noneable=True) def get_uuid(self): return '/dummy/{}'.format(self.id) def after_update(self): after_update() def before_update(self, **attrs): before_update() @classmethod def before_create(cls, **attrs): before_create() @classmethod def after_create(cls, inst): after_create()
class JSONModel(BaseModel): id = Field(int, primary_key=True, auto_increment=True) payload = JSONField() arr = JSONField(default=['a'])
class Lala(BaseModel): id = Field(int, primary_key=True, output=str) name = Field(str) age = Field(int)
class Ben(BaseModel): id = Field(int, primary_key=True) name = Field(str) age = Field(int) key = Field(str)
class EnumModel(BaseModel): id = Field(int, primary_key=True, auto_increment=True) gender = Field(Gender, default=Gender.FEMALE)