class Membership(Model): belongs_to('user', 'organization') role = Field() @scope('admins') def filter_admins(self): return self.role == 'admin'
class Comment(Model): belongs_to('user', 'post') text = Field.text() date = Field.datetime() default_values = {'user': lambda: session.auth.user.id, 'date': now} validation = {'text': {'presence': True}} fields_rw = {'user': False, 'post': False, 'date': False}
class Elephant(Animal): belongs_to('mouse') color = Field() @rowattr('pretty') def get_pretty(self, row): return row.name + " " + row.color @before_insert def bi2(self, *args, **kwargs): pass
class Post(Model): belongs_to('user') has_many('comments') title = Field() text = Field.text() date = Field.datetime() default_values = {'user': lambda: session.auth.user.id, 'date': now} validation = {'title': {'presence': True}, 'text': {'presence': True}} fields_rw = {'user': False, 'date': False}
class Thing(Model): belongs_to('person') name = Field() color = Field() uid = Field(unique=True) validation = { 'name': { 'presence': True }, 'color': { 'in': ['blue', 'red'] }, 'uid': { 'empty': False } }
class Subscription(Model): belongs_to('person') name = Field() status = Field.int() expires_at = Field.datetime() STATUS = {'active': 1, 'suspended': 2, 'other': 3} @scope('expired') def get_expired(self): return self.expires_at < datetime.now() @scope('of_status') def filter_status(self, *statuses): if len(statuses) == 1: return self.status == self.STATUS[statuses[0]] return self.status.belongs(*[self.STATUS[v] for v in statuses])
class Animal(Model): belongs_to('zoo') name = Field() @rowattr('doublename') def get_double_name(self, row): return row.name * 2 @rowattr('pretty') def get_pretty(self, row): return row.name @before_insert def bi(self, *args, **kwargs): pass @before_insert def bi2(self, *args, **kwargs): pass
class Mixed(Model): belongs_to('person') date = Field.date() type = Field() inside = Field() number = Field.int() dont = Field() yep = Field() psw = Field.password() validation = { 'date': { 'format': '%d/%m/%Y', 'gt': lambda: datetime.utcnow().date() }, 'type': { 'in': ['a', 'b'], 'allow': None }, 'inside': { 'in': ['asd', 'lol'] }, 'number': { 'allow': 'blank' }, 'dont': { 'empty': True }, 'yep': { 'presence': True }, 'psw': { 'len': { 'range': (6, 25) }, 'crypt': True } }
class Thing(Model): belongs_to('user')
class Dog(Model): belongs_to({'owner': 'Person'}) name = Field()
class Appointment(Model): belongs_to('patient', 'doctor') date = Field.datetime()
class Price(Model): belongs_to('feature') value = Field.int()
class Feature(Model): belongs_to('thing') has_one('price') name = Field()
class Thing(Model): belongs_to('person') has_many('features') name = Field() color = Field()