From 7f14cb747791cc03d44045e2a0fcfb73eed298e4 Mon Sep 17 00:00:00 2001 From: hernani Date: Sun, 18 Apr 2010 22:42:31 +0000 Subject: [PATCH] admin recalculate denormalized data tool and fix in comment votes git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@51 0cfe37f9-358a-4d5e-be75-b63607b5c754 --- forum/reputation.py | 4 +- forum/skins/css3/media/images/img_tag.jpg | Bin 676 -> 0 bytes forum/skins/css3/media/images/tag.png | Bin 1215 -> 0 bytes forum/skins/css3/media/style/style.css | 2510 ----------------- forum/skins/css3/templates/header.html | 58 - forum/skins/css3/templates/search.html | 25 - forum/skins/default/media/js/osqa.main.js | 31 +- .../default/templates/node/comments.html | 4 +- .../default/templates/osqaadmin/index.html | 2 + forum/urls.py | 1 + forum/views/admin.py | 18 +- 11 files changed, 29 insertions(+), 2624 deletions(-) delete mode 100644 forum/skins/css3/media/images/img_tag.jpg delete mode 100644 forum/skins/css3/media/images/tag.png delete mode 100644 forum/skins/css3/media/style/style.css delete mode 100644 forum/skins/css3/templates/header.html delete mode 100644 forum/skins/css3/templates/search.html diff --git a/forum/reputation.py b/forum/reputation.py index 8ee3469..71f9d65 100644 --- a/forum/reputation.py +++ b/forum/reputation.py @@ -58,7 +58,7 @@ answer_accepted_canceled.connect(on_answer_accepted) def on_vote(instance, created, **kwargs): - if created and not instance.content_object.wiki: + if created and (instance.content_object.node_type in ("question", "answer") and not instance.content_object.wiki): post = instance.content_object.leaf question = (post.__class__ == Question) and post or post.question @@ -79,7 +79,7 @@ post_save.connect(on_vote, sender=Vote) def on_vote_canceled(instance, **kwargs): - if not instance.content_object.wiki: + if instance.content_object.node_type in ("question", "answer") and not instance.content_object.wiki: post = instance.content_object.leaf question = (post.__class__ == Question) and post or post.question diff --git a/forum/skins/css3/media/images/img_tag.jpg b/forum/skins/css3/media/images/img_tag.jpg deleted file mode 100644 index da9e409dc4b4eb3e1fa07a1978d80058c875c575..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 676 zcmex=iF;o{=v;^GnD0RsUZK7IjyJ|1CV5fNcw z8EI*08F@HhWM^mR<>8eO5Ri}(6%>_%OAyQWe}F-dgMptxftgW|fk}{&S&;Gn5r!%T z1}0{pBN2d^jfIti5d;uoKt(L9%mNHdOiYZ-EX*(&MkZz!K~@GsVKzm_i9&%&MvDX) z7@3(FS-9XvG64ky6@?4~6Bn|6aBQ5o@#4deEFwlh%KvXM@Bj^B5@Z%+uxGe%Wt*M< zwsksTQBxAqO4$6Kd}5ZKVi|ZV@YVABGassaGIbZs+V@vyt;M6>7m?Pti{oBAcHK0c z?cKA>|AKaSz5LX$|JUPR$KogMPu-)}enV_W!?*j#PUgox`}%eE=~=JeXO>==7V%^o z&nD&7$-m@xy0Krjv^m>7b4#&J>NMSDQNMLHD~nGGOC(Qz-8=hk+||!n-T+}5nBpZZ7gyj6^k zeN<8KY)jQSdo@LegW-d-Ci8@jCpT^7uDpy|Zj$7q;@bV_+T!cwtmbc@e&b}+3~+wu zGfk$3WBQcvC*lG9)j##*57Z~UlQ-e|_0~0a!R*4Sy?2kSTEzFE%giOHK(Sk;XY%#+ j3`ZsArl@I}Uv5_W000Sga6xAP000aC000aC&ZRPb000CW zNkls`UhJ)XGebcvR|5WXzRx}H`cmVRA=-?9dy>j&5B5{)=F!G z@#X?_Pz#kRaRKfv?Qy@zhQ{#La<3J{UL{}XU=3P6kjH^_nMINNL2^h!I%HN1KJnC# zoUPB66Po8HYis$-5^*gM8EKTrks9i#qMyWyV>Uy^&1}?H!f{ z@TAalQQr^hNoBX(3GzkdL+KL;js(lhCMivK>P2Ql{81q?#aJmyDG91(D#H*nHKN=) z2#^2hzoI3BZIb1@*a8<5nl=tRfW-G>UkNRS?8RyAju@~w)N3LJ^q+K_IT8H7_!UC~ zol=@RFl&*59HSAt`Am`|MsPfmLF2cjX=Z>yGbpx^cUJzaz3 z^4P5*p5DhSM!=l-#7Uzwpf%XDV)!6LPai#1Q6Y4)>J)9zX1a1;Xb>m~ z+zSd2VzGQcS`CfX)&pJ{IwE_mBb#Aq!OW&e71CymUl!(t*hojMMFo3t$U`{~ver#G zZFhh#dic2RgrwhMOKoMa=#7*!_6!i4rQ5hbQCBIN=mycHNR0hVV6^x8yc>ZRO+%_C`3JQ}^z(?Xa+D@|N%m&{ftq zX5>#0@^$$e(ePilIFSAFZ7~5Fuimfmjfd7_uKUB4VBMftBpEIxHHEon!?WDMTLA&h z(T_F_eGcOWB23FyaBFURveyS~i@Jw~20HDP2lF}=8t+lT32ljw9%UKi5G2b#@mDc(z{T4$5&7vJPdcas>6a<5?C_Cl2eHJ)V zQ*y%hKvVw11>OKujJbTHryicaJkn^m&5E#3N9|HG>a%4>WO~^8AKM$~V}R`w+x2;R zp;;GyE)WPfjcsDJ{-&|k-24BE&X8wMM;gFo9mvzF;OfqM=HS~fG|m5O@UoF>E3>x9 z`HgqXm(3LZ+IHe!e6YAtNXFx10000YdQ@0+Q*UN;cVTj6004N}D=#nC%goCzPEIUH d)ypqR2LLwM23QbN%3J^d002ovPDHLkV1ma$H -{% load extra_tags %} -{% load i18n %} -{% load user_tags %} -
- - -
- diff --git a/forum/skins/css3/templates/search.html b/forum/skins/css3/templates/search.html deleted file mode 100644 index 1d9c416..0000000 --- a/forum/skins/css3/templates/search.html +++ /dev/null @@ -1,25 +0,0 @@ -{% extends "base.html" %} - -{% load i18n %} - -{% block content %} -
- {% blocktrans with settings.APP_SHORT_NAME as app_name %} - Search in {{ app_name }} - {% endblocktrans %} -
-
-
-
- - -
-
- - - -
-
-
-{% endblock %} \ No newline at end of file diff --git a/forum/skins/default/media/js/osqa.main.js b/forum/skins/default/media/js/osqa.main.js index d929a16..e372638 100644 --- a/forum/skins/default/media/js/osqa.main.js +++ b/forum/skins/default/media/js/osqa.main.js @@ -1,7 +1,11 @@ var response_commands = { update_post_score: function(id, inc) { var $score_board = $('#post-' + id + '-score'); - $score_board.html(parseInt($score_board.html()) + inc) + var current = parseInt($score_board.html()) + if (isNaN(current)){ + current = 0; + } + $score_board.html(current + inc) }, update_user_post_vote: function(id, vote_type) { @@ -56,31 +60,6 @@ var response_commands = { $answer.find('.accept-answer').removeClass('on'); }, - update_comment_score: function(id, inc) { - var $comment_score = $('#comment-' + id + '-score'); - var count = parseInt($comment_score.html()); - - if (isNaN(count)) - count = 0; - - count += inc; - - if (count == 0) - count = ''; - - $comment_score.html(count); - }, - - update_likes_comment_mark: function(id, like_type) { - var $comment_like_mark = $("#comment-" + id + "-like"); - - if (like_type == "on") { - $comment_like_mark.addClass("on"); - } else { - $comment_like_mark.removeClass("on"); - } - }, - remove_comment: function(id) { var $comment = $('#comment-' + id); $comment.css('background', 'red') diff --git a/forum/skins/default/templates/node/comments.html b/forum/skins/default/templates/node/comments.html index 79f4df0..d62e521 100644 --- a/forum/skins/default/templates/node/comments.html +++ b/forum/skins/default/templates/node/comments.html @@ -6,7 +6,7 @@ -
+ {% if comment.score %}{{ comment.score }}{% endif %} @@ -18,7 +18,7 @@ {{comment.user}} ({% diff_date comment.added_at %}) {% if comment.can_like %} - {% endif %} diff --git a/forum/skins/default/templates/osqaadmin/index.html b/forum/skins/default/templates/osqaadmin/index.html index 5385da6..9e35a35 100644 --- a/forum/skins/default/templates/osqaadmin/index.html +++ b/forum/skins/default/templates/osqaadmin/index.html @@ -56,6 +56,8 @@
+

{%trans "Recalculate scores and reputation" %}

+ diff --git a/forum/urls.py b/forum/urls.py index 3b9ce76..2fea646 100644 --- a/forum/urls.py +++ b/forum/urls.py @@ -117,6 +117,7 @@ urlpatterns = patterns('', url(r'^%s$' % _('admin/'), app.admin.index, name="admin_index"), + url(r'^%s%s$' % (_('admin/'), _('denormalize/')), app.admin.recalculate_denormalized, name="admin_denormalize"), url(r'^%s%s$' % (_('admin/'), _('go_bootstrap/')), app.admin.go_bootstrap, name="admin_go_bootstrap"), url(r'^%s%s$' % (_('admin/'), _('go_defaults/')), app.admin.go_defaults, name="admin_go_defaults"), url(r'^%s(?P\w+)/$' % _('admin/'), app.admin.settings_set, name="admin_set"), diff --git a/forum/views/admin.py b/forum/views/admin.py index bd8a565..3fa02bc 100644 --- a/forum/views/admin.py +++ b/forum/views/admin.py @@ -5,11 +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.models import Activity, Question, Answer, User, Node from forum import const from forum import settings @@ -154,3 +155,18 @@ 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.vote_up_count = n.votes.filter(canceled=False, vote=1).count() + n.vote_down_count = n.votes.filter(canceled=False, vote=-1).count() + n.save() + + for u in User.objects.all(): + u.reputation = u.reputes.filter(canceled=False).aggregate(reputation=Sum('value'))['reputation'] + u.save() + + request.user.message_set.create(message=_('All values recalculated')) + return HttpResponseRedirect(reverse('admin_index')) + -- 2.39.5