Show More
@@ -1,9 +1,8 b'' | |||||
1 | from django.template.loader import render_to_string |
|
1 | from django.template.loader import render_to_string | |
2 | from django.db import models |
|
2 | from django.db import models | |
3 |
from django.db.models import Count |
|
3 | from django.db.models import Count | |
4 | from django.core.urlresolvers import reverse |
|
4 | from django.core.urlresolvers import reverse | |
5 |
|
5 | |||
6 | from boards.models import Thread |
|
|||
7 | from boards.models.base import Viewable |
|
6 | from boards.models.base import Viewable | |
8 |
|
7 | |||
9 |
|
8 | |||
@@ -17,13 +16,8 b' class TagManager(models.Manager):' | |||||
17 | Gets tags that have non-archived threads. |
|
16 | Gets tags that have non-archived threads. | |
18 | """ |
|
17 | """ | |
19 |
|
18 | |||
20 | not_empty_tags = list() |
|
19 | return self.filter(thread__archived=False)\ | |
21 | tags = self.order_by('-required', 'name') |
|
20 | .annotate(num_threads=Count('thread')).filter(num_threads__gt=0) | |
22 | for tag in tags: |
|
|||
23 | if tag.get_thread_count() > 0: |
|
|||
24 | not_empty_tags.append(tag) |
|
|||
25 |
|
||||
26 | return not_empty_tags |
|
|||
27 |
|
21 | |||
28 |
|
22 | |||
29 | class Tag(models.Model, Viewable): |
|
23 | class Tag(models.Model, Viewable): | |
@@ -54,41 +48,23 b' class Tag(models.Model, Viewable):' | |||||
54 | def get_thread_count(self) -> int: |
|
48 | def get_thread_count(self) -> int: | |
55 | return self.get_threads().count() |
|
49 | return self.get_threads().count() | |
56 |
|
50 | |||
57 | def get_post_count(self, archived=False): |
|
|||
58 | """ |
|
|||
59 | Gets posts count for the tag's threads. |
|
|||
60 | """ |
|
|||
61 |
|
||||
62 | posts_count = 0 |
|
|||
63 |
|
||||
64 | threads = self.get_threads().filter(archived=archived) |
|
|||
65 | if threads.exists(): |
|
|||
66 | posts_count = threads.annotate(posts_count=Count('replies')) \ |
|
|||
67 | .aggregate(posts_sum=Sum('posts_count'))['posts_sum'] |
|
|||
68 |
|
||||
69 | if not posts_count: |
|
|||
70 | posts_count = 0 |
|
|||
71 |
|
||||
72 | return posts_count |
|
|||
73 |
|
||||
74 | def get_url(self): |
|
51 | def get_url(self): | |
75 | return reverse('tag', kwargs={'tag_name': self.name}) |
|
52 | return reverse('tag', kwargs={'tag_name': self.name}) | |
76 |
|
53 | |||
77 | def get_threads(self): |
|
54 | def get_threads(self): | |
78 |
return |
|
55 | return self.thread_set.order_by('-bump_time') | |
79 |
|
56 | |||
80 | def is_required(self): |
|
57 | def is_required(self): | |
81 | return self.required |
|
58 | return self.required | |
82 |
|
59 | |||
83 | def get_view(self): |
|
60 | def get_view(self): | |
84 | #prefix = '##' if self.is_required() else '#' |
|
|||
85 | link = '<a class="tag" href="{}">{}</a>'.format( |
|
61 | link = '<a class="tag" href="{}">{}</a>'.format( | |
86 |
|
|
62 | self.get_url(), self.name) | |
87 | if self.is_required(): |
|
63 | if self.is_required(): | |
88 | link = '<b>{}</b>'.format(link) |
|
64 | link = '<b>{}</b>'.format(link) | |
89 | return link |
|
65 | return link | |
90 |
|
66 | |||
91 | def get_search_view(self, *args, **kwargs): |
|
67 | def get_search_view(self, *args, **kwargs): | |
92 | return render_to_string('boards/tag.html', { |
|
68 | return render_to_string('boards/tag.html', { | |
93 |
|
|
69 | 'tag': self, | |
94 |
|
|
70 | }) |
General Comments 0
You need to be logged in to leave comments.
Login now