From c993c66c8388866bdf472d6a026ea83b2668b60e Mon Sep 17 00:00:00 2001 From: Tomasz Zielinski Date: Tue, 10 Jan 2012 15:30:24 +0100 Subject: Fix attempt for main page URLs --- askbot/urls.py | 201 +++----------------------------------------------- askbot/views/users.py | 14 +++- 2 files changed, 25 insertions(+), 190 deletions(-) diff --git a/askbot/urls.py b/askbot/urls.py index f39fd785..4382983c 100644 --- a/askbot/urls.py +++ b/askbot/urls.py @@ -60,194 +60,22 @@ urlpatterns = patterns('', # BEGIN Questions (main page) urls. All this urls work both normally and through ajax - url( # section/sort/query/search/tags/author - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/query:(?P[\w\d\-\+\#]+)/search:search/tags:(?P[\w\d\-\+\#]+)/author:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/query/tags/author/page_size Note:issues with default start_over - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/query:(?P[\w\d\-\+\#]+)/tags:(?P[\w\d\-\+\#]+)/author:(?P\d+)/page_size:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/query/tags/author/page Note:issues with default start_over - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/query:(?P[\w\d\-\+\#]+)/tags:(?P[\w\d\-\+\#]+)/author:(?P\d+)/page:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/query/tags/author for use with ajax - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/query:(?P[\w\d\-\+\#]+)/tags:(?P[\w\d\-\+\#]+)/author:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/query/author/page_size Note:issues with default start_over - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/query:(?P[\w\d\-\+\#]+)/author:(?P\d+)/page_size:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/query/author/page Note:issues with default start_over - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/query:(?P[\w\d\-\+\#]+)/author:(?P\d+)/page:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/query/author for use with ajax - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/query:(?P[\w\d\-\+\#]+)/author:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/query/search/author - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/query:(?P[\w\d\-\+\#]+)/search:search/author:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/query/tags/page_size Note:issues with default start_over - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/query:(?P[\w\d\-\+\#]+)/tags:(?P[\w\d\-\+\#]+)/page_size:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/query/tags/page Note:issues with default start_over - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/query:(?P[\w\d\-\+\#]+)/tags:(?P[\w\d\-\+\#]+)/page:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/query/search/tags - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/query:(?P[\w\d\-\+\#]+)/search:search/tags:(?P[\w\d\-\+\#]+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/query/tags for use with ajax - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/query:(?P[\w\d\-\+\#]+)/tags:(?P[\w\d\-\+\#]+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), + url( + (r'^%s' % _('questions') + + r'(%s)?' % r'/section:(?P\w+)' + + r'(%s)?' % r'/sort:(?P[\w\-]+)' + + r'(%s)?' % r'/query:(?P[\w\d\-\+\#]+)' + + r'(%s)?' % r'/search:search' + + r'(%s)?' % r'/tags:(?P[\w\d\-\+\#]+)' + + r'(%s)?' % r'/author:(?P\d+)' + + r'(%s)?' % r'/page_size:(?P\d+)' + + r'(%s)?' % r'/page:(?P\d+)' + + r'/$'), - url( # section/sort/query/search - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/query:(?P[\w\d\-\+\#]+)/search:search/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/query/page_size Note:issues with default start_over - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/query:(?P[\w\d\-\+\#]+)/page_size:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/query/page Note:issues with default start_over - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/query:(?P[\w\d\-\+\#]+)/page:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/query for use with ajax - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/query:(?P[\w\d\-\+\#]+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/tags/author/page_size Note:issues with default start_over - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/tags:(?P[\w\d\-\+\#]+)/author:(?P\d+)/page_size:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/tags/author/page Note:issues with default start_over - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/tags:(?P[\w\d\-\+\#]+)/author:(?P\d+)/page:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/tags/author for use with ajax - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/tags:(?P[\w\d\-\+\#]+)/author:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/author/page_size Note:issues with default start_over - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/author:(?P\d+)/page_size:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/author/page Note:issues with default start_over - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/author:(?P\d+)/page:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/author for use with ajax - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/author:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/tags/page_size Note:issues with default start_over - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/tags:(?P[\w\d\-\+\#]+)/page_size:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # section/sort/tags/page Note:issues with default start_over - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/tags:(?P[\w\d\-\+\#]+)/page:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # include section/sort/tags - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/tags:(?P[\w\d\-\+\#]+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # tags/author/page_size Note:issues with default start_over - r'^%s/tags:(?P[\w\d\-\+\#]+)/author:(?P\d+)/page_size:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # tags/author/page Note:issues with default start_over - r'^%s/tags:(?P[\w\d\-\+\#]+)/author:(?P\d+)/page:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # include tags/author - r'^%s/tags:(?P[\w\d\-\+\#]+)/author:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - - url( # author/page_size Note:issues with default start_over - r'^%s/author:(?P\d+)/page_size:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # author/page Note:issues with default start_over - r'^%s/author:(?P\d+)/page:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # include author - r'^%s/author:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - - url( # tags/page_size Note:issues with default start_over - r'^%s/tags:(?P[\w\d\-\+\#]+)/page_size:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # tags/page Note:issues with default start_over - r'^%s/tags:(?P[\w\d\-\+\#]+)/page:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # include tags - r'^%s/tags:(?P[\w\d\-\+\#]+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # include section/sort/page_size - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/page_size:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # include section/sort/page - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/page:(?P\d+)/$' % _('questions'), - views.readers.questions, - name='questions' - ), - url( # include section/sort - r'^%s/section:(?P\w+)/sort:(?P[\w\-]+)/$' % _('questions'), views.readers.questions, name='questions' ), + url( # removes tag, this is used only with ajax and this parameters is always used alone r'^%s/remove_tag:(?P[\w\d\-\#]+)/$' % _('questions'), views.readers.questions, @@ -260,11 +88,6 @@ urlpatterns = patterns('', {'start_over': (None)}, # this parameter is true by default, so we are making it false here name='questions' ), - url( - r'^%s$' % _('questions/'), - views.readers.questions, - name='questions' - ), # END main page urls diff --git a/askbot/views/users.py b/askbot/views/users.py index bcfbc28d..6b151c62 100644 --- a/askbot/views/users.py +++ b/askbot/views/users.py @@ -310,11 +310,23 @@ def user_stats(request, user, context): # INFO: There's bug in Django that makes the following query kind of broken (GROUP BY clause is problematic): # http://stackoverflow.com/questions/7973461/django-aggregation-does-excessive-group-by-clauses # Fortunately it looks like it returns correct results for the test data - user_tags = models.Tag.objects.filter(threads__posts__author=user).\ + user_tags = models.Tag.objects.filter(threads__posts__author=user).distinct().\ annotate(user_tag_usage_count=Count('threads')).\ order_by('-user_tag_usage_count')[:const.USER_VIEW_DATA_SIZE] user_tags = list(user_tags) # evaluate +# tags = models.Post.objects.filter(author=user).values('id', 'thread', 'thread__tags') +# post_ids = set() +# thread_ids = set() +# tag_ids = set() +# for t in tags: +# post_ids.add(t['id']) +# thread_ids.add(t['thread']) +# tag_ids.add(t['thread__tags']) +# if t['thread__tags'] == 11: +# print t['thread'], t['id'] +# import ipdb; ipdb.set_trace() + # # Badges/Awards (TODO: refactor into Managers/QuerySets when a pattern emerges; Simplify when we get rid of Question&Answer models) # -- cgit v1.2.3-1-g7c22