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