Пример #1
0
class Fortune(Model):
    tablename = "fortune"
    message = Field.string()

    @rowmethod('serialize')
    def _serialize(self, row):
        return {'id': row.id, 'message': row.message}
Пример #2
0
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()
Пример #3
0
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 '')
Пример #4
0
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