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'
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
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'
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')
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'
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" )
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)
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'
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'
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'
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'
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')
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
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')
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")
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')
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" )
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')
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')
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'
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
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 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'
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)
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)
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)
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)
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
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'
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', )