From 3ff018b6b9cc5c0b36054456a671389a481f72a2 Mon Sep 17 00:00:00 2001 From: hernani Date: Fri, 7 May 2010 11:03:36 +0000 Subject: [PATCH] Fixed http://jira.osqa.net/browse/OSQA-214 and improved awarded badges list. Made file based cache the default. git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@157 0cfe37f9-358a-4d5e-be75-b63607b5c754 --- forum/models/meta.py | 2 +- forum/skins/default/templates/badge.html | 2 +- forum/views/meta.py | 8 +++++++- settings_local.py.dist | 4 ++-- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/forum/models/meta.py b/forum/models/meta.py index 1498935..6465105 100644 --- a/forum/models/meta.py +++ b/forum/models/meta.py @@ -34,7 +34,7 @@ class BadgeManager(models.Manager): return super(BadgeManager, self).get(*args, **kwargs) from forum.badges.base import BadgesMeta - badge = BadgesMeta.by_id.get(pk, None) + badge = BadgesMeta.by_id.get(int(pk), None) if not badge: return super(BadgeManager, self).get(*args, **kwargs) return badge.ondb diff --git a/forum/skins/default/templates/badge.html b/forum/skins/default/templates/badge.html index fcbb660..341f239 100644 --- a/forum/skins/default/templates/badge.html +++ b/forum/skins/default/templates/badge.html @@ -23,7 +23,7 @@

{% if badge.awarded_count %} -

{{ awards|length|intcomma }} +

{{ award_count|intcomma }} {% trans "The users have been awarded with badges:" %}

{% endif %}
diff --git a/forum/views/meta.py b/forum/views/meta.py index 03ffc6d..885b8b6 100644 --- a/forum/views/meta.py +++ b/forum/views/meta.py @@ -1,3 +1,4 @@ +from itertools import groupby from django.shortcuts import render_to_response, get_object_or_404 from django.core.urlresolvers import reverse from django.template import RequestContext @@ -76,9 +77,14 @@ def badges(request): def badge(request, id, slug): badge = Badge.objects.get(id=id) - awards = Award.objects.filter(badge=badge).annotate(count=Count('user')).distinct('user').order_by('-count') + awards = list(Award.objects.filter(badge=badge).order_by('user', 'awarded_at')) + award_count = len(awards) + + awards = sorted([dict(count=len(list(g)), user=k) for k, g in groupby(awards, lambda a: a.user)], + lambda c1, c2: c2['count'] - c1['count']) return render_to_response('badge.html', { + 'award_count': award_count, 'awards' : awards, 'badge' : badge, }, context_instance=RequestContext(request)) diff --git a/settings_local.py.dist b/settings_local.py.dist index e684801..ac14d84 100644 --- a/settings_local.py.dist +++ b/settings_local.py.dist @@ -38,8 +38,8 @@ DATABASE_ENGINE = '' #mysql, etc DATABASE_HOST = '' DATABASE_PORT = '' -#CACHE_BACKEND = 'file://%s' % os.path.join(os.path.dirname(__file__),'cache').replace('\\','/') -CACHE_BACKEND = 'dummy://' +CACHE_BACKEND = 'file://%s' % os.path.join(os.path.dirname(__file__),'cache').replace('\\','/') +#CACHE_BACKEND = 'dummy://' SESSION_ENGINE = 'django.contrib.sessions.backends.db' APP_URL = 'http://' #used by email notif system and RSS -- 2.39.5