Example #1
0
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)
Example #2
0
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)
Example #3
0
class CommentVia(BaseEntity):
    content = Text()
    added_on = DateTime()
    posting_id = String()

    class Meta:
        aggregate_cls = PostVia
Example #4
0
class CommentViaWithReference(BaseEntity):
    content = Text()
    added_on = DateTime()
    posting = Reference('tests.aggregate.elements.PostVia')

    class Meta:
        aggregate_cls = PostViaWithReference
Example #5
0
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)
Example #6
0
class CommentRepresentation:
    id = Identifier()
    body = Text(required=True)
    created_at = DateTime()
    updated_at = DateTime()

    author = Nested(UserRepresentation, required=True)
Example #7
0
class Comment(BaseEntity):
    content = Text()
    added_on = DateTime()

    post = Reference("tests.aggregate.elements.Post")

    class Meta:
        aggregate_cls = Post
Example #8
0
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")
Example #9
0
class Comment(BaseEntity):
    content = Text(required=True)
    commented_at = DateTime(required=True, default=datetime.now())

    post = Reference(Post)

    class Meta:
        aggregate_cls = Post
Example #10
0
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')
Example #11
0
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")
Example #12
0
class ProfileWithAccountId(BaseAggregate):
    about_me = Text()
    account = Reference('tests.aggregate.elements.AccountWithId')
Example #13
0
class Profile(BaseAggregate):
    about_me = Text()
    account = Reference('tests.aggregate.elements.Account', via='username')
Example #14
0
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
Example #15
0
class PostVia(BaseAggregate):
    content = Text(required=True)
    comments = HasMany("tests.aggregate.elements.CommentVia", via="posting_id")
    author = Reference("tests.aggregate.elements.Author")
Example #16
0
class PostViaWithReference(BaseAggregate):
    content = Text(required=True)
    comments = HasMany('tests.aggregate.elements.CommentViaWithReference',
                       via='posting_id')
    author = Reference('tests.aggregate.elements.Author')
Example #17
0
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
Example #20
0
class ProviderCustomModel(BaseModel):
    name = Text()

    class Meta:
        entity_cls = Provider
        schema_name = "adults"
Example #21
0
class Profile(BaseAggregate):
    about_me = Text()
    account = Reference("tests.aggregate.elements.Account", via="username")
Example #22
0
class ProfileVia(BaseAggregate):
    profile_id = String(identifier=True)
    about_me = Text()
    account_email = String(max_length=255)
Example #23
0
class AddCommentCommand:
    token = String(max_length=1024)
    slug = String(required=True, max_length=250)
    body = Text(required=True)
Example #24
0
class ProfileViaWithReference(BaseAggregate):
    about_me = Text()
    ac = Reference('tests.aggregate.elements.AccountViaWithReference')
Example #25
0
 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()