class Membership(Model): belongs_to('user', 'organization') role = Field() @scope('admins') def filter_admins(self): return self.role == 'admin'
class Donation(Model): belongs_to('user', 'campaign') date = Field('datetime', default=lambda: request.now) amount = Field('integer') form_rw = {"user": False, "campaign": False, "date": False} validation = {'amount': {'gt': 1}}
class Elephant(Animal): belongs_to('mouse') color = Field() @virtualfield('pretty') def get_pretty(self, row): return row.name+" "+row.color @before_insert def bi2(self, *args, **kwargs): pass
class Comment(Model): belongs_to('user', 'post') text = Field('text') date = Field('datetime') default_values = { 'user': lambda: session.auth.user.id, 'date': lambda: request.now } validation = {'text': {'presence': True}} form_rw = {'user': False, 'post': False, 'date': False}
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': lambda: request.now } validation = {'title': {'presence': True}, 'text': {'presence': True}} form_rw = {'user': False, 'date': False}
class Cost(Model): belongs_to('campaign') name = Field(notnull=True) date = Field('datetime', default=lambda: request.now) amount = Field('integer') form_rw = { "campaign": False, "date": False } validation = { 'amount': {'gt': 1} }
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() @virtualfield('doublename') def get_double_name(self, row): return row.name*2 @virtualfield('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 Campaign(Model): belongs_to('user') has_many('donations', 'costs') title = Field('string', notnull=True) description = Field('string', notnull=True) start = Field('datetime') end = Field('datetime') goal = Field('int') closed = Field('bool', default=True) form_rw = {"user": False, "closed": False} validation = { "goal": { 'gt': 1 }, "start": { 'gt': lambda: request.now, 'format': "%d/%m/%Y %H:%M:%S" }, "end": { 'gt': lambda: request.now, 'format': "%d/%m/%Y %H:%M:%S" } } form_labels = {"title": T("Title: ")} @rowmethod('pledged') def get_pledge(self, row): summed = self.db.Donation.amount.sum() return row.donations(summed).first()[summed] or 0 @rowmethod('spended') def get_spended(self, row): summed = self.db.Cost.amount.sum() return row.costs(summed).first()[summed] or 0
class Dog(Model): belongs_to({'owner': 'Person'}) name = Field()
class Thing(Model): belongs_to('person') has_many('features') name = Field() color = Field()
class Thing(Model): belongs_to('user')
class Feature(Model): belongs_to('thing') has_one('price') name = Field()
class Membership(Model): belongs_to('user', 'organization') role = Field()
class Appointment(Model): belongs_to('patient', 'doctor') date = Field('datetime')
class Price(Model): belongs_to('feature') value = Field('integer')