Esempio n. 1
0
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,
    }
Esempio n. 2
0
class B(Model):
    tablename = "b"

    a = Field()
    b = Field(validation={'len': {'gte': 5}})

    validation = {'a': {'len': {'gte': 5}}}
Esempio n. 3
0
class Len(Model):
    a = Field()
    b = Field()
    c = Field()
    d = Field()

    validation = {
        'a': {
            'len': 5
        },
        'b': {
            'len': {
                'gt': 4,
                'lt': 13
            }
        },
        'c': {
            'len': {
                'gte': 5,
                'lte': 12
            }
        },
        'd': {
            'len': {
                'range': (5, 13)
            }
        }
    }
Esempio n. 4
0
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'
    }})
Esempio n. 5
0
class Person(Model):
    has_many('things', {'features': {
        'via': 'things'
    }}, {'pets': 'Dog.owner'}, 'subscriptions')

    name = Field()
    age = Field.int()
Esempio n. 6
0
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 Subscription(Signature):
    tablename = "subscriptions"
    subscription = Field.json()
    user_id = Field.int()

    defaulf_values = {'user_id': 0}

    @scope('by_user')
    def _by_user(self, user_id):
        return self.user_id == user_id
Esempio n. 8
0
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}
Esempio n. 9
0
class Match(Model):
    a = Field()
    b = Field()

    validation = {
        'a': {
            'match': 'ab'
        },
        'b': {
            'match': {
                'expression': 'ab',
                'strict': True
            }
        }
    }
Esempio n. 10
0
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()
Esempio n. 11
0
class World(Model):
    tablename = "world"
    randomnumber = Field.int()

    @rowmethod('serialize')
    def _serialize(self, row):
        return {'id': row.id, 'randomNumber': row.randomnumber}
Esempio n. 12
0
class Fortune(Model):
    tablename = "fortune"
    message = Field.string()

    @rowmethod('serialize')
    def _serialize(self, row):
        return {'id': row.id, 'message': row.message}
Esempio n. 13
0
class Membership(Model):
    belongs_to('user', 'organization')
    role = Field()

    @scope('admins')
    def filter_admins(self):
        return self.role == 'admin'
Esempio n. 14
0
class Eq(Model):
    a = Field()
    b = Field.int()
    c = Field.float()

    validation = {
        'a': {
            'equals': 'asd'
        },
        'b': {
            'equals': 2
        },
        'c': {
            'not': {
                'equals': 2.4
            }
        }
    }
Esempio n. 15
0
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])
Esempio n. 16
0
class Thing(Model):
    belongs_to('person')

    name = Field()
    color = Field()
    uid = Field(unique=True)

    validation = {
        'name': {
            'presence': True
        },
        'color': {
            'in': ['blue', 'red']
        },
        'uid': {
            'empty': False
        }
    }
Esempio n. 17
0
class User(Model):
    name = Field()
    has_many('memberships', {'organizations': {
        'via': 'memberships'
    }}, {
        'cover_orgs': {
            'via': 'memberships.organization',
            'where': lambda m: m.is_cover == True
        }
    })
Esempio n. 18
0
class Elephant(Animal):
    belongs_to('mouse')
    color = Field()

    @rowattr('pretty')
    def get_pretty(self, row):
        return row.name + " " + row.color

    @before_insert
    def bi2(self, *args, **kwargs):
        pass
Esempio n. 19
0
class Consist(Model):
    email = Field()
    url = Field()
    ip = Field()
    image = Field.upload()
    emails = Field.string_list()
    emailsplit = Field.string_list()

    validation = {
        'email': {
            'is': 'email'
        },
        'url': {
            'is': 'url'
        },
        'ip': {
            'is': 'ip'
        },
        'image': {
            'is': 'image'
        },
        'emails': {
            'is': 'list:email'
        },
        'emailsplit': {
            'is': {
                'list:email': {
                    'splitter': ',;'
                }
            }
        }
    }
Esempio n. 20
0
class Proc(Model):
    a = Field()
    b = Field()
    c = Field()
    d = Field()
    e = Field.password()
    f = Field.password()

    validation = {
        'a': {
            'lower': True
        },
        'b': {
            'upper': True
        },
        'c': {
            'clean': True
        },
        'd': {
            'urlify': True
        },
        'e': {
            'len': {
                'range': (6, 25)
            },
            'crypt': True
        },
        'f': {
            'len': {
                'gt': 5,
                'lt': 25
            },
            'crypt': 'md5'
        }
    }
Esempio n. 21
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()
Esempio n. 22
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 '')
Esempio n. 23
0
class Animal(Model):
    belongs_to('zoo')
    name = Field()

    @rowattr('doublename')
    def get_double_name(self, row):
        return row.name * 2

    @rowattr('pretty')
    def get_pretty(self, row):
        return row.name

    @before_insert
    def bi(self, *args, **kwargs):
        pass

    @before_insert
    def bi2(self, *args, **kwargs):
        pass
Esempio n. 24
0
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
        }
    }
Esempio n. 25
0
class Sample(Model):
    str = Field()
    int = Field.int(default=0)
    float = Field.float(default=0.0)
Esempio n. 26
0
class Sample(Model):
    str = Field()
    int = Field.int()
    float = Field.float()
    datetime = Field.datetime()
Esempio n. 27
0
class Sample(Model):
    str = Field()
Esempio n. 28
0
class Register(Model):
    value = Field.int()
Esempio n. 29
0
class StepOneThing(Model):
    name = Field()
    value = Field.float()
Esempio n. 30
0
class StepFiveThing(Model):
    name = Field()
    value = Field.int()
    created_at = Field.datetime()

    indexes = {'name': True, ('name', 'value'): True}