• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

rafalp / Misago / 17496798327

05 Sep 2025 02:59PM UTC coverage: 96.509% (-0.3%) from 96.769%
17496798327

Pull #1995

github

web-flow
Merge 17284d7d7 into 6bb938c90
Pull Request #1995: Move `Post` model from `misago.threads` to `misago.posts`

1884 of 1974 new or added lines in 149 files covered. (95.44%)

305 existing lines in 16 files now uncovered.

66716 of 69129 relevant lines covered (96.51%)

0.97 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

93.55
/misago/threads/management/commands/parseposts.py
1
import time
1✔
2

3
from django.core.management.base import BaseCommand, CommandError
1✔
4

5
from ....core.management.progressbar import show_progress
1✔
6
from ....parser.parse import parse
1✔
7
from ....posts.models import Post
1✔
8

9

10
class Command(BaseCommand):
1✔
11
    help = "Parses posts, updating their HTML, metadata and search"
1✔
12

13
    def handle(self, *args, **options):
1✔
14
        posts_to_parse = Post.objects.count()
1✔
15

16
        if not posts_to_parse:
1✔
17
            raise CommandError("No posts exist.")
1✔
18

19
        if posts_to_parse == 1:
1✔
20
            self.stdout.write("Parsing one post...\n")
1✔
21
        else:
NEW
22
            self.stdout.write(f"Parsing {posts_to_parse} posts...\n")
×
23

24
        rebuild_count = 0
1✔
25
        show_progress(self, rebuild_count, posts_to_parse)
1✔
26
        start_time = time.time()
1✔
27

28
        queryset = Post.objects.select_related("thread")
1✔
29
        for post in queryset.iterator(chunk_size=50):
1✔
30
            parsing_result = parse(post.original)
1✔
31

32
            post.parsed = parsing_result.html
1✔
33
            post.metadata = parsing_result.metadata
1✔
34
            post.set_search_document(post.thread, parsing_result.text)
1✔
35
            post.save(update_fields=["parsed", "metadata", "search_document"])
1✔
36

37
            post.set_search_vector()
1✔
38
            post.save(update_fields=["search_vector"])
1✔
39

40
            rebuild_count += 1
1✔
41
            show_progress(self, rebuild_count, posts_to_parse, start_time)
1✔
42

43
        if rebuild_count == 1:
1✔
44
            self.stdout.write(f"\nParsed one post.")
1✔
45
        else:
NEW
46
            self.stdout.write(f"\nParsed {rebuild_count} posts.")
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc