class Signature(Model): refers_to({'created_by': 'User'}, {'updated_by': 'User'}) created_at = Field.datetime() updated_at = Field.datetime() #~ validation = { #~ 'created_by': {'allow': 'empty'}, #~ 'updated_by': {'allow': 'empty'}, #~ } default_values = { 'created_by': lambda: get_user(), 'updated_by': lambda: get_user(), 'created_at': lambda: local_now(), 'updated_at': lambda: local_now(), } update_values = { 'updated_by': lambda: get_user(), 'updated_at': lambda: local_now(), } fields_rw = { 'created_by': False, 'updated_by': False, 'created_at': False, 'updated_at': False, }
class Comment(Model): belongs_to('user', 'post') text = Field.text() date = Field.datetime() default_values = {'user': lambda: session.auth.user.id, 'date': now} validation = {'text': {'presence': True}} fields_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': now} validation = {'title': {'presence': True}, 'text': {'presence': True}} fields_rw = {'user': False, 'date': False}
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 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 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 Sample(Model): str = Field() int = Field.int() float = Field.float() datetime = Field.datetime()
class StepFiveThing(Model): name = Field() value = Field.int() created_at = Field.datetime() indexes = {'name': True, ('name', 'value'): True}
class Appointment(Model): belongs_to('patient', 'doctor') date = Field.datetime()