class CreateArticleDTO: title = String(required=True, max_length=250) description = Text(required=True) body = Text(required=True) tag_list = List() author = CustomObject(User, required=True)
class ArticleDTO: slug = String(max_length=250) title = String(required=True, max_length=250) description = Text(required=True) body = Text(required=True) tag_list = List() created_at = DateTime(default=datetime.now()) updated_at = DateTime(default=datetime.now()) favorited = Boolean(default=False) favorites_count = Integer() @classmethod def for_article(cls, article: Article, user: User): favorited = article in [ favorite.article for favorite in user.favorites ] return ArticleDTO(slug=article.slug, title=article.title, description=article.description, body=article.body, tag_list=article.tag_list, created_at=article.created_at, updated_at=article.updated_at, author=article.author, favorited=favorited)
class CommentVia(BaseEntity): content = Text() added_on = DateTime() posting_id = String() class Meta: aggregate_cls = PostVia
class CommentViaWithReference(BaseEntity): content = Text() added_on = DateTime() posting = Reference('tests.aggregate.elements.PostVia') class Meta: aggregate_cls = PostViaWithReference
class Comment: body = Text(required=True) created_at = DateTime(default=datetime.now()) updated_at = DateTime(default=datetime.now()) article = Reference(Article, required=True) author = Reference(User, required=True)
class CommentRepresentation: id = Identifier() body = Text(required=True) created_at = DateTime() updated_at = DateTime() author = Nested(UserRepresentation, required=True)
class Comment(BaseEntity): content = Text() added_on = DateTime() post = Reference("tests.aggregate.elements.Post") class Meta: aggregate_cls = Post
class Post(BaseAggregate): title = String(required=True, max_length=1000) slug = String(required=True, max_length=1024) content = Text(required=True) posted_at = DateTime(required=True, default=datetime.now()) post_meta = HasOne("tests.repository.child_entities.PostMeta") comments = HasMany("tests.repository.child_entities.Comment")
class Comment(BaseEntity): content = Text(required=True) commented_at = DateTime(required=True, default=datetime.now()) post = Reference(Post) class Meta: aggregate_cls = Post
class Post(BaseAggregate): title = String(required=True, max_length=1000) slug = String(required=True, max_length=1024) content = Text(required=True) posted_at = DateTime(required=True, default=datetime.now()) meta = HasOne('PostMeta') comments = HasMany('Comment')
class Post(BaseAggregate): title = String(required=True, max_length=1000) slug = String(required=True, max_length=1024) content = Text(required=True) posted_at = DateTime(required=True, default=datetime.now()) meta = HasOne("tests.unit_of_work.aggregate_elements.PostMeta") comments = HasMany("tests.unit_of_work.aggregate_elements.Comment")
class ProfileWithAccountId(BaseAggregate): about_me = Text() account = Reference('tests.aggregate.elements.AccountWithId')
class Profile(BaseAggregate): about_me = Text() account = Reference('tests.aggregate.elements.Account', via='username')
class Article: slug = String(max_length=250) title = String(required=True, max_length=250) description = Text(required=True) body = Text(required=True) tag_list = List() created_at = DateTime(default=datetime.now()) updated_at = DateTime(default=datetime.now()) author = Reference(User, required=True) comments = HasMany('realworld.model.article.Comment') @classmethod def create(self, article_dto: CreateArticleDTO): article = Article(title=article_dto.title, slug=slugify(article_dto.title), description=article_dto.description, body=article_dto.body, tag_list=article_dto.tag_list, author=article_dto.author) current_domain.publish(TagsAdded(tag_list=article_dto.tag_list)) return article def update(self, **kwargs): valid_fields = [ field for field in kwargs if field in ['title', 'description', 'body'] ] for field in valid_fields: setattr(self, field, kwargs[field]) if 'title' in valid_fields: setattr(self, 'slug', slugify(self.title)) ################### # Comment methods # ################### def add_comment(self, body: String, logged_in_user: User): new_comment = Comment(body=body, article=self, author=logged_in_user) self.comments.add(new_comment) return self, new_comment def delete_comment(self, comment_identifier): [old_comment] = [ comment for comment in self.comments if comment.id == comment_identifier ] self.comments.remove(old_comment) return self, old_comment def get_comment_by_identifier(self, comment_identifier): [comment] = [ comment for comment in self.comments if comment.id == comment_identifier ] return comment
class PostVia(BaseAggregate): content = Text(required=True) comments = HasMany("tests.aggregate.elements.CommentVia", via="posting_id") author = Reference("tests.aggregate.elements.Author")
class PostViaWithReference(BaseAggregate): content = Text(required=True) comments = HasMany('tests.aggregate.elements.CommentViaWithReference', via='posting_id') author = Reference('tests.aggregate.elements.Author')
class Post(BaseAggregate): content = Text(required=True) comments = HasMany('tests.aggregate.elements.Comment') author = Reference('tests.aggregate.elements.Author')
def test_type_validation(self): """ Test type checking validation for the Field""" address = Text() value = address._load('My home address') assert value == 'My home address'
def test_init(self): """Test successful Text Field initialization""" address = Text() assert address is not None
class ProviderCustomModel(BaseModel): name = Text() class Meta: entity_cls = Provider schema_name = "adults"
class Profile(BaseAggregate): about_me = Text() account = Reference("tests.aggregate.elements.Account", via="username")
class ProfileVia(BaseAggregate): profile_id = String(identifier=True) about_me = Text() account_email = String(max_length=255)
class AddCommentCommand: token = String(max_length=1024) slug = String(required=True, max_length=250) body = Text(required=True)
class ProfileViaWithReference(BaseAggregate): about_me = Text() ac = Reference('tests.aggregate.elements.AccountViaWithReference')
class ReceiverInlineModel: about = Text()
class CreateArticleCommand: token = String(required=True, max_length=1024) title = String(required=True, max_length=250) description = Text(required=True) body = Text(required=True) tag_list = List()
class UpdateArticleCommand: token = String(required=True, max_length=1024) slug = String(required=True, max_length=250) title = String(max_length=250) description = Text() body = Text()