Django based forum engine
0
Offline
6
i planing rewrite part with marking read/unread for forum
:Edited slav0nic (July 29, 2011 17:32:58)
Offline
0
class PostsRead(models.Model):
user = models.ForeignKey(User)
post = models.ForeignKey(Post)
class Meta:
unique_together = ('user', 'post')
Edited BrianHV (July 29, 2011 18:49:25)
Offline
6
Offline
0
from django import template
from django.db.models import Q
from djangobb_forum import settings as forum_settings
from djangobb_forum.models import PostTracking, Topic
from djangobb_forum.templatetags import forum_extras
register = template.Library()
@register.filter
def unread_topics(user):
groups = user.groups.all() or [] #removed after django > 1.2.3 release
topics = Topic.objects.filter(
Q(forum__category__groups__in=groups) | \
Q(forum__category__groups__isnull=True))
try:
last_read = PostTracking.objects.get(user=user).last_read
if last_read:
topics = topics.filter(last_post__updated__gte=last_read).all()
else:
#searching more than forum_settings.SEARCH_PAGE_SIZE in this way - not good idea :]
topics = [topic for topic in topics[:forum_settings.SEARCH_PAGE_SIZE] if forum_extras.has_unreads(topic, user)]
except PostTracking.DoesNotExist:
pass
return len(topics)
Edited BrianHV (Aug. 17, 2011 04:08:59)
Offline