class Fortune(Model): tablename = "fortune" message = Field.string() @rowmethod('serialize') def _serialize(self, row): return {'id': row.id, 'message': row.message}
class Post(Signature): tablename = "posts" caption = Field.string(length=250) location = Field.string(length=250) photo = Field.upload() date = Field.datetime() default_values = {} validation = { 'caption': { 'presence': True }, 'location': { 'presence': True } } @after_insert def send_notification(self, fields, rid): # user_id = recover from created post user_id = 5 subscriptions = Subscription.by_user(user_id).select() message = { "title": "Post created", "body": "Este es el cuerpo de la notificación", "openUrl": "/#/" } for subscription in subscriptions: try: webpush(subscription_info=json.loads( json.dumps(subscription.subscription)), data=json.dumps(message), vapid_private_key=VAPID_PRIVATE_KEY, vapid_claims=VAPID_CLAIMS) except WebPushException as ex: if '410 Gone' in str(ex): subscription.delete_record()
class User(AuthUser): tablename = 'auth_users' avatar = Field.upload(autodelete=True) email = Field.string(length=255) has_many( {'suscripciones': 'Suscripcion.user'}, {'posts': 'Post.user'}, ) default_vales = {} validation = { 'email': { 'is': 'email' }, } form_labels = { 'email': 'Correo Electrónico', 'password': '******', 'first_name': 'Nombre', 'last_name': 'Apellido', } fields_rw = {} rest_rw = { # 'id': True, } @rowattr('nombre_completo') def _nombre_completo(self, row): return '%s %s' % (row.last_name.capitalize() or '', row.first_name.capitalize() or '')
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