Example #1
0
class EventSchema(Schema):
    id = fields.Integer(dump_only=True)
    instatid = fields.Integer()
    match_instatid = fields.Integer()
    player_instatid = fields.Integer()
    player_id = fields.Integer()
    player_name = fields.String()
    team_instatid = fields.Integer()
    team_id = fields.Integer()
    # match_id = fields.Integer()
    order_i = fields.Integer()
    end = fields.Decimal()
    half = fields.Integer()
    pos_x = fields.Decimal()
    pos_y = fields.Decimal()
    type = fields.Integer()
    creation_time = fields.DateTime(dump_only=True)

    # self links
    def get_top_level_links(self, data, many):
        if many:
            self_link = "/data/"
        else:
            self_link = "/data/{}".format(data['id'])
        return {'self': self_link}

    class Meta:
        type_ = 'data'
Example #2
0
class MoviesSchema(Schema):
    id = fields.Integer(dump_only=True)
    title = fields.String()
    year = fields.Integer()
    rated = fields.String()
    released = fields.String()
    runtime = fields.String()
    genre = fields.String()
    director = fields.String()
    writer = fields.String()
    casts = fields.String()
    plot = fields.String()
    language = fields.String()
    country = fields.String()
    awards = fields.String()
    poster = fields.String()
    rating = fields.Float()
    votes = fields.String()
    imdbid = fields.String()
    kind = fields.String()
    boxoffice = fields.String()
    production = fields.String()
    website = fields.String()

    actors = fields.Nested(ActorsSchema, many=True, only=('id', 'name'))

    class Meta:
        type_ = 'movie'
        ordered = True
Example #3
0
class WorksheetSchema(Schema):
    id = fields.String(validate=validate_uuid, attribute='uuid')
    uuid = fields.String(attribute='uuid')  # for backwards compatibility
    name = fields.String(validate=validate_name)
    owner = fields.Relationship(include_resource_linkage=True,
                                type_='users',
                                attribute='owner_id')
    title = fields.String(validate=validate_ascii)
    frozen = fields.DateTime(allow_none=True)
    is_anonymous = fields.Bool()
    tags = fields.List(fields.String(validate=validate_ascii))
    group_permissions = fields.Relationship(include_resource_linkage=True,
                                            type_='worksheet-permissions',
                                            id_field='id',
                                            many=True)
    items = fields.Relationship(include_resource_linkage=True,
                                type_='worksheet-items',
                                id_field='id',
                                many=True)
    last_item_id = fields.Integer(dump_only=True)

    # Bundle permission of the authenticated user for convenience, read-only
    permission = fields.Integer()
    permission_spec = PermissionSpec(attribute='permission')

    class Meta:
        type_ = 'worksheets'
