示例#1
0
class TopicGenerator(generator.ModelGenerator):
    section_id = fields.ForeignKeyFieldGenerator(
        queryset=Section.objects.all().order_by("pk").values_list('pk',
                                                                  flat=True),
        random_data=True,
    )
    title = extra_generator_fields.SentenceFieldGenerator(max_length=60)
    original_text = extra_generator_fields.LongHtmlFieldGenerator(
        paragraph_count=1)

    author_id = fields.ForeignKeyFieldGenerator(
        queryset=User.objects.all().order_by('pk').values_list('pk',
                                                               flat=True),
        random_data=True)
    authors_name = extra_generator_fields.NameFieldGenerator()

    class Meta:
        model = Topic
        fields = ('created', 'updated')
        unique_checks = (('title', ), )

    def get_object(self):
        obj = super(TopicGenerator, self).get_object()
        obj.filtered_text = obj.original_text
        obj.updated = obj.created
        return obj
示例#2
0
class NewsGenerator(generator.ModelGenerator):
	title = extra_generator_fields.SentenceFieldGenerator(max_length=50)
	category_id = fields.ForeignKeyFieldGenerator(
		queryset=Category.objects.all().order_by("pk").values_list('pk', flat=True),
		random_data=True
	)
	original_short_text = extra_generator_fields.LongHtmlFieldGenerator(paragraph_count=1)
	author_id = fields.ForeignKeyFieldGenerator(
		queryset=User.objects.all().order_by('pk').values_list('pk', flat=True),
		random_data=False
	)
	authors_name = extra_generator_fields.NameFieldGenerator()

	class Meta:
		model = News
		fields = ('created', 'updated')
		unique_checks = (('title',),)

	def get_object(self):
		obj = super(NewsGenerator, self).get_object()
		obj.filtered_short_text = obj.original_short_text
		obj.original_long_text = obj.original_short_text
		obj.filtered_long_text = obj.original_long_text
		obj.approved = True
		unique_slugify(obj, 'slug')
		return obj
示例#3
0
class ArticleGenerator(generator.ModelGenerator):
    title = extra_generator_fields.SentenceFieldGenerator()
    authors_name = extra_generator_fields.NameFieldGenerator()
    original_perex = extra_generator_fields.LongHtmlFieldGenerator(
        paragraph_count=1)
    original_content = extra_generator_fields.LongHtmlFieldGenerator()

    def get_object(self):
        obj = super(ArticleGenerator, self).get_object()
        obj.title = obj.title[:50]
        obj.original_annotation = obj.original_perex
        obj.filtered_annotation = obj.original_annotation
        obj.filtered_perex = obj.original_perex
        obj.filtered_content = obj.original_content
        obj.published = True
        obj.created = obj.updated
        unique_slugify(obj, 'slug')
        return obj

    class Meta:
        model = Article
        unique_checks = [
            ('title', ),
        ]
        fields = ('category', 'pub_time', 'updated', 'author', 'top')
示例#4
0
class PostGenerator(generator.ModelGenerator):
    title = extra_generator_fields.SentenceFieldGenerator(max_length=50)
    original_perex = extra_generator_fields.LongHtmlFieldGenerator(
        paragraph_count=1)
    original_content = extra_generator_fields.LongHtmlFieldGenerator()

    def get_object(self):
        obj = super(PostGenerator, self).get_object()
        obj.filtered_perex = obj.original_perex
        obj.filtered_content = obj.original_content
        unique_slugify(obj, 'slug')
        return obj

    class Meta:
        model = Post
        fields = ('blog', 'pub_time', 'created', 'updated', 'linux')
        unique_checks = (('title', ), )
示例#5
0
class TweetGenerator(generator.ModelGenerator):
    title = extra_generator_fields.SentenceFieldGenerator(max_length=50)
    original_text = extra_generator_fields.LongHtmlFieldGenerator(
        paragraph_count=1)
    author_id = fields.ForeignKeyFieldGenerator(
        queryset=User.objects.all().order_by('pk').values_list('pk',
                                                               flat=True),
        random_data=False)

    class Meta:
        model = Tweet
        fields = ('created', 'updated')
        unique_checks = (('title', ), )

    def get_object(self):
        obj = super(TweetGenerator, self).get_object()
        obj.filtered_text = obj.original_text
        unique_slugify(obj, 'slug')
        return obj
