Beispiel #1
0
    type = fields.String(attribute="discriminator")
    title = fields.String(attribute='title')
    slug = fields.String(attribute='slug')
    text = fields.String(attribute='cooked')

    class Meta:
        type_ = TOPIC_ID  # Required

    author = IncludingHyperlinkRelated(BaseUser,
                                       '/users/{user_id}',
                                       url_kwargs={'user_id': '<owner_id>'},
                                       many=False, include_data=True,
                                       type_='user')

topic = TopicSchema()
topic_paged = makePaginationSchema(TopicSchema)()

ObjectField.registry[TOPIC_ID] = TopicSchema


class LinkSchema(Schema):
    id = fields.Integer()
    created_at = fields.DateTime()
    owner_id = fields.Integer()
    type = fields.String(attribute="discriminator")
    title = fields.String(attribute='title')
    slug = fields.String(attribute='slug')
    url = fields.String(attribute='url')

    class Meta:
        type_ = LINK_ID  # Required
Beispiel #2
0
from beavy.common.paging_schema import makePaginationSchema
from beavy.schemas.object import ObjectField
# , Schema, fields
from beavy.common.including_hyperlink_related import IncludingHyperlinkRelated
from marshmallow_jsonapi import Schema, fields
from beavy.schemas.user import BaseUser

from .models import PM_ID


class PrivateMessageSchema(Schema):
    id = fields.Integer()
    created_at = fields.DateTime()
    title = fields.String()
    type = fields.String(attribute="discriminator")

    class Meta:
        type_ = 'private_message'  # Required

    participants = IncludingHyperlinkRelated(BaseUser,
                                             '/users/{user_id}',
                                             url_kwargs={'user_id': '<id>'},
                                             many=True, include_data=True,
                                             type_='user')


pm = PrivateMessageSchema()
pm_paged = makePaginationSchema(PrivateMessageSchema)()

ObjectField.registry[PM_ID] = PrivateMessageSchema
Beispiel #3
0
from marshmallow_jsonapi import Schema, fields
from beavy.schemas.user import BaseUser

from .models import COMMENT_ID


class CommentSchema(Schema):
    id = fields.Integer()
    created_at = fields.DateTime()
    owner_id = fields.Integer()
    type = fields.String(attribute="discriminator")
    text = fields.String(attribute='cooked')
    belongs_to_id = fields.Integer()
    in_reply_to_id = fields.Integer()

    class Meta:
        type_ = COMMENT_ID  # Required

    author = IncludingHyperlinkRelated(BaseUser,
        '/users/{user_id}',
        url_kwargs={'user_id': '<owner_id>'},
        many=False, include_data=True,
        type_='user'
    )


comment = CommentSchema()
comment_paged = makePaginationSchema(CommentSchema)()

ObjectField.registry[COMMENT_ID] = CommentSchema
Beispiel #4
0
#     subject = fields.Nested(BaseUser)
#     created_at = fields.DateTime()

# ActivityField.registry['like'] = BaseLike


class UserLike(Schema):
    id = fields.Integer()
    created_at = fields.DateTime()

    TUPLE_KEY = 'Like'
    REMAP_TUPLE_KEYS = ('Object', )

    class Meta:
        type_ = "like"

    @pre_dump
    def extract_items(self, item):
        if isinstance(item, tuple):
            tup = item
            item = getattr(item, self.TUPLE_KEY)
            for key in self.REMAP_TUPLE_KEYS:
                setattr(item, key.lower(), getattr(tup, key))

        return item

    object = IncludingHyperlinkRelated(ObjectField())


user_likes_paged = makePaginationSchema(UserLike)(many=False)
Beispiel #5
0
#     created_at = fields.DateTime()

# ActivityField.registry['like'] = BaseLike


class UserLike(Schema):
    id = fields.Integer()
    created_at = fields.DateTime()

    TUPLE_KEY = 'Like'
    REMAP_TUPLE_KEYS = ('Object', )

    class Meta:
        type_ = "like"

    @pre_dump
    def extract_items(self, item):
        if isinstance(item, tuple):
            tup = item
            item = getattr(item, self.TUPLE_KEY)
            for key in self.REMAP_TUPLE_KEYS:
                setattr(item, key.lower(), getattr(tup, key))

        return item

    object = IncludingHyperlinkRelated(ObjectField())



user_likes_paged = makePaginationSchema(UserLike)(many=False)
Beispiel #6
0
# , Schema, fields
from beavy.common.including_hyperlink_related import IncludingHyperlinkRelated
from marshmallow_jsonapi import Schema, fields
from beavy.schemas.user import BaseUser

from .models import PM_ID


class PrivateMessageSchema(Schema):
    id = fields.Integer()
    created_at = fields.DateTime()
    title = fields.String()
    type = fields.String(attribute="discriminator")


    class Meta:
        type_ = 'private_message'  # Required

    participants = IncludingHyperlinkRelated(BaseUser,
        '/users/{user_id}',
        url_kwargs={'user_id': '<id>'},
        many=True, include_data=True,
        type_='user'
    )


pm = PrivateMessageSchema()
pm_paged = makePaginationSchema(PrivateMessageSchema)()

ObjectField.registry[PM_ID] = PrivateMessageSchema
Beispiel #7
0
# , Schema, fields
from beavy.common.including_hyperlink_related import IncludingHyperlinkRelated
from marshmallow_jsonapi import Schema, fields
from beavy.schemas.user import BaseUser

from .models import COMMENT_ID


class CommentSchema(Schema):
    id = fields.Integer()
    created_at = fields.DateTime()
    owner_id = fields.Integer()
    type = fields.String(attribute="discriminator")
    text = fields.String(attribute="cooked")
    belongs_to_id = fields.Integer()
    in_reply_to_id = fields.Integer()

    class Meta:
        type_ = COMMENT_ID  # Required

    author = IncludingHyperlinkRelated(
        BaseUser, "/users/{user_id}", url_kwargs={"user_id": "<owner_id>"}, many=False, include_data=True, type_="user"
    )


comment = CommentSchema()
comment_paged = makePaginationSchema(CommentSchema)()

ObjectField.registry[COMMENT_ID] = CommentSchema
Beispiel #8
0
from beavy.common.paging_schema import makePaginationSchema
from beavy.common.morphing_schema import MorphingSchema
from marshmallow_jsonapi import Schema, fields

from .user import BaseUser


class BaseObject(Schema):
    class Meta:
        type_ = "object"

    id = fields.Integer()
    created_at = fields.DateTime()
    owner = fields.Nested(BaseUser)
    belongs_to_id = fields.Integer()  # don't leak
    type = fields.String(attribute="discriminator")


class ObjectField(MorphingSchema):
    FALLBACK = BaseObject
    registry = {}


class ObjectSchema(ObjectField, Schema):
    pass


objects_paged = makePaginationSchema(ObjectSchema)()