Example #4
0
class EventInvoiceSchema(SoftDeletionSchema):
    """
    Event Invoice API Schema based on event invoice model
    """
    class Meta:
        type_ = 'event-invoice'
        self_view = 'v1.event_invoice_detail'
        self_view_kwargs = {'id': '<id>'}
        inflect = dasherize

    id = fields.Str(dump_only=True)
    identifier = fields.Str(allow_none=True)
    amount = fields.Float(validate=lambda n: n >= 0, allow_none=True)
    address = fields.Str(allow_none=True)
    city = fields.Str(allow_none=True)
    state = fields.Str(allow_none=True)
    country = fields.Str(validate=validate.OneOf(choices=PAYMENT_COUNTRIES), allow_none=True)
    zipcode = fields.Str(allow_none=True)
    created_at = fields.DateTime(allow_none=True)
    completed_at = fields.DateTime(default=None)
    transaction_id = fields.Str(allow_none=True)
    paid_via = fields.Str(validate=validate.OneOf(
        choices=["free", "stripe", "paypal", "transfer", "onsite", "cheque"]), allow_none=True)
    payment_mode = fields.Str(allow_none=True)
    brand = fields.Str(allow_none=True)
    exp_month = fields.Integer(validate=lambda n: 0 <= n <= 12, allow_none=True)
    exp_year = fields.Integer(validate=lambda n: n >= 2015, allow_none=True)
    last4 = fields.Str(allow_none=True)
    stripe_token = fields.Str(allow_none=True)
    paypal_token = fields.Str(allow_none=True)
    status = fields.Str(validate=validate.OneOf(choices=["paid", "due"]), allow_none=True)
    invoice_pdf_url = fields.Url(allow_none=True)
    user = Relationship(attribute='user',
                        self_view='v1.event_invoice_user',
                        self_view_kwargs={'id': '<id>'},
                        related_view='v1.user_detail',
                        related_view_kwargs={'event_invoice_id': '<id>'},
                        schema='UserSchemaPublic',
                        type_='user')
    order = Relationship(attribute='order',
                         self_view='v1.event_invoice_order',
                         self_view_kwargs={'id': '<id>'},
                         related_view='v1.order_detail',
                         related_view_kwargs={'id': '<id>'},
                         schema='OrderSchema',
                         type_='order')
    event = Relationship(attribute='event',
                         self_view='v1.event_invoice_event',
                         self_view_kwargs={'id': '<id>'},
                         related_view='v1.event_detail',
                         related_view_kwargs={'event_invoice_id': '<id>'},
                         schema='EventSchemaPublic',
                         type_='event')
    discount_code = Relationship(attribute='discount_code',
                                 self_view='v1.event_invoice_discount_code',
                                 self_view_kwargs={'id': '<id>'},
                                 related_view='v1.discount_code_detail',
                                 related_view_kwargs={'event_invoice_id': '<id>'},
                                 schema='DiscountCodeSchemaPublic',
                                 type_='discount-code')
Example #5
0
class WorksheetPermissionSchema(Schema):
    id = fields.Integer(as_string=True, dump_only=True)
    worksheet = fields.Relationship(
        include_resource_linkage=True,
        attribute='object_uuid',
        type_='worksheets',
        load_only=True,
        required=True,
    )
    group = fields.Relationship(include_resource_linkage=True,
                                attribute='group_uuid',
                                type_='groups',
                                required=True)
    group_name = fields.String(dump_only=True)  # for convenience
    permission = fields.Integer(validate=lambda p: 0 <= p <= 2)
    permission_spec = PermissionSpec(attribute='permission')  # for convenience

    @validates_schema
    def check_permission_exists(self, data):
        if 'permission' not in data:
            raise ValidationError(
                "One of either permission or permission_spec must be provided."
            )

    class Meta:
        type_ = 'worksheet-permissions'
Example #6
0
class OrderArticleSchema(Schema):
    class Meta:
        type_="orderarticle"
        self_view_many="api_v1.orderarticle_list"
        self_view="api_v1.orderarticle_detail"
        self_view_kwargs={"id":"<id>"}

    id=fields.Integer(as_string=True, dump_only=True)
    order_id= fields.Integer()
    article_id=fields.Integer()
    item_able=fields.Integer()
    items=fields.Integer(load_only=True)
    order=Relationship(
        related_view="api_v1.order_detail",
        related_view_kwargs={"orderarticle_id":"<id>"},
        self_view="api_v1.orderarticle_order",
        self_view_kwargs={"id":"<id>"},
        schema="OrderSchema",
        type_="order"
    )
    article=Relationship(
        attribute="article_able",
        related_view="api_v1.article_detail",
        related_view_kwargs={"orderarticle_id":"<id>"},
        self_view="api_v1.orderarticle_article",
        self_view_kwargs={"id":"<id>"},
        schema="ArticleSchema",
        type_="article"
    )