示例#6
0
class BlogGenerator(generator.ModelGenerator):
    author_id = fields.ForeignKeyFieldGenerator(
        queryset=User.objects.all().order_by('pk').values_list('pk',
                                                               flat=True),
        random_data=False)
    title = extra_generator_fields.SentenceFieldGenerator(max_length=20)
    original_description = extra_generator_fields.LongHtmlFieldGenerator(
        paragraph_count=1)
    original_sidebar = extra_generator_fields.LongHtmlFieldGenerator(
        paragraph_count=1)

    def get_object(self):
        obj = super(BlogGenerator, self).get_object()
        obj.filtered_description = obj.original_description
        obj.filtered_sidebar = obj.original_sidebar
        unique_slugify(obj, 'slug')
        return obj

    class Meta:
        model = Blog
        fields = ('created', 'updated')
        unique_checks = (('title', ), )
示例#7
0
class CommentGenerator(generator.ModelGenerator):
    GENERATE_FOR_MODELS = (
        'article.article',
        'forum.topic',
        'news.news',
        'blog.post',
        'tweets.tweet',
    )

    next_id = 0
    next_tree_id = 1
    command = None

    subject = extra_generator_fields.SentenceFieldGenerator(max_length=60)
    user_id = fields.ForeignKeyFieldGenerator(
        queryset=User.objects.all().order_by('pk').values_list('pk',
                                                               flat=True),
        random_data=True)
    user_name = extra_generator_fields.NameFieldGenerator()
    original_comment = extra_generator_fields.LongHtmlFieldGenerator(
        paragraph_count=1)

    class Meta:
        model = Comment
        fields = ('created', 'updated')

    def generate(self, command):
        self.command = command
        return super(CommentGenerator, self).generate(command)

    def generate_tree(self, parent_id, lft, level):
        if level > 8:
            return []
        comments_flat = []
        comments = [
            self.get_object() for comment in range(random.randrange(6))
        ]
        for comment in comments:
            comment.id = self.next_id
            comment.lft = lft
            comment.rght = lft + 1
            comment.level = level + 1
            comment.parent_id = parent_id
            lft += 2
            self.next_id += 1
            comments_flat.append(comment)
            if random.randrange(3) == 0:
                child_comments = self.generate_tree(parent_id=comment.id,
                                                    lft=comment.rght,
                                                    level=comment.level)
                comments_flat += child_comments
                lft += len(child_comments) * 2
                comment.rght += len(child_comments) * 2
        if self.command is not None and self.command.verbosity > 1:
            self.command.stdout.write('+', ending='')
        return comments_flat

    def __iter__(self):
        self.next_id = (Comment.objects.all().aggregate(
            max_id=Max('id'))['max_id'] or 0) + 1

        for model in self.GENERATE_FOR_MODELS:
            model_class = apps.get_model(model)
            ctype = ContentType.objects.get_for_model(model_class)
            for instance in get_default_manager(model_class).all():
                root_comment = Comment(
                    parent=None,
                    level=0,
                    content_type=ctype,
                    object_id=instance.pk,
                    original_comment='html:',
                    filtered_comment='',
                    user_name='',
                    created=instance.created,
                    updated=instance.created,
                )
                root_comment.id = self.next_id
                root_comment.tree_id = self.next_tree_id
                self.next_id += 1
                self.next_tree_id += 1
                tree = self.generate_tree(parent_id=root_comment.id,
                                          lft=2,
                                          level=root_comment.level)  # pylint: disable=no-member
                root_comment.lft = 1
                root_comment.rght = 2 + len(tree) * 2
                yield root_comment
                for comment in tree:
                    comment.content_type = ctype
                    comment.object_id = instance.pk
                    comment.filtered_comment = comment.original_comment
                    comment.updated = comment.created
                    comment.tree_id = root_comment.tree_id
                    yield comment

    def done(self):
        for model in self.GENERATE_FOR_MODELS:
            model_class = apps.get_model(model)
            ctype = ContentType.objects.get_for_model(model_class)
            for instance in get_default_manager(model_class).all():
                root = Comment.objects.get_or_create_root_comment(
                    ctype, instance.pk)[0]
                update_comments_header(Comment, instance=root)
                if self.command is not None and self.command.verbosity > 1:
                    self.command.stdout.write('#', ending='')