class Person(Model): has_many( 'things', {'features': {'via': 'things'}}, {'pets': 'Dog.owner'}, 'subscriptions') name = Field() age = Field('integer')
class Organization(Model): name = Field() is_cover = Field('bool', default=False) @has_many() def admin_memberships3(self): return Membership.admins() has_many('memberships', {'users': { 'via': 'memberships' }}, {'admin_memberships': { 'target': 'Membership', 'scope': 'admins' }}, {'admins': { 'via': 'admin_memberships.user' }}, { 'admin_memberships2': { 'target': 'Membership', 'where': lambda m: m.role == 'admin' } }, {'admins2': { 'via': 'admin_memberships2.user' }}, {'admins3': { 'via': 'admin_memberships3.user' }})
class User(AuthUser): has_many('campaigns', 'donations') money = Field('int', default=0) avatar = Field('upload', uploadfolder='uploads') form_profile_rw = { "avatar": True } @rowmethod('backed_campaigns') def get_backed_campaigns(self, row): count = self.db.Donation.campaign.count() return ( row.donations( count, groupby=self.db.Donation.campaign).first() or {} ).get(count) or 0 @rowmethod('backed_amount') def get_backed_amount(self, row): total = self.db.Donation.amount.sum() return ( self.db(self.db.Donation.user == row.id).select( total, groupby=self.db.Donation.user).first() or {} ).get(total) or 0
class Organization(Model): name = Field() has_many( 'memberships', {'users': {'via': 'memberships'}}, {'admin_memberships': {'target': 'Membership', 'scope': 'admins'}}, {'admins': {'via': 'admin_memberships.user'}}, {'admin_memberships2': { 'target': 'Membership', 'where': lambda m: m.role == 'admin'}}, {'admins2': {'via': 'admin_memberships2.user'}})
class User(Model): name = Field() has_many('memberships', {'organizations': { 'via': 'memberships' }}, { 'cover_orgs': { 'via': 'memberships.organization', 'where': lambda m: m.is_cover == True } })
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 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 Patient(Model): has_many('appointments', {'doctors': {'via': 'appointments'}}) name = Field()
class Doctor(Model): has_many('appointments', {'patients': {'via': 'appointments'}}) name = Field()
class Thing(Model): belongs_to('person') has_many('features') name = Field() color = Field()
class Zoo(Model): has_many('animals', 'elephants') name = Field()
class Mouse(Model): tablename = "mice" has_many('elephants') name = Field()
class Person(Model): has_many('things') name = Field(validation={'empty': False}) surname = Field(validation={'presence': True})
class User(AuthUser): # will create "auth_user" table and groups/permissions ones has_many('posts', 'comments')
class User(Model): name = Field() has_many('memberships', {'organizations': {'via': 'memberships'}})
class Organization(Model): name = Field() has_many('memberships', {'users': {'via': 'memberships'}})
class User(AuthUser): has_many('things') gender = Field()
class Zoo(Model): has_many('animals', 'elephants', {'mice': {'via': 'elephants.mouse'}}) name = Field()
class Person(Model): has_many('things', {'features': {'via': 'things'}}) name = Field() age = Field('integer')