Example #7
0
class SettingSchemaPublic(Schema):
    """
    Public Api schema for settings Model
    """
    class Meta:
        """
        Meta class for setting Api Schema
        """
        type_ = 'setting'
        self_view = 'v1.setting_detail'
        self_view_kwargs = {'id': '<id>'}
        inflect = dasherize

    id = fields.Str(dump_only=True)

    # Name of the application. (Eg. Event Yay!, Events City)
    app_name = fields.Str(allow_none=True)

    # Tagline for the application. (Eg. Event Management and Ticketing, Home)
    tagline = fields.Str(allow_none=True)

    # Order Expiry Time
    order_expiry_time = fields.Integer(allow_none=False, default=15, validate=lambda n: 1 <= n <= 60)

    # Maximum number of complex custom fields allowed for a given form
    max_complex_custom_fields = fields.Integer(allow_none=False, default=30, validate=lambda n: 1 <= n <= 30)

    # Google Analytics
    analytics_key = fields.Str(allow_none=True)

    # FB
    fb_client_id = fields.Str(allow_none=True)

    #
    # Social links
    #
    google_url = fields.Str(allow_none=True)
    github_url = fields.Str(allow_none=True)
    twitter_url = fields.Str(allow_none=True)
    support_url = fields.Str(allow_none=True)
    facebook_url = fields.Str(allow_none=True)
    youtube_url = fields.Str(allow_none=True)

    # Url of Frontend
    frontend_url = fields.Url(allow_none=True)

    #
    # Cookie Policy
    #
    cookie_policy = fields.Str(allow_none=True)
    cookie_policy_link = fields.Str(allow_none=True)

    #
    # Online Payment Flags
    #
    is_paytm_activated = fields.Bool(default=False)
    is_paypal_activated = fields.Bool(dump_only=True)
    is_stripe_activated = fields.Bool(dump_only=True)
    is_omise_activated = fields.Bool(dump_only=True)
    is_alipay_activated = fields.Bool(dump_only=True)
Example #8
0
class RouteSchema(Schema):

    not_blank = validate.Length(min=1, error='Field cannot be blank')
    # add validate=not_blank in required fields
    id = fields.Integer(required=True)
    name = fields.String(required=True)
    length_in_meters = fields.Float(required=True)
    elevation_gain_in_meters = fields.Float(required=True)
    start_lat = fields.Float(required=True)
    start_lon = fields.Float(required=True)
    end_lat = fields.Float(required=True)
    end_lon = fields.Float(required=True)
    route_type = fields.Integer(required=True)
    sub_type = fields.Integer(required=True)
    popularity = fields.Float(required=True)

    # self links
    def get_top_level_links(self, data, many):
        if many:
            self_link = "/routes/"
        else:
            self_link = "/routes/{}".format(data['id'])
        return {'self': self_link}
        #The below type object is a resource identifier object as per http://jsonapi.org/format/#document-resource-identifier-objects
    class Meta:
        type_ = 'routes'
Example #9
0
class AnnotationSchema(BaseAnnotationSchema):
    required = fields.Boolean(default=False)
    ignore = fields.Boolean(default=False)
    ignore_beneath = fields.Boolean(default=False)
    variant = fields.Integer(default=False)
    slice = fields.List(fields.Integer())
    pre_text = fields.Str()
    post_text = fields.Str()
    selection_mode = fields.Str()

    field = fields.Relationship(
        related_url='/api/projects/{project_id}/schemas/{schema_id}/fields/'
        '{field_id}',
        related_url_kwargs={
            'project_id': '<project_id>',
            'schema_id': '<schema_id>',
            'field_id': '<field.id>'
        },
        type_='fields',
        include_resource_linkage=True)
    extractors = fields.Relationship(
        related_url='/api/projects/{project_id}/extractors',
        related_url_kwargs={'project_id': '<project_id>'},
        many=True,
        include_resource_linkage=True,
        type_='extractors')

    class Meta:
        type_ = 'annotations'
Example #10
0
class DeliverySchema(Schema):

    dlvr_id = fields.Integer(dump_only=True)
    svc_id = fields.Integer()
    data_id = fields.Integer()
    dlvr_name = fields.String()
    dlvr_type = fields.String()
    due_tm = fields.String(validate=is_yn)
    hourly_yn = fields.String(validate=is_yn)
    daily_yn = fields.String(validate=is_yn)
    weekly_term = fields.Integer(validate=is_weekday)
    monthly_dt = fields.Integer(validate=is_monthday)
    monitor_yn = fields.String(validate=is_yn)
    extra1 = fields.String()
    extra2 = fields.String()
    extra3 = fields.String()
    last_upd_dtm = fields.DateTime(format='%Y-%m-%d %H:%M:%S')

    #self links
    def get_top_level_links(self, data, many):
        if many:
            self_link = "/api/delivery"
        else:
            self_link = "/api/delivery/{}".format(data['dlvr_id'])
        return {'self': self_link}

    class Meta:
        type_ = 'delivery'
