optimize Catalog.has_access()

This commit is contained in:
slav0nic 2009-04-07 18:43:04 +03:00
parent faba652995
commit 7ac6e16871
2 changed files with 12 additions and 14 deletions

View file

@ -75,11 +75,12 @@ class Category(models.Model):
return Post.objects.filter(topic__forum__category=self).select_related() return Post.objects.filter(topic__forum__category=self).select_related()
def has_access(self, user): def has_access(self, user):
user_groups = user.groups.all() if self.groups.count() > 0:
for group in self.groups.all(): try:
if group in user_groups: self.groups.get(user=user)
return True except Group.DoesNotExist:
return False return False
return True
class Forum(models.Model): class Forum(models.Model):
category = models.ForeignKey(Category, related_name='forums', verbose_name=_('Category')) category = models.ForeignKey(Category, related_name='forums', verbose_name=_('Category'))

View file

@ -33,7 +33,7 @@ def index(request, full=True):
guests_cached = cache.get('guests_online', {}) guests_cached = cache.get('guests_online', {})
guest_count = len(guests_cached) guest_count = len(guests_cached)
users_count = len(users_online) users_count = len(users_online)
#users_total_online = guest_count + users_count
cats = {} cats = {}
forums = {} forums = {}
user_groups = request.user.groups.all() user_groups = request.user.groups.all()
@ -122,15 +122,16 @@ def moderate(request, forum_id):
@render_to('forum/search_topics.html') @render_to('forum/search_topics.html')
def search(request): def search(request):
post_indexer.update() # TODO: move to form
if 'action' in request.GET: if 'action' in request.GET:
action = request.GET['action'] action = request.GET['action']
if action == 'show_24h': if action == 'show_24h':
date = datetime.datetime.today() - datetime.timedelta(1) date = datetime.datetime.today() - datetime.timedelta(1)
topics = Topic.objects.filter(created__gte=date).order_by('created') topics = Topic.objects.filter(created__gte=date).order_by('created')
elif action == 'show_new': elif action == 'show_new':
#TODO: FIXME
topics = Topic.objects.all().order_by('created') topics = Topic.objects.all().order_by('created')
topics = [topic for topic in topics if forum_extras.has_unreads(topic, request.user)] topics = [topic for topic in topics if forum_extras.has_unreads(topic, request.user)]
elif action == 'show_unanswered': elif action == 'show_unanswered':
topics = Topic.objects.filter(post_count=1) topics = Topic.objects.filter(post_count=1)
elif action == 'show_subscriptions': elif action == 'show_subscriptions':
@ -139,15 +140,14 @@ def search(request):
user_id = request.GET['user_id'] user_id = request.GET['user_id']
posts = Post.objects.filter(user__id=user_id) posts = Post.objects.filter(user__id=user_id)
topics = [post.topic for post in posts] topics = [post.topic for post in posts]
elif action == 'search': elif action == 'search':
keywords = request.GET.get('keywords') keywords = request.GET.get('keywords')
author = request.GET.get('author') author = request.GET.get('author')
forum = request.GET.get('forum') forum = request.GET.get('forum')
search_in = request.GET.get('search_in') search_in = request.GET.get('search_in')
sort_by = request.GET.get('sort_by') sort_by = request.GET.get('sort_by')
sort_dir = request.GET.get('sort_dir') sort_dir = request.GET.get('sort_dir')
# TODO: Need refactoring
if keywords and author: if keywords and author:
if search_in == 'all': if search_in == 'all':
if forum == '0': if forum == '0':
@ -373,7 +373,6 @@ def add_post(request, forum_id, topic_id):
if form.is_valid(): if form.is_valid():
post = form.save(); post = form.save();
post_indexer.update()
return HttpResponseRedirect(post.get_absolute_url()) return HttpResponseRedirect(post.get_absolute_url())
return {'form': form, return {'form': form,
@ -546,7 +545,6 @@ def edit_post(request, post_id):
form = build_form(EditPostForm, request, topic=topic, instance=post) form = build_form(EditPostForm, request, topic=topic, instance=post)
if form.is_valid(): if form.is_valid():
post = form.save() post = form.save()
post_indexer.update()
return HttpResponseRedirect(post.get_absolute_url()) return HttpResponseRedirect(post.get_absolute_url())
return {'form': form, return {'form': form,
@ -662,7 +660,6 @@ def delete_post(request, post_id):
return HttpResponseRedirect(post.get_absolute_url()) return HttpResponseRedirect(post.get_absolute_url())
post.delete() post.delete()
post_indexer.update()
profile = get_object_or_404(Profile, user=post.user) profile = get_object_or_404(Profile, user=post.user)
profile.post_count = Post.objects.filter(user=post.user).count() profile.post_count = Post.objects.filter(user=post.user).count()
profile.save() profile.save()