1
from pybb.models import Topic, Post, Read
3
def cache_unreads(qs, user):
4
if not len(qs) or not user.is_authenticated():
6
if isinstance(qs[0], Topic):
7
reads = Read.objects.filter(topic__pk__in=set(x.id for x in qs),
8
user=user).select_related()
9
read_map = dict((x.topic.id, x) for x in reads)
12
topic._read = read_map.get(topic.id, None)
14
elif isinstance(qs[0], Post):
15
ids = set(x.topic.id for x in qs)
16
reads = Read.objects.filter(topic__pk__in=ids, user=user).select_related()
17
read_map = dict((x.topic.id, x) for x in reads)
20
post.topic._read = read_map.get(post.topic.id, None)
23
raise Exception('cache_unreads could process only Post or Topic querysets')