Example #11
0
class CommentsSchema(Schema):

    not_blank = validate.Length(min=1, error='Field cannot be blank')
    # add validate=not_blank in required fields
    id = fields.Integer(dump_only=True)

    post_id = fields.Integer(required=True)
    author_name = fields.String(validate=not_blank)
    author_email = fields.String(validate=not_blank)
    author_url = fields.String(validate=not_blank)
    created_on = fields.DateTime(required=True)
    content = fields.String(validate=not_blank)
    karma = fields.Integer(required=True)
    approved = fields.String(validate=not_blank)
    agent = fields.String(validate=not_blank)
    type = fields.String(validate=not_blank)
    parent = fields.Integer(required=True)

    # self links
    def get_top_level_links(self, data, many):
        if many:
            self_link = "/comments/"
        else:
            self_link = "/comments/{}".format(data['id'])
        return {'self': self_link}

    class Meta:
        type_ = 'comments'
Example #12
0
class GeokretSchemaPublic(Schema):
    class Meta:
        type_ = 'geokret'
        self_view = 'v1.geokret_details'
        self_view_kwargs = {'id': '<id>'}
        self_view_many = 'v1.geokrety_list'
        inflect = dasherize
        ordered = True

    id = fields.Str(dump_only=True)
    name = fields.Str(required=True)
    description = fields.Str()
    missing = fields.Boolean(dump_only=True)
    distance = fields.Integer(dump_only=True)
    caches_count = fields.Integer(dump_only=True)
    pictures_count = fields.Integer(dump_only=True)
    average_rating = fields.Float(dump_only=True)
    created_on_date_time = fields.Date(dump_only=True)
    updated_on_date_time = fields.Date(dump_only=True)

    owner = Relationship(attribute='owner',
                         self_view='v1.geokret_owner',
                         self_view_kwargs={'id': '<id>'},
                         related_view='v1.user_details',
                         related_view_kwargs={'id': '<owner_id>'},
                         schema='UserSchemaPublic',
                         type_='user')

    holder = Relationship(attribute='holder',
                          self_view='v1.geokret_holder',
                          self_view_kwargs={'id': '<id>'},
                          related_view='v1.user_details',
                          related_view_kwargs={'id': '<holder_id>'},
                          schema='UserSchemaPublic',
                          type_='user')
Example #13
0
class PinSchema(Schema):
    id = fields.Str(dump_only=True)
    number = fields.Integer(required=True)
    name = fields.String(attribute='name')
    state = fields.Integer()
    sequences = fields.Relationship(
        related_url='/api/pins/{pin_id}/sequences',
        related_url_kwargs={'pin_id': '<id>'},
        # Include resource linkage
        many=True,
        include_data=True,
        type_='sequences',
        schema='SequenceSchema')

    @post_load
    def make_pin(self, data):
        return Pin(**data)

    def handle_error(self, exc, data):
        raise ValidationError(
            'An error occurred with input: {0} \n {1}'.format(
                data, exc.messages))

    class Meta:
        type_ = 'pins'
        strict = True
