summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvgeny Fadeev <evgeny.fadeev@gmail.com>2010-12-07 01:59:53 -0500
committerEvgeny Fadeev <evgeny.fadeev@gmail.com>2010-12-07 01:59:53 -0500
commit93d89de881b00c70a0d65daadc518ffe97069654 (patch)
tree78601e8eefd1097c86aeefbd318a5c32560ce099
parent8e58b4b2f27907d07a4f20abd0893eb7e71ae1cd (diff)
downloadaskbot-93d89de881b00c70a0d65daadc518ffe97069654.tar.gz
askbot-93d89de881b00c70a0d65daadc518ffe97069654.tar.bz2
askbot-93d89de881b00c70a0d65daadc518ffe97069654.zip
rewrote some badge related queries
-rw-r--r--askbot/skins/default/templates/badge.html13
-rw-r--r--askbot/views/meta.py21
-rw-r--r--askbot/views/users.py6
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')