class Num(Model): a = Field.int() b = Field.int() c = Field.int() validation = { 'a': {'gt': 0}, 'b': {'lt': 5}, 'c': {'gt': 0, 'lte': 4} }
class Person(Model): has_many('things', {'features': { 'via': 'things' }}, {'pets': 'Dog.owner'}, 'subscriptions') name = Field() age = Field.int()
class World(Model): tablename = "world" randomnumber = Field.int() @rowmethod("serialize") def _serialize(self, row): return {"id": row.id, "randomNumber": row.randomnumber}
class World(Model): tablename = "world" randomnumber = Field.int() @rowmethod('serialize') def _serialize(self, row): return {'id': row.id, 'randomNumber': row.randomnumber}
class Inside(Model): a = Field() b = Field.int() validation = { 'a': {'in': ['a', 'b']}, 'b': {'in': {'range': (1, 5)}} }
class Eq(Model): a = Field() b = Field.int() c = Field.float() validation = { 'a': {'equals': 'asd'}, 'b': {'equals': 2}, 'c': {'not': {'equals': 2.4}} }
class Cost(Model): belongs_to('campaign') name = Field(notnull=True) date = Field.datetime(default=now) amount = Field.int() fields_rw = {"campaign": False, "date": False} validation = {'amount': {'gt': 1}}
class Scan(Model): tablename = 'Scans' belongs_to({'analyzer': 'SpectrumAnalyzer'}) belongs_to({'probe': 'FieldProbe'}) has_one({'result_mat': 'ScanResultMat'}) name = Field.string() date = Field.datetime() kind = Field.string() min_frequency = Field.float() max_frequency = Field.float() min_frequency_unit = Field.string(default='GHz') max_frequency_unit = Field.string(default='GHz') min_x = Field.float(validation={'blank': True, 'gte': 0}) min_y = Field.float(validation={'blank': True, 'gte': 0}) min_z = Field.float(validation={'blank': True, 'gte': 0}) max_x = Field.float(validation={'blank': True, 'gt': 0}) max_y = Field.float(validation={'blank': True, 'gt': 0}) max_z = Field.float(validation={'blank': True, 'gt': 0}) pcb_filename = Field.string(default='') status = Field.string() progress = Field.int(default=0) validation = { 'name': { 'presence': True }, 'kind': { 'presence': True, 'in': ('flat', 'volumetric', 'z') }, 'min_frequency': { 'presence': True, 'gt': 0 }, 'max_frequency': { 'presence': True, 'gt': 0 }, } repr_values = { 'kind': lambda kind: { 'flat': 'Flat', 'volumetric': 'Volumetric', 'z': 'Z-variable' }.get(kind), 'date': lambda date: date.strftime("%d.%m.%Y") } default_values = { 'date': lambda: datetime.now, } indexes = {'name_index': {'fields': ['name'], 'unique': True}}
class A(Model): tablename = "a" name = Field() val = Field.int() fval = Field.float() text = Field.text() password = Field.password() d = Field.date() t = Field.time() dt = Field.datetime() json = Field.json()
class Donation(Model): belongs_to('user', 'campaign') date = Field.datetime(default=now) amount = Field.int() fields_rw = { "user": False, "campaign": False, "date": False } validation = { 'amount': {'gt': 1} }
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 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 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 Price(Model): belongs_to('feature') value = Field.int()
class XResultRow(Model): tablename = 'XResultRows' belongs_to({'result': 'ScanResult'}) x_index = Field.int() y = Field.text(auto_validation=False)
class StepFourThingEdit(Model): tablename = "step_four_things" name = Field() value = Field.float() available = Field.bool(default=True) asd = Field.int()
class Stuff(Model): a = Field.string() b = Field() price = Field.float() quantity = Field.int() total = Field.float() invisible = Field() validation = {"a": {'presence': True}} fields_rw = {"invisible": False} form_labels = {"a": "A label"} form_info = {"a": "A comment"} update_values = {"a": "a_update"} repr_values = {"a": _represent_f} form_widgets = {"a": _widget_f} def setup(self): self.table.b.requires = notInDb(self.db, self.table.b) @compute('total') def eval_total(self, row): return row.price * row.quantity @before_insert def bi(self, fields): return _call_bi(fields) @after_insert def ai(self, fields, id): return _call_ai(fields, id) @before_update def bu(self, set, fields): return _call_u(set, fields) @after_update def au(self, set, fields): return _call_u(set, fields) @before_delete def bd(self, set): return _call_d(set) @after_delete def ad(self, set): return _call_d(set) @rowattr('totalv') def eval_total_v(self, row): return row.price * row.quantity @rowmethod('totalm') def eval_total_m(self, row): return row.price * row.quantity @classmethod def method_test(cls, t): return cls.db, cls.table, t
class StepFiveThing(Model): name = Field() value = Field.int() created_at = Field.datetime() indexes = {'name': True, ('name', 'value'): True}
class Register(Model): value = Field.int()