Example #14
0
class PlantingSchema(Schema):
    class Meta:
        type_ = 'plantings'
        self_view = 'planting_detail'
        self_view_kwargs = {'id': '<id>'}
        self_view_many = 'planting_list'

    id = fields.Str(dump_only=True)
    created = fields.Date()
    modified = fields.Date()
    seedsstarted = fields.Integer(attribute='seeds_started')
    dateseedsstarted = fields.Date(attribute='date_seeds_started')
    startingmedium = fields.String(attribute='starting_medium')
    seedssprouted = fields.Integer(attribute='seeds_sprouted')
    datefirstseedssprouted = fields.Date(attribute='date_first_seeds_sprouted')
    sproutsplanted = fields.Integer(attribute='sprouts_planted')
    datesproutsplanted = fields.Date(attribute='date_sprouts_planted')
    plantssurvived = fields.Integer(attribute='plants_survived')
    datenextgenerationseedscollected = fields.Date(
        attribute='date_next_generation_seeds_collected')
    plantgeneration = Relationship(attribute='plant_generation',
                                   self_view='planting_plantgeneration',
                                   self_view_kwargs={'id': '<id>'},
                                   related_view='plantgeneration_detail',
                                   related_view_kwargs={'id': '<id>'},
                                   schema='PlantGenerationSchema',
                                   type_='plantgenerations')
    plantingphysicalsource = Relationship(
        attribute='planting_physical_source',
        self_view='planting_plantingphysicalsource',
        self_view_kwargs={'id': '<id>'},
        related_view='plantingphysicalsource_detail',
        related_view_kwargs={'id': '<id>'},
        schema='PlantingPhysicalSourceSchema',
        type_='plantingphysicalsources')
Example #15
0
class AuthenticatedUserSchema(UserSchema):
    email = fields.String()
    time_quota = fields.Integer()
    time_used = fields.Integer()
    disk_quota = fields.Integer()
    disk_used = fields.Integer()
    last_login = fields.LocalDateTime("%c")
Example #16
0
class VirtualMachinesSchema(Schema):
    id = fields.Str(dump_only=True)
    name = fields.Str()
    state = fields.Str()
    cpus = fields.Integer()
    memory = fields.Integer()
    xml = fields.Str()

    class Meta:
        type_ = 'virtual-machines'
        self_view = 'virtual_machine_detail'
        self_view_kwargs = {'id': '<id>'}
        self_view_many = 'virtual_machine_list'
        strict = True
        include_resource_linkage = True
        include_resource_relationship = True
        #~ inflect = dasherize

    hypervisor = Relationship(
        attribute='hypervisor',
        self_view='virtual_machine_hypervisor',
        self_view_kwargs={'id': '<id>'},
        related_view='hypervisor_detail',
        related_view_kwargs={'virtual_machine_id': '<id>'},
        include_resource_linkage=True,
        include_resource_relationship=True,
        schema='HypervisorsSchema',
        type_='hypervisor')
Example #17
0
class ArticleSchema(Schema):
    class Meta:
        type_="article" 
        self_view="api_v1.article_detail"
        self_view_kwargs={"id":"<id>"}
        self_viwe_many="api_v1.article_list"
    id=fields.Integer(as_string=True, dump_only=True)
    name=fields.String()
    price=fields.Float()
    iva=fields.Float()
    description=fields.String()
    image=fields.String()
    stock=fields.Integer()
    CategoryId=fields.Integer(load_only=True)
    category=Relationship(
        related_view="api_v1.category_detail",
        related_view_kwargs={"article_id":"<id>"},
        self_view="api_v1.article_category",
        self_view_kwargs={"id":"<id>"},
        schema="CategorySchema",
        type_="category"
    )
    orderarticle=Relationship(
        attribute="order_association",
        related_view="api_v1.orderarticle_list",
        related_view_kwargs={"article_id":"<id>"},
        self_view="api_v1.article_assc",
        self_view_kwargs={"id":"<id>"},
        schema="OrderArticleSchema",
        type_="orderarticle"
    )
Example #18
0
class RunSchema(Schema):
    # Dump only can only be applied to auto IDs
    id = fields.Integer(dump_only=True)
    user_id = fields.String(load_only=True)
    start_time = fields.DateTime(required=True)
    end_time = fields.DateTime(required=True)
    date = fields.String(dump_only=True)
    # Distance in meters
    distance = fields.Integer(required=True, as_string=True)
    start_lat = fields.Float(required=True, as_string=True)
    start_lng = fields.Float(required=True, as_string=True)
    end_lat = fields.Float(required=True, as_string=True)
    end_lng = fields.Float(required=True, as_string=True)
    weather_info = fields.String(dump_only=True)

    class Meta:
        type_ = 'run'
        self_view = 'run_detail'
        # API view url param -> Schema
        self_view_kwargs = {'id': '<id>'}
        self_view_many = 'runs_list'

    user = Relationship(attribute='user',
                        related_view='user_detail',
                        related_view_kwargs={'id': '<user.id>'},
                        schema='UserSchema',
                        type_='user')
