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 Person(Model): has_many('things', {'features': { 'via': 'things' }}, {'pets': 'Dog.owner'}, 'subscriptions') name = Field() age = Field('integer')
class User(Model): name = Field() has_many('memberships', {'organizations': { 'via': 'memberships' }}, { 'cover_orgs': { 'via': 'memberships.organization', 'where': lambda m: m.is_cover == True } })
class ScanResult(Model): tablename = 'ScanResults' belongs_to({'scan': 'Scan'}) has_many({'x_results': 'XResultRow'}) x = Field.text() y = Field.text() z = Field.text() f = Field.text() e = Field.text(auto_validation=False) s = Field.blob()
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 SpectrumAnalyzer(Model): tablename = 'SpectrumAnalyzers' has_many({'probes': 'FieldProbe'}, {'scans': 'Scan'}) name = Field.string() model = Field.string() min_frequency = Field.float() max_frequency = Field.float() min_frequency_unit = Field.string(default='GHz') max_frequency_unit = Field.string(default='GHz') default = Field.bool() validation = { "name": { 'presence': True }, "model": { 'presence': True }, "min_frequency": { 'presence': True }, "max_frequency": { 'presence': True }, } default_values = {'default': False} indexes = {'name_index': {'fields': ['name'], 'unique': True}} @before_update def set_as_default(self, dbset, fields): self._set_as_default(fields) @before_insert def set_new_as_default(self, fields): self._set_as_default(fields) @staticmethod def _set_as_default(fields): if fields['default']: analyzers = SpectrumAnalyzer.where(lambda s: (s.default == True)).select() for analyzer in analyzers: analyzer.update_record(default=False)
class Image(Model): belongs_to('user') has_many('comments') id = Field('text') title = Field('text') path = Field('text') comment = Field('text') date = Field('datetime') default_values = { 'user': lambda: session.auth.user.id, 'date': lambda: now } validation = { 'id': { 'presence': True }, } fields_rw = {'user': False, 'date': False}
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 Campaign(Model): belongs_to('user') has_many('donations', 'costs') title = Field(notnull=True) description = Field(notnull=True) start = Field.datetime() end = Field.datetime() goal = Field.int() closed = Field.bool(default=True) fields_rw = {"user": False, "closed": False} validation = { "goal": { 'gt': 1 }, "start": { 'gt': now, 'format': "%d/%m/%Y %H:%M:%S" }, "end": { 'gt': 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 Zoo(Model): has_many('animals', 'elephants', {'mice': {'via': 'elephants.mouse'}}) name = Field()
class Mouse(Model): tablename = "mice" has_many('elephants') name = Field()
class Patient(Model): has_many('appointments', {'doctors': {'via': 'appointments'}}) name = Field()
class Doctor(Model): has_many('appointments', {'patients': {'via': 'appointments'}}) name = Field()
class User(AuthUser): has_many('things') gender = 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 Thing(Model): belongs_to('person') has_many('features') name = Field() color = Field()
class User(AuthUser): # will create "users" table and groups/permissions ones has_many('images', 'comments')