]> git.openstreetmap.org Git - osqa.git/commitdiff
Fixed http://jira.osqa.net/browse/OSQA-214 and improved awarded badges list.
authorhernani <hernani@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Fri, 7 May 2010 11:03:36 +0000 (11:03 +0000)
committerhernani <hernani@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Fri, 7 May 2010 11:03:36 +0000 (11:03 +0000)
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
forum/skins/default/templates/badge.html
forum/views/meta.py
settings_local.py.dist

index 1498935b0bc4811f7b3f7df407eeac2940e52540..6465105d3d1f4d272b30583fc9c9cc7e0590c50c 100644 (file)
@@ -34,7 +34,7 @@ class BadgeManager(models.Manager):
             return super(BadgeManager, self).get(*args, **kwargs)\r
 \r
         from forum.badges.base import BadgesMeta\r
-        badge = BadgesMeta.by_id.get(pk, None)\r
+        badge = BadgesMeta.by_id.get(int(pk), None)\r
         if not badge:\r
             return super(BadgeManager, self).get(*args, **kwargs)\r
         return badge.ondb\r
index fcbb660463f4c19ae26ddf95c0269c0178da2111..341f2393b97ba56613244fe86414c9eb2f0a68a7 100644 (file)
@@ -23,7 +23,7 @@
     </p>
     <div>
         {% if badge.awarded_count %}
-        <p style="float:left"><span class="count">{{ awards|length|intcomma }}</span>
+        <p style="float:left"><span class="count">{{ award_count|intcomma }}</span>
         <strong>{% trans "The users have been awarded with badges:" %}</strong></p>
         {% endif %}
     </div>
index 03ffc6db8994807389d541f5423cdc3f6b8cd9bd..885b8b614740114bf164fa05342499f4e59039de 100644 (file)
@@ -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))
index e684801612252f0b1ca22b5e0639f260bf29a626..ac14d8450f79e91fbae80ef7c2027b23658cea23 100644 (file)
@@ -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