Example #19
0
class CommentSchema(Schema):
    class Meta:
        type_ = 'comments'
        self_view = 'comment_detail'
        self_view_kwargs = {'id': '<id>'}
        self_view_many = 'comment_list'

    id = fields.Integer(dump_only=True)
    created_at = fields.DateTime(dump_only=True)
    updated_at = fields.DateTime(dump_only=True)
    text = fields.String(required=True)
    rating = fields.Integer(dump_only=True)
    post = Relationship(attribute='post',
                        self_view='comment_post',
                        self_view_kwargs={'id': '<id>'},
                        related_view='post_detail',
                        related_view_kwargs={'id': '<id>'},
                        schema='PostSchema',
                        type_='posts')
    user = Relationship(attribute='user',
                        self_view='comment_user',
                        self_view_kwargs={'id': '<id>'},
                        related_view='user_detail',
                        related_view_kwargs={'id': '<id>'},
                        schema='UserSchema',
                        type_='users')
Example #20
0
class PostsSchema(Schema):

    not_blank = validate.Length(min=1, error='Field cannot be blank')
    # add validate=not_blank in required fields
    id = fields.Integer(dump_only=True)

    author = fields.String(validate=not_blank)
    title = fields.String(validate=not_blank)
    slug = fields.String(validate=not_blank)
    content = fields.String(validate=not_blank)
    date = fields.String(dump_only=True)
    modified = fields.String(dump_only=True)
    excerpt = fields.String(validate=not_blank)
    status = fields.String(validate=not_blank)
    type = fields.String(validate=not_blank)
    path = fields.String()
    parent = fields.Integer(required=True)
    #terms  = fields.Nested(TermsSchema, many=True)
    #term_ids = fields.List(fields.Integer())
    term_ids = fields.Raw()

    # self links
    def get_top_level_links(self, data, many):
        if many:
            self_link = "/posts/"
        else:
            self_link = "/posts/{}".format(data['id'])
        return {'self': self_link}

    class Meta:
        type_ = 'posts'
Example #21
0
class SCEPConfigFlatSchema(FlatSchema):
    source_type = fields.String()
    url = fields.Url(relative=False, schemes=['http', 'https'], required=True)
    challenge_enabled = fields.Boolean()
    ca_fingerprint = fields.String()
    subject = fields.String()
    key_size = fields.Integer()
    key_type = fields.String(dump_only=True)
    key_usage = fields.Integer()
    subject_alt_name = fields.String()
    retries = fields.Integer()
    retry_delay = fields.Integer()
    certificate_renewal_time_interval = fields.Integer()

    @post_load
    def make_scepconfig(self, data: dict) -> SCEPConfig:
        """Construct a model from a parsed JSON schema."""
        rows = db.session.query(SCEPConfig).count()

        if rows == 1:
            db.session.query(SCEPConfig).update(data)
            o = db.session.query(SCEPConfig).first()
        else:
            o = SCEPConfig(**data)
            db.session.add(o)

        return o
Example #22
0
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")
Example #23
0
class PersonSchema(Schema):
    id        = fields.Integer(required=True, dump_only=True)
    age       = fields.Integer()

    class Meta:
        type_ = 'person'
        self_view = 'api.person_detail'
        self_view_kwargs = {'id': '<id>'}
        self_view_many = 'api.person_list'
Example #24
0
class PrioritySchema(Schema):
    class Meta:
        type_ = 'priority'
        self_view = 'priority_detail'
        self_view_kwargs = {'id': '<id>'}
        self_view_many = 'priority_list'

    id = fields.Integer(as_string=True, dump_only=True)
    priority = fields.Integer(requried=True)
