class PostComment(Model):
    _id = fields.IntegerField()
    _post = fields.ForeignKeyField(to=Post)
    _name = fields.CharField(default_value='anonymous')
    _email = fields.CharField()
    _state = fields.CharField(choices=PostCommentState,
                              default_value=PostCommentState.PENDING)
    _body = fields.CharField()
    _created_at = fields.DatetimeField(auto_now_add=True)
    _modified_at = fields.DatetimeField(auto_now=True)

    class Meta:
        db_table = 'post_comments'

    async def _insert(self):
        # TODO: fix this in kinton
        state = self._state
        self._state = state.value
        await super()._insert()
        self._state = state

    async def _update(self, update_fields=()):
        # TODO: fix this in kinton
        state = self._state
        self._state = state.value
        await super()._update(update_fields)
        self._state = state

    def set_email(self, value):
        value = PostComment._email.parse(value)
        if value:
            validate_email(value)
        self._email = value
class Subscription(Model):
    _id = fields.IntegerField()
    _name = fields.CharField(default_value='anonymous')
    _email = fields.CharField()
    _verified = BooleanField(default_value=False)
    _token = fields.CharField()
    _created_at = fields.DatetimeField(auto_now_add=True)
    _modified_at = fields.DatetimeField(auto_now=True)

    class Meta:
        db_table = 'subscriptions'

    def set_email(self, value):
        value = Subscription._email.parse(value).lower()
        validate_email(value)
        self._email = value
Beispiel #3
0
class Post(Model):
    _id = fields.IntegerField()
    _title = fields.CharField()
    _category = fields.ForeignKeyField(to=Category)
    _author = fields.ForeignKeyField(to=Author)
    _tag = fields.ManyToManyField(to=Tag)
    _created_at = fields.DatetimeField(auto_now_add=True)
    _modified_at = fields.DatetimeField(auto_now=True)
Beispiel #4
0
class Token(Model):
    _id = fields.IntegerField()
    _value = fields.CharField()
    _user = fields.ForeignKeyField(to=User)

    class Meta:
        db_table = 'tokens'

    async def delete(self):
        # TODO: refactor this in kinton
        db_client = DBClient()
        await db_client.update('DELETE FROM tokens WHERE id = $1', self.id)
Beispiel #5
0
class User(Model):
    _id = fields.IntegerField()
    _username = fields.CharField()
    _email = fields.CharField()
    _password = fields.CharField()

    class Meta:
        db_table = 'users'

    def set_password(self, value: str):
        if self._id is None:
            self._password = make_password(value)
        else:
            self._password = value

    def get_password_salt(self):
        return self._password.split('$')[0]

    @property
    def is_authenticated(self) -> bool:
        return True
Beispiel #6
0
class Post(Model):
    _id = fields.IntegerField()
    _title = fields.CharField()
    _title_slug = fields.CharField(immutable=True)
    _body = fields.CharField()
    _description = fields.CharField()
    _state = fields.CharField(choices=PostState, default_value=PostState.DRAFT)
    _category = fields.ForeignKeyField(to=Category)
    _author = fields.ForeignKeyField(to=User)
    _published_at = fields.DatetimeField()
    _created_at = fields.DatetimeField(auto_now_add=True)
    _modified_at = fields.DatetimeField(auto_now=True)

    class Meta:
        db_table = 'posts'

    def set_title(self, value):
        value = str(value)
        self._title = value
        value = unicodedata.normalize('NFKD',
                                      value).encode('ascii',
                                                    'ignore').decode('ascii')
        value = re.sub(r'[^\w\s-]', '', value.lower())
        self._title_slug = re.sub(r'[-\s]+', '-', value).strip('-_')

    async def _insert(self):
        # TODO: fix this in kinton
        state = self._state
        self._state = state.value
        await super()._insert()
        self._state = state

    async def _update(self, update_fields=()):
        # TODO: fix this in kinton
        state = self._state
        self._state = state.value
        await super()._update(update_fields)
        self._state = state
Beispiel #7
0
 class Example(Model):
     _id = fields.IntegerField()
     _value = fields.CharField()
Beispiel #8
0
    class SomeModel(Model):
        _value = fields.CharField()

        class Meta:
            db_table = 'another_table_name'
Beispiel #9
0
class Category(Model):
    _id = fields.IntegerField()
    _name = fields.CharField()

    class Meta:
        db_table = 'categories'
Beispiel #10
0
class Author(Model):
    _id = fields.IntegerField()
    _name = fields.CharField()
Beispiel #11
0
class Category(Model):
    _id = fields.IntegerField()
    _name = fields.CharField()
    _description = fields.CharField()
Beispiel #12
0
class Tag(Model):
    _id = fields.IntegerField()
    _name = fields.CharField()