Add marshmallow schemas and and completed base routes
parent
a02d696f9f
commit
7285ed4a00
@ -1 +1,2 @@
|
|||||||
from .app import application_factory
|
from .app import application_factory
|
||||||
|
from .app import application_factory
|
||||||
|
@ -1,13 +1,44 @@
|
|||||||
|
import datetime as dt
|
||||||
|
|
||||||
from marshmallow import Schema, fields
|
from marshmallow import Schema, fields
|
||||||
|
|
||||||
|
|
||||||
|
class PassDateTime(fields.DateTime):
|
||||||
|
def _deserialize(self, value, attr, data):
|
||||||
|
if isinstance(value, dt.datetime):
|
||||||
|
return value
|
||||||
|
return super()._deserialize(value, attr, data)
|
||||||
|
|
||||||
|
|
||||||
class NewsSourceSchema(Schema):
|
class NewsSourceSchema(Schema):
|
||||||
id = fields.Int(dump_only=True)
|
id = fields.Int(dump_only=True)
|
||||||
created_date = fields.DateTime(dump_only=True)
|
created_date = fields.DateTime(dump_only=True)
|
||||||
modified_date = fields.DateTime()
|
modified_date = fields.DateTime(dump_only=True)
|
||||||
url = fields.URL()
|
url = fields.URL()
|
||||||
source_name = fields.Str(required=True, error_messages={'required': 'NewsSource name is a required field'})
|
source_name = fields.Str(required=True, error_messages={'required': 'NewsSource name is a required field'})
|
||||||
source_type = fields.Str(required=True, error_messages={'required': 'NewsSource tyoe is a required field'})
|
source_type = fields.Str(required=True, error_messages={'required': 'NewsSource type is a required field'})
|
||||||
|
|
||||||
|
# TODO add support for Categories
|
||||||
|
|
||||||
|
class Meta:
|
||||||
|
ordered = True
|
||||||
|
|
||||||
|
|
||||||
|
class NewsArticleSchema(Schema):
|
||||||
|
id = fields.Int(dump_only=True)
|
||||||
|
created_date = fields.DateTime(dump_only=True)
|
||||||
|
modified_date = fields.DateTime(dump_only=True)
|
||||||
|
news_source_id = fields.Int(required=True, error_messages={
|
||||||
|
'required': 'A NewsArticle must include a NewsSource identified by NewsSource.id'}
|
||||||
|
)
|
||||||
|
url = fields.URL(required=True, error_messages={'required': 'A NewsArticle must include a URL'})
|
||||||
|
title = fields.Str()
|
||||||
|
authors = fields.List(fields.Str())
|
||||||
|
# published_date = fields.DateTime()
|
||||||
|
published_date = PassDateTime()
|
||||||
|
news_blob = fields.Str(required=True, error_messages={'required': 'NewsArticle must include news content'})
|
||||||
|
|
||||||
|
# TODO add support for Tags
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
ordered = True
|
ordered = True
|
Loading…
Reference in New Issue