Example #25
0
class ScrOcorrenciaEdiSchema(Schema):
    class Meta:
        type_ = 'scr_ocorrencia_edi'
        self_view = 'scr_ocorrencia_edi_detail'
        self_view_kwargs = {'id': '<id>'}
        self_view_many = 'scr_ocorrencia_edi_list'

    id = fields.Integer(as_string=True, dump_only=True)
    codigo_edi = fields.Integer(required=True, as_string=True)
    ocorrencia = StringTrim(required=True)
Example #26
0
class ArtworkSchema(Schema):
    class Meta:
        type_ = 'artwork'
        self_view = 'artwork_one'
        self_view_kwargs = {'id': '<id>'}
        self_view_many = 'artwork_many'

    id = fields.Integer()
    title = fields.Str(required=True)
    artist_id = fields.Integer(required=True)
Example #27
0
class RoleSchema(Schema):
    class Meta:
        type_ = 'role'
        self_view = 'role_one'
        self_view_kwargs = {'id': '<id>'}
        self_view_many = 'role_many'

    id = fields.Integer()
    name = fields.Str(required=True)
    player_id = fields.Integer(required=True)
Example #28
0
class RatingsSchema(Schema):
    id = fields.Integer(dump_only=True)
    user_id = fields.Integer(dump_only=True)
    movie_id = fields.Integer(dump_only=True)
    movie = fields.Nested(MoviesSchema, only=('id', 'title', 'poster', 'year'))
    ratings = fields.Float(dump_to='rating')

    class Meta:
        type_ = 'rating'
        ordered = True
Example #29
0
class SwipeSchema(Schema):
    id = fields.Integer(required=True, dump_only=True)
    age = fields.Integer()
    person_id = fields.Integer(required=True)

    class Meta:
        type_ = 'swipe'
        self_view = 'api.swipe'
        self_view_kwargs = {'id': '<id>'}
        self_view_many = 'api.swipe_list'
Example #30
0
class EventInvoiceSchema(SoftDeletionSchema):
    """
    Event Invoice API Schema based on event invoice model
    """
    class Meta:
        type_ = 'event-invoice'
        self_view = 'v1.event_invoice_detail'
        self_view_kwargs = {'id': '<id>'}
        inflect = dasherize

    id = fields.Str(dump_only=True)
    identifier = fields.Str(allow_none=True)
    amount = fields.Float(validate=lambda n: n >= 0, allow_none=True)
    created_at = fields.DateTime(allow_none=True)
    issued_at = fields.DateTime(dump_only=True)
    due_at = fields.DateTime(dump_only=True)
    completed_at = fields.DateTime(default=None, allow_none=True)
    transaction_id = fields.Str(allow_none=True)
    paid_via = fields.Str(
        validate=validate.OneOf(choices=[
            "free", "stripe", "paypal", "transfer", "onsite", "cheque"
        ]),
        allow_none=True,
    )
    payment_mode = fields.Str(allow_none=True)
    brand = fields.Str(allow_none=True)
    exp_month = fields.Integer(validate=lambda n: 0 <= n <= 12,
                               allow_none=True)
    exp_year = fields.Integer(validate=lambda n: n >= 2015, allow_none=True)
    last4 = fields.Str(allow_none=True)
    stripe_token = fields.Str(allow_none=True)
    paypal_token = fields.Str(allow_none=True)
    status = fields.Str(
        validate=validate.OneOf(choices=[
            "paid", "due", "refunding", "refunded", "failed", "resolved"
        ]),
        allow_none=True,
    )
    invoice_pdf_url = fields.Url(allow_none=True)
    user = Relationship(
        self_view='v1.event_invoice_user',
        self_view_kwargs={'id': '<id>'},
        related_view='v1.user_detail',
        related_view_kwargs={'event_invoice_id': '<id>'},
        schema='UserSchemaPublic',
        type_='user',
    )
    event = Relationship(
        self_view='v1.event_invoice_event',
        self_view_kwargs={'id': '<id>'},
        related_view='v1.event_detail',
        related_view_kwargs={'event_invoice_id': '<id>'},
        schema='EventSchemaPublic',
        type_='event',
    )