##// END OF EJS Templates
Cache user's tags
neko259 -
r323:a0b0f2ae default
parent child Browse files
Show More
@@ -0,0 +1,1 b''
1 CACHE_TIMEOUT = 600 # Timeout for caching, if cache is used No newline at end of file
@@ -2,12 +2,14 b' import os'
2 from random import random
2 from random import random
3 import time
3 import time
4 import math
4 import math
5 from django.core.cache import cache
5
6
6 from django.db import models
7 from django.db import models
7 from django.db.models import Count
8 from django.db.models import Count
8 from django.http import Http404
9 from django.http import Http404
9 from django.utils import timezone
10 from django.utils import timezone
10 from markupfield.fields import MarkupField
11 from markupfield.fields import MarkupField
12 from boards import settings as board_settings
11
13
12 from neboard import settings
14 from neboard import settings
13 import thumbs
15 import thumbs
@@ -350,9 +352,17 b' class User(models.Model):'
350 return RANK_MODERATOR >= self.rank
352 return RANK_MODERATOR >= self.rank
351
353
352 def get_sorted_fav_tags(self):
354 def get_sorted_fav_tags(self):
355 cache_key = self._get_tag_cache_key()
356 fav_tags = cache.get(cache_key)
357 if fav_tags:
358 return fav_tags
359
353 tags = self.fav_tags.annotate(Count('threads'))\
360 tags = self.fav_tags.annotate(Count('threads'))\
354 .filter(threads__count__gt=0).order_by('name')
361 .filter(threads__count__gt=0).order_by('name')
355
362
363 if tags:
364 cache.set(cache_key, tags, board_settings.CACHE_TIMEOUT)
365
356 return tags
366 return tags
357
367
358 def get_post_count(self):
368 def get_post_count(self):
@@ -366,6 +376,17 b' class User(models.Model):'
366 if posts.count() > 0:
376 if posts.count() > 0:
367 return posts.latest('pub_time').pub_time
377 return posts.latest('pub_time').pub_time
368
378
379 def add_tag(self, tag):
380 self.fav_tags.add(tag)
381 cache.delete(self._get_tag_cache_key())
382
383 def remove_tag(self, tag):
384 self.fav_tags.remove(tag)
385 cache.delete(self._get_tag_cache_key())
386
387 def _get_tag_cache_key(self):
388 return self.user_id + '_tags'
389
369
390
370 class Setting(models.Model):
391 class Setting(models.Model):
371
392
@@ -338,7 +338,7 b' def tag_subscribe(request, tag_name):'
338 tag = get_object_or_404(Tag, name=tag_name)
338 tag = get_object_or_404(Tag, name=tag_name)
339
339
340 if not tag in user.fav_tags.all():
340 if not tag in user.fav_tags.all():
341 user.fav_tags.add(tag)
341 user.add_tag(tag)
342
342
343 return _redirect_to_next(request)
343 return _redirect_to_next(request)
344
344
@@ -350,7 +350,7 b' def tag_unsubscribe(request, tag_name):'
350 tag = get_object_or_404(Tag, name=tag_name)
350 tag = get_object_or_404(Tag, name=tag_name)
351
351
352 if tag in user.fav_tags.all():
352 if tag in user.fav_tags.all():
353 user.fav_tags.remove(tag)
353 user.remove_tag(tag)
354
354
355 return _redirect_to_next(request)
355 return _redirect_to_next(request)
356
356
General Comments 0
You need to be logged in to leave comments. Login now