]> git.openstreetmap.org Git - osqa.git/blobdiff - forum/views/admin.py
Another slippery debugging statement.
[osqa.git] / forum / views / admin.py
index bd8a565e105773ce0cd0e18bbbab5146be436b12..126a348c735fada04184b24ee04921d37e1ea39c 100644 (file)
@@ -5,12 +5,12 @@ from django.core.urlresolvers import reverse
 from django.http import HttpResponseRedirect, HttpResponse, HttpResponseForbidden, Http404
 from django.template import RequestContext
 from django.utils.translation import ugettext as _
+from django.db.models import Sum
 
 from forum.settings.base import Setting
 from forum.settings.forms import SettingsSetForm
 
-from forum.models import Activity, Question, Answer, User
-from forum import const
+from forum.models import Question, Answer, User, Node, Action
 from forum import settings
 
 def super_user_required(fn):
@@ -26,7 +26,7 @@ def super_user_required(fn):
 def index(request):
     return render_to_response('osqaadmin/index.html', {
         'sets': get_all_sets(),
-        'settings_pack': settings.SETTINGS_PACK,
+        'settings_pack': unicode(settings.SETTINGS_PACK),
         'statistics': get_statistics(),
         'recent_activity': get_recent_activity(),
     }, context_instance=RequestContext(request))
@@ -47,11 +47,14 @@ def settings_set(request, set_name):
 
             if set_name in ('minrep', 'badges', 'repgain'):
                 settings.SETTINGS_PACK.set_value("custom")
+
+        return HttpResponseRedirect(reverse('admin_set', args=[set_name]))
     else:
         form = SettingsSetForm(set)
 
     return render_to_response('osqaadmin/set.html', {
         'form': form,
+        'markdown': set.markdown,
         'sets': get_all_sets(),
     }, context_instance=RequestContext(request))
 
@@ -59,19 +62,16 @@ def get_all_sets():
     return sorted(Setting.sets.values(), lambda s1, s2: s1.weight - s2.weight)
 
 def get_recent_activity():
-    return Activity.objects.filter(activity_type__in=(
-            const.TYPE_ACTIVITY_ASK_QUESTION, const.TYPE_ACTIVITY_ANSWER,
-            const.TYPE_ACTIVITY_COMMENT_QUESTION, const.TYPE_ACTIVITY_COMMENT_ANSWER,
-            const.TYPE_ACTIVITY_MARK_ANSWER)).order_by('-active_at')[0:10]
+    return Action.objects.order_by('-action_date')[0:30]
 
 def get_statistics():
     return {
         'total_users': User.objects.all().count(),
         'users_last_24': User.objects.filter(date_joined__gt=(datetime.now() - timedelta(days=1))).count(),
-        'total_questions': Question.objects.filter(deleted=False).count(),
-        'questions_last_24': Question.objects.filter(deleted=False, added_at__gt=(datetime.now() - timedelta(days=1))).count(),
-        'total_answers': Answer.objects.filter(deleted=False).count(),
-        'answers_last_24': Answer.objects.filter(deleted=False, added_at__gt=(datetime.now() - timedelta(days=1))).count(),
+        'total_questions': Question.objects.filter(deleted=None).count(),
+        'questions_last_24': Question.objects.filter(deleted=None, added_at__gt=(datetime.now() - timedelta(days=1))).count(),
+        'total_answers': Answer.objects.filter(deleted=None).count(),
+        'answers_last_24': Answer.objects.filter(deleted=None, added_at__gt=(datetime.now() - timedelta(days=1))).count(),
     }
 
 @super_user_required      
@@ -154,3 +154,19 @@ def go_defaults(request):
     request.user.message_set.create(message=_('All values reverted to defaults'))
     return HttpResponseRedirect(reverse('admin_index'))
 
+
+@super_user_required
+def recalculate_denormalized(request):
+    for n in Node.objects.all():
+        n = n.leaf
+        n.score = n.votes.aggregate(score=Sum('value'))['score']
+        if not n.score: n.score = 0
+        n.save()
+
+    for u in User.objects.all():
+        u.reputation = u.reputes.aggregate(reputation=Sum('value'))['reputation']
+        u.save()
+
+    request.user.message_set.create(message=_('All values recalculated'))
+    return HttpResponseRedirect(reverse('admin_index'))
+