diff options
author | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2010-12-07 01:59:53 -0500 |
---|---|---|
committer | Evgeny Fadeev <evgeny.fadeev@gmail.com> | 2010-12-07 01:59:53 -0500 |
commit | 93d89de881b00c70a0d65daadc518ffe97069654 (patch) | |
tree | 78601e8eefd1097c86aeefbd318a5c32560ce099 | |
parent | 8e58b4b2f27907d07a4f20abd0893eb7e71ae1cd (diff) | |
download | askbot-93d89de881b00c70a0d65daadc518ffe97069654.tar.gz askbot-93d89de881b00c70a0d65daadc518ffe97069654.tar.bz2 askbot-93d89de881b00c70a0d65daadc518ffe97069654.zip |
rewrote some badge related queries
-rw-r--r-- | askbot/skins/default/templates/badge.html | 13 | ||||
-rw-r--r-- | askbot/views/meta.py | 21 | ||||
-rw-r--r-- | askbot/views/users.py | 6 |
3 files changed, 17 insertions, 23 deletions
diff --git a/askbot/skins/default/templates/badge.html b/askbot/skins/default/templates/badge.html index 235cb84f..6d4c956e 100644 --- a/askbot/skins/default/templates/badge.html +++ b/askbot/skins/default/templates/badge.html @@ -18,17 +18,8 @@ </div> <div id="award-list" style="clear:both;margin-left:20px;line-height:25px;"> {% for award in awards %} - <p style="width:180px;float:left"><a href="{% url users %}{{ award.id }}/{{ award.name }}">{{ award.name }}</a> - {{ - macros.user_score_and_badge_summary( - { - 'reputation':award.rep, - 'gold': award.gold, - 'silver': award.silver, - 'bronze': award.bronze - } - ) - }} + <p style="width:180px;float:left"><a href="{{ award.user.get_absolute_url() }}">{{ award.user.username }}</a> + {{ macros.user_score_and_badge_summary(award.user) }} </p> {% endfor %} </div> diff --git a/askbot/views/meta.py b/askbot/views/meta.py index 8c2063ee..4aba646d 100644 --- a/askbot/views/meta.py +++ b/askbot/views/meta.py @@ -116,17 +116,16 @@ def badges(request):#user status/reputation system def badge(request, id): #todo: supplement database data with the stuff from badges.py badge = get_object_or_404(BadgeData, id=id) - awards = Award.objects.extra( - select={'id': 'auth_user.id', - 'name': 'auth_user.username', - 'rep':'auth_user.reputation', - 'gold': 'auth_user.gold', - 'silver': 'auth_user.silver', - 'bronze': 'auth_user.bronze'}, - tables=['award', 'auth_user'], - where=['badge_id=%s AND user_id=auth_user.id'], - params=[id] - ).distinct('id') + awards = Award.objects.filter( + badge = badge, + ).select_related( + 'user__id', + 'user__username', + 'user__reputation', + 'user__gold', + 'user__silver', + 'user__bronze' + ).distinct('user') template = ENV.get_template('badge.html') data = { diff --git a/askbot/views/users.py b/askbot/views/users.py index 14c368fd..03877974 100644 --- a/askbot/views/users.py +++ b/askbot/views/users.py @@ -345,9 +345,13 @@ def user_stats(request, user): ).distinct() awarded_badge_counts = models.Award.objects.filter( user = user + ).values( + 'badge' ).annotate( count = Count('badge__id') - ).values_list('badge', 'count') + ).values_list( + 'badge', 'count' + ) user_tags = user_tags.annotate( user_tag_usage_count=Count('name') |