105 lines
2.8 KiB
Python
105 lines
2.8 KiB
Python
#!/usr/bin/env python3
|
|
from flask_marshmallow.sqla import auto_field
|
|
from marshmallow_enum import EnumField
|
|
|
|
from models import VideonUser, StreamResource, StreamResourceTypeEnum, OutputUrls
|
|
from marshm import ma
|
|
from db import db
|
|
from marshmallow import fields
|
|
|
|
|
|
"""
|
|
Marshmallow schemas
|
|
"""
|
|
|
|
|
|
__author__ = "@tormakris"
|
|
__copyright__ = "Copyright 2020, videON Team"
|
|
__module_name__ = "schemas"
|
|
__version__text__ = "1"
|
|
|
|
|
|
class UserSchema(ma.Schema):
|
|
"""
|
|
Parameters:
|
|
- name (string)
|
|
- passowrd (string)
|
|
"""
|
|
|
|
name = fields.String(required=True)
|
|
password = fields.String(required=True)
|
|
|
|
|
|
class UserMetadataSchema(ma.SQLAlchemyAutoSchema):
|
|
"""
|
|
Marshmallow schema generated
|
|
"""
|
|
class Meta:
|
|
model = VideonUser
|
|
exclude = ('timestamp', 'password', 'id',)
|
|
sqla_session = db.session
|
|
creation_date = auto_field("timestamp", dump_only=False)
|
|
streamresources = auto_field
|
|
|
|
|
|
class IngestInputSchema(ma.Schema):
|
|
outputNeighbours = fields.List(fields.UUID(), required=False)
|
|
x = fields.Integer(required=True)
|
|
y = fields.Integer(required=True)
|
|
|
|
|
|
class EncodeInputSchema(ma.Schema):
|
|
inputNeighbour = fields.UUID(required=False, allow_none=True)
|
|
outputNeighbours = fields.List(fields.UUID(), required=False)
|
|
bitrate = fields.Integer(required=False)
|
|
width = fields.Integer(required=False)
|
|
height = fields.Integer(required=False)
|
|
x = fields.Integer(required=True)
|
|
y = fields.Integer(required=True)
|
|
|
|
|
|
class RestreamInputSchema(ma.Schema):
|
|
inputNeighbour = fields.UUID(required=False, allow_none=True)
|
|
outputURLs = fields.List(fields.String(), required=False)
|
|
x = fields.Integer(required=True)
|
|
y = fields.Integer(required=True)
|
|
|
|
|
|
class CoordInputSchema(ma.Schema):
|
|
x = fields.Integer(required=True)
|
|
y = fields.Integer(required=True)
|
|
|
|
|
|
class OutputUrlSchema(ma.SQLAlchemyAutoSchema):
|
|
"""
|
|
Marshmallow schema generated
|
|
"""
|
|
class Meta:
|
|
model = OutputUrls
|
|
fields = ('output_url', )
|
|
sqla_session = db.session
|
|
|
|
|
|
class StreamResourceIdSchema(ma.SQLAlchemyAutoSchema):
|
|
"""
|
|
Marshmallow schema generated
|
|
"""
|
|
class Meta:
|
|
model = StreamResource
|
|
fields = ('id',)
|
|
sqla_session = db.session
|
|
|
|
|
|
class StreamResourceSchema(ma.SQLAlchemyAutoSchema):
|
|
"""
|
|
Marshmallow schema generated
|
|
"""
|
|
class Meta:
|
|
model = StreamResource
|
|
exclude = ('parent_id',)
|
|
sqla_session = db.session
|
|
resource_type = EnumField(StreamResourceTypeEnum, by_value=True, dump_only=True)
|
|
output_urls = ma.Pluck(OutputUrlSchema, field_name='output_url', many=True, dump_only=True)
|
|
inputNeighbour = auto_field('parent_id', dump_only=True)
|
|
children = ma.Pluck(StreamResourceIdSchema, field_name='id', many=True, dump_only=True)
|