From: hernani Date: Sun, 18 Apr 2010 22:42:31 +0000 (+0000) Subject: admin recalculate denormalized data tool and fix in comment votes X-Git-Tag: live~1023 X-Git-Url: https://git.openstreetmap.org./osqa.git/commitdiff_plain/7f14cb747791cc03d44045e2a0fcfb73eed298e4 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 --- 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 da9e409..0000000 Binary files a/forum/skins/css3/media/images/img_tag.jpg and /dev/null differ diff --git a/forum/skins/css3/media/images/tag.png b/forum/skins/css3/media/images/tag.png deleted file mode 100644 index ce209b2..0000000 Binary files a/forum/skins/css3/media/images/tag.png and /dev/null differ diff --git a/forum/skins/css3/media/style/style.css b/forum/skins/css3/media/style/style.css deleted file mode 100644 index 687ce7e..0000000 --- a/forum/skins/css3/media/style/style.css +++ /dev/null @@ -1,2510 +0,0 @@ -@import url(jquery.autocomplete.css); - -body { - background: #EEE; - font-size: 12px; - line-height: 150%; - margin: 0; - padding: 0; - color: #000; - font-family: sans-serif; -} - -div { - margin: 0 auto; - padding: 0; -} - -h1, h2, h3, h4, h5, h6, ul, li, dl, dt, dd, form, img, p { - margin: 0; - padding: 0; - border: none; -} - -label { - vertical-align: middle; -} - -hr { - border: none; - border-top: 1px dashed #ccccce; -} - -input, select { - vertical-align: middle; - font-family: Trebuchet MS, "segoe ui", Helvetica, "Microsoft YaHei", ? ?, Tahoma, Verdana, MingLiu, PMingLiu, Arial, sans-serif; -} - -p { - margin-bottom: 13px; - font-size: 13px; - line-height: 140%; -} - -a { - color: #333333; - text-decoration: none; -} - -.badges a { - color: #763333; - text-decoration: underline; -} - -a:hover { - text-decoration: underline; -} - -.block { - width: 960px; - height: auto; -} - -.fleft { - float: left; -} - -.fright { - float: right; -} - -.tleft { - text-align: left; -} - -.tcenter { - text-align: center; -} - -.tright { - text-align: right; -} - -.dis { - display: block; -} - -.inline { - display: inline; -} - -.none { - display: none; -} - -.red { - color: #CC0000; -} - -.b { - font-weight: bold; -} - -.f10 { - font-size: 10px; -} - -.f11 { - font-size: 11px; -} - -.f12 { - font-size: 12px; -} - -.f13 { - font-size: 13px; -} - -.f14 { - font-size: 14px; -} - -.white { - color: #FFFFFF; -} - -.u { - text-decoration: underline; -} - -.spacer1 { - height: 6px; - line-height: 6px; - clear: both; - visibility: hidden; -} - -.spacer3 { - height: 30px; - line-height: 30px; - clear: both; - visibility: hidden; -} - -h1 { - font-size: 160%; - padding: 5px 0 5px 0; -} - -h2 { - font-size: 140%; - padding: 3px 0 3px 0; -} - -h3 { - font-size: 120%; - padding: 3px 0 3px 0; -} - -ul { - list-style: disc; - margin-left: 20px; - padding-left: 0px; - margin-bottom: 1em; -} - -ol { - list-style: decimal; - margin-left: 30px; - margin-bottom: 1em; - padding-left: 0px; -} - -td ul { - vertical-align: middle; -} - -li input { - margin: 3px 3px 4px 3px; -} - -pre { - font-family: Consolas, Monaco, Liberation Mono, Lucida Console, Monospace; - font-size: 100%; - margin-bottom: 10px; - overflow: auto; - width: 580px; - background-color: #F5F5F5; - padding-left: 5px; - padding-top: 5px; - padding-bottom: 20px ! ie7; -} - -code { - font-family: Consolas, Monaco, Liberation Mono, Lucida Console, Monospace; - font-size: 100%; - -} - -blockquote { - margin-bottom: 10px; - margin-right: 15px; - padding: 10px 0px 1px 10px; - background-color: #F5F5F5; -} - -/*????*/ -#wrapper { - width: 972px; - background: #FFF; - margin: auto; - padding: 6px; -} - -#roof { - position: relative; - margin-top: 0px; - background: #3291C9; -} - -#room { - padding: 10px 0 10px 0; - border-bottom: 1px solid #777; -} - -#CALeft { - width: 710px; - float: left; - position: relative; -} - -#CARight { - width: 240px; - float: right; -} - -#CAFull { - float: left; - padding: 0 5px 0 5px; - width: 950px; -} - -#ground { - width: 100%; - border-top: 1px solid #000; - padding-top: 6px; - padding-bottom: 0px; - text-align: center; - background: #777; -} - -/*#licenseLogo {position:absolute;top:10px;right:10px;}*/ - -/*??????*/ -#top { - position: absolute; - top: 0px; - right: 0px; - height: 20px; - text-align: right; - padding: 3px; - width: 500px; -} - -/*#header {width:960px;}*/ -#top a { - height: 35px; - text-align: right; /*letter-spacing:1px; */ - margin-left: 20px; - text-decoration: underline; - font-size: 12px; - color: #333333; -} - -#logo { - padding: 5px 0px 0px 0px; -} - -#navBar { - float: clear; - position: relative; - display: block; - width: 960px; -} - -#navBar .nav { - margin: 20px 0px 0px 16px; /*letter-spacing:1px; */ -} - -#navBar .nav a { - color: #333333; - background-color: #8BE334; - -moz-border-radius-topleft: 6px; - -webkit-border-top-left-radius: 6px; - -moz-border-radius-topright: 6px; - -webkit-border-top-right-radius: 6px; - border: 1px solid #888888; - border-bottom: none; - padding: 0px 15px 3px 15px; - height: 25px; - line-height: 30px; - margin-left: 3px; - font-size: 14px; - font-weight: 400; - text-decoration: none; - display: block; - float: left; -} - -#navBar .nav a:hover { - text-decoration: underline -} - -#navBar .nav a.on { - height: 24px; - line-height: 28px; - border-bottom: 1px solid #a40000; - border-right: 1px solid #820000; - border-top: 1px solid #d40000; - border-left: 1px solid #d40000; /*background:#A31E39; */ - background: #a40000; - color: #FFF; - font-weight: 600; - text-decoration: none -} - -#navBar .nav a.special { - font-size: 14px; - color: #B02B2C; - font-weight: bold; - text-decoration: none; -} - -#navBar .nav a.special:hover { - text-decoration: underline; -} - -#navBar .nav div.focus { - float: right; - padding-right: 0px; -} - -#searchBar { - width: 958px; - background-color: #264A5F; /*#e9b96e;*/ - border: 1px solid #aaaaaa; - padding: 12px; - -moz-border-radius-topleft: 6px; - -webkit-border-top-left-radius: 6px; - -moz-border-radius-topright: 6px; - -webkit-border-top-right-radius: 6px; -} - -#searchBar .searchInput { - font-size: 25px; - height: 30px; - width: 600px; - background: #EEEEEE; -} - -#searchBar .searchBtn { - font-size: 14px; - height: 26px; - width: 80px; -} - -#searchBar .options { - padding: 3px 0 3px 0; - font-size: 100%; - color: #EEE; /*letter-spacing:1px;*/ -} - -#searchBar .options INPUT { - margin: 0 3px 0 15px; -} - -#searchBar .options INPUT:hover { - cursor: pointer -} - -#ask_teaser { - font-size: 35px; - color: white; - font-weight: bolder; - display: inline; - margin-right: 25px; - text-shadow: 4px 4px 4px #000; - vertical-align: middle; -} - -#ask_input { - display: inline; -} - -#go_btn { - width: 75px; - height: 40px; - font-weight: bolder; - font-size: 30px; - -moz-border-radius: 5px; - -webkit-border-radius: 5px; - border: 2px solid #35609A; - background-color: #72A0D0; - color: #555753; -} - -/*????*/ -#listA { - float: left; - background-color: #FFF; - padding: 0 0px 0 0px; - width: 100%; -} - -#listA .qstA { - position: relative; - padding: 3px 5px 5px 10px; - border-top: 1px dashed #ccccce; - /*border-left:1px solid #ebebbe; - border-right:1px solid #b4b48e; - border-bottom:1px solid #b4b48e;*/ - background: white; /* #f9f7ed;*/ -/*margin:10px 0 10px 0;*/ -/*background:url(../images/quest-bg.gif) repeat-x top;*/ -} - -#listA .qstA thumb { - float: left; -} - -#listA .qstA H2 { - font-size: 14px; - font-weight: 800; - margin: 8px auto; - padding: 0px; -} - -#listA .qstA H2 a { - color: 333333 /*#2e3436*/; - font-size: 15px; -} - -#listA .qstA .stat { - position: absolute; - right: 0px; - bottom: 5px; - font-size: 12px; /*letter-spacing:1px;*/ - float: right; -} - -#listA .qstA .stat span { - margin-right: 5px; -} - -#listA .qstA .stat td { - min-width: 40px; - text-align: center; -} - -#listA .qstA .stat .num { - font-family: sans-serif; - color: #a40000; - /*background:#eeeeec; - border: 1px solid #babdb6;*/ - margin: 0px; - font-size: 17px; - font-weight: 800; -} - -#listA .qstA table { - border-spacing: 0px; -} - -#listA .qstA table td { - padding: 0px; - width: 60px; - text-align: center; -} - -#listA .qstA .stat .unit { - color: #777777; - margin: 0px -} - -#listA .qstA .from { - margin-top: 5px; - font-size: 13px; - color: #777777; -} - -#listA .qstA .from .score { - font-family: sans-serif; - color: #555555; -} - -#listA .qstA .date { - margin-left: 10px; - color: #777777; -} - -#listA .qstA .wiki { - color: #763333; - font-size: 12px; -} - -#listA .qstA .from a { -} - -#listA .qstA .from IMG { - vertical-align: middle; -} - -#listA .qstA .author { - font-weight: 400; -} - -#listA .qstA .author a { - color: #444444; -} - -#listA .qstA .summary { - margin-right: 5px; -} - -.short-summary { - position: relative; - padding: 3px 5px 5px 10px; - border-top: 1px dotted #ccccce; - overflow: hidden; - width: 700px; - float: left; -} - -.short-summary h2 { - font-size: 16px; - font-family: "Trebuchet MS", "segoe ui", arial, sans-serif; -} - -.short-summary .userinfo { - float: right; - margin-top: 8px; -} - -.short-summary .counts { - float: right; - margin-top: 4px; -} - -.short-summary .counts .item-count { - font-size: 17px; - font-weight: 800; -} - -.short-summary .votes, -.short-summary .status, -.short-summary .views { - font-size: 12px; - text-align: center; - margin: 0 0 0 7px; - padding: 4px 2px 0px 2px; - width: 46px; - height: 48px; - float: left; - -moz-border-radius: 3px; - -khtml-border-radius: 3px; - -webkit-border-radius: 3px; - border-right: 1px solid #264A5F; - border-bottom: 1px solid #264A5F; -} - -#question-table { - margin-bottom: 10px; /*border-bottom:1px solid #888a85;*/ -} - -.evenMore { - font-size: 14px; - font-weight: 800; -} - -.questions-count { - font-size: 32px; - font-family: sans-serif; - font-weight: 600; - padding: 0 0 5px 0px; - color: #a40000; - margin-top: 3px; -} - -/*???*/ -.boxA { - background: #264A5F; - padding: 6px; - margin-bottom: 8px; - border: 1px solid #babdb6; - -moz-border-radius: 5px; - -khtml-border-radius: 5px; - -webkit-border-radius: 5px; -} - -.boxA H3 { - font-size: 13px; - font-weight: 800; - color: #FFF; - margin: 0; - padding: 0; - margin-bottom: 4px; -} - -.boxA .body { - border: 1px solid #999; - padding: 8px; - background: #FFF; - font-size: 13px; -} - -.boxA .more { - padding: 2px; - text-align: right; - font-weight: 800; -} - -.boxB { - background: #F9F7ED; - padding: 6px; - margin-bottom: 8px; - border: solid 1px #aaaaaa; -} - -.boxB H3 { - font-size: 13px; - font-weight: 800; - color: #000; - margin: 0; - padding: 0 0 0 15px; - margin-bottom: 4px; - background: url(../images/dot-g.gif) no-repeat left center; -} - -.boxB .body { - border: 1px solid #aaaaaa; - padding: 8px; - background: #FFF; - font-size: 13px; - line-height: 160%; -} - -.boxB .more { - padding: 1px; - text-align: right; - font-weight: 800; -} - -.boxC { - background: #EEE; /*f9f7ed;*/ - padding: 10px; - margin-bottom: 8px; - border-top: 1px solid #eeeeec; - border-left: 1px solid #eeeeec; - border-right: 1px solid #a9aca5; - border-bottom: 1px solid #babdb6; -} - -.boxC p { - margin-bottom: 8px; -} - -.boxC p.nomargin { - margin: 0px; -} - -.boxC p.info-box-follow-up-links { - text-align: right; - margin: 0; -} - -/*??*/ -.pager { - margin-top: 10px; - margin-bottom: 16px; - float: left; -} - -.pagesize { - margin-top: 10px; - margin-bottom: 16px; - float: right; -} - -/** PAGINATOR **/ -.paginator { - padding: 5px 0 10px 0; - font: normal 12px sans-serif; -} - -.paginator .prev-na, -.paginator .next-na { - padding: .3em; - font: bold .875em sans-serif; -} - -.paginator .prev-na, -.paginator .next-na { - border: 1px solid #ccc; - background-color: #f9f9f9; - color: #aaa; - font-weight: normal; -} - -.paginator .prev a, .paginator .prev a:visited, -.paginator .next a, .paginator .next a:visited { - border: 1px solid #fff; - background-color: #fff; - color: #777; - padding: 2px 4px 3px 4px; - font: bold 100% sans-serif; -} - -.paginator .prev, .paginator .prev-na { - margin-right: .5em; -} - -.paginator .next, .paginator .next-na { - margin-left: .5em; -} - -.paginator .page a, .paginator .page a:visited, .paginator .curr { - padding: .25em; - font: normal .875em verdana; - border: 1px solid #ccc; - background-color: #fff; - margin: 0em .25em; - color: #777; -} - -.paginator .curr { - background-color: #777; - color: #fff; - border: 1px solid #777; - font-weight: bold; -} - -.paginator .page a:hover, -.paginator .curr a:hover, -.paginator .prev a:hover, -.paginator .next a:hover { - color: #fff; - background-color: #777; - border: 1px solid #777; - text-decoration: none; -} - -.paginator .text { - color: #777; - padding: .3em; - font: bold 100% sans-serif; -} - -.paginator-container { - float: right; - padding: 10px 0 10px 0; -} - -.paginator-container-left { - padding: 5px 0 10px 0; -} - -/*??*/ -.tag { - font-size: 13px; - font-weight: normal; - color: #333; - text-decoration: none; - background-color: #EEE; - border-left: 3px solid #777; - border-top: 1px solid #EEE; - border-bottom: 1px solid #CCC; - border-right: 1px solid #CCC; - padding: 1px 8px 1px 8px; -} - -.tags { - font-family: sans-serif; - line-height: 200%; - display: block; - margin-top: 5px; -} - -.tags a { - background: url('/m/css3/media/images/tag.png') no-repeat center left; - white-space: nowrap; - font-size: 13px; - font-weight: normal; - color: #333; - text-decoration: none; - background-color: #EEE; - margin-right: 3px; - padding: 2px 10px 2px 16px; - -moz-border-radius: 2px; - -webkit-border-radius: 2px; - border-right: 1px solid #264A5F; - border-bottom: 1px solid #264A5F; -} - -.tags a:hover { - background-color: #fFF; - color: #333; -} - -.tagsbox { - line-height: 200%; -} - -.tagsbox a { - font-size: 13px; - font-weight: normal; - color: #333; - text-decoration: none; - background-color: #EEE; - border-left: 3px solid #777; - border-top: 1px solid #EEE; - border-bottom: 1px solid #CCC; - border-right: 1px solid #CCC; - padding: 1px 8px 1px 8px; -} - -.tagsbox a:hover { - background-color: #fFF; - color: #333; -} - -.tag-number { - font-weight: 700; - font-family: sans-serif; -} - -.marked-tags { - margin-top: 0px; - margin-bottom: 5px; -} - -.deletable-tag { - margin-right: 3px; - white-space: nowrap; -} - -/*??*/ -a.medal { - font-size: 14px; - line-height: 250%; - font-weight: 800; - color: #333; - text-decoration: none; - background: url(/m/default/media/images/medala.gif) no-repeat; - border-left: 1px solid #EEE; - border-top: 1px solid #EEE; - border-bottom: 1px solid #CCC; - border-right: 1px solid #CCC; - padding: 4px 12px 4px 6px; -} - -a:hover.medal { - color: #333; - text-decoration: none; - background: url(/m/default/mediaimages/medala_on.gif) no-repeat; - border-left: 1px solid #E7E296; - border-top: 1px solid #E7E296; - border-bottom: 1px solid #D1CA3D; - border-right: 1px solid #D1CA3D; -} - -/*Tab?*/ -.tabBar { - background-color: #FFF; - border-bottom: 1px solid white; - height: 30px; - width: 100%; - clear: both; - margin-bottom: 3px; - -moz-border-radius: 2px; - -khtml-border-radius: 2px; - -webkit-border-radius: 2px; -} - -.tabsA { - background-color: #FFF; - float: right; - position: relative; - display: block; - font-weight: bold; - height: 20px; -} - -.tabsB { - background-color: #FFF; - float: left; - position: relative; - display: block; - font-weight: bold; - height: 20px; -} - -.tabsA a.on, .tabsA a:hover, .tabsB a.on, .tabsB a:hover { - background: #fff; - color: #a40000; - border-top: 1px solid #babdb6; - border-left: 1px solid #babdb6; - border-right: 1px solid #888a85; - border-bottom: 1px solid #888a85; - height: 24px; - line-height: 26px; - margin-top: 3px; - padding: 0px 11px 0px 11px; -} - -.tabsA a { - background: #f9f7eb; - border-top: 1px solid #eeeeec; - border-left: 1px solid #eeeeec; - border-right: 1px solid #a9aca5; - border-bottom: 1px solid #888a85; - color: #888a85; - display: block; - float: left; - height: 20px; - line-height: 22px; - margin: 5px 4px 0 0; - padding: 0 11px 0 11px; - text-decoration: none; -} - -.tabsB a { - background: #eee; - border: 1px solid #eee; - color: #777; - display: block; - float: left; - height: 22px; - line-height: 28px; - margin: 5px 0px 0 4px; - padding: 0 11px 0 11px; - text-decoration: none; -} - -/*.tabsA a:hover, .tabsB a:hover {background: #fff;border: 1px solid #777;border-bottom:3px solid #FFF;}*/ -.headlineA { - font-size: 13px; - border-bottom: 1px solid #777; - padding-bottom: 2px; - font-weight: 800; - margin-bottom: 12px; - text-align: right; - height: 30px; -} - -.headQuestions { - float: left; - height: 23px; - line-height: 23px; - margin: 5px 0 0 5px; - padding: 0px 6px 0px 15px; - font-size: 15px; - font-weight: 700; - border-bottom: 0px solid #777; - border-left: 0px solid #darkred; - background-color: #FFF; - background: url(../images/dot-list.gif) no-repeat left center; -} - -.headAnswers { - float: left; - padding: 3px; - font-size: 18px; - font-weight: 800; - background: url(../images/ico_answers.gif) left 2px no-repeat; - padding-left: 24px; -} - -.headTags { - float: left; - padding: 3px; - font-size: 18px; - font-weight: 800; - background: url(../images/ico_tags.gif) no-repeat; - padding-left: 24px; -} - -.headUsers { - float: left; - height: 23px; - line-height: 23px; - margin: 5px 0 0 5px; - padding: 0px 6px 0px 15px; - font-size: 15px; - font-weight: 700; - border-bottom: 0px solid #777; - border-left: 0px solid #darkred; - background-color: #FFF; - background: url(../images/dot-list.gif) no-repeat left center; -} - -.headMedals { - float: left; - height: 23px; - line-height: 23px; - margin: 5px 0 0 5px; - padding: 0px 6px 0px 15px; - font-size: 15px; - font-weight: 700; - border-bottom: 0px solid #777; - border-left: 0px solid #darkred; - background-color: #FFF; - background: url(../images/dot-list.gif) no-repeat left center; -} - -.headLogin { - float: left; - padding: 3px; - font-size: 15px; - font-weight: 800; - background: url(../images/ico_login.gif) no-repeat; - padding-left: 24px; -} - -.headNormal { - text-align: left; - padding: 3px; - font-size: 15px; - margin-bottom: 12px; - font-weight: bold; - border-bottom: 1px solid #777; -} - -.headUser { - text-align: left; - padding: 5px; - font-size: 20px; /*letter-spacing:1px;*/ - margin-bottom: 12px; - font-weight: 800; - border-bottom: 1px solid #777; -} - -/*RSS??*/ -#feeds { - margin: 10px 0; -} - -#feeds a { - background: url(../images/feed-icon-small.png) no-repeat 0; - padding-left: 18px; - font-weight: 700; - font-size: 13px; -} - -/*??*/ -#question { - margin-bottom: 30px; -} - -#question h1 { - font-size: 15px; - background: #CCC; - padding: 6px 8px;; -} - -#question .body { - background: #F7F7F7; - padding: 20px 10px; -} - -.starter { - padding: 10px; - background: #E0EAF1; -} - -.vote { - font-size: 20px; - color: #666; - font-weight: 800; -} - -.questions-related { - font-weight: 700; - word-wrap: break-word; -} - -.questions-related p { - line-height: 20px; - margin-bottom: 10px; - font-size: 100%; -} - -.question-status { - margin-top: 10px; - padding: 20px; - background-color: #F5F5F5; - text-align: center; -} - -.question-status h3 { - font-size: 125%; -} - -.question-body { - min-height: 100px; - font-size: 13px; - line-height: 20px; -} - -.question-body IMG { - max-width: 600px; -} - -.question-mark { - /*background-color:#fff5e0; - border-top: 1px solid #eeeeec; - border-right: 1px solid #babdb6; - border-bottom: 1px solid #babdb6; - border-left: 1px solid #eeeeec;*/ - text-align: left; - padding: 5px; - overflow: hidden; -} - -.question-edit { - text-align: left; - overflow: hidden; -} - -.vote-buttons { - float: left; - text-align: center; -} - -.vote-buttons IMG { - cursor: pointer; -} - -.vote-number { - font-family: Arial; - padding: 0px 0 3px 0; - font-size: 140%; - font-weight: bold; - color: #777; -} - -.question-img-upvote:hover { - background: url(../images/vote-arrow-up-on.png) -} - -.question-img-downvote:hover { - background: url(../images/vote-arrow-down-on.png) -} - -.question-img-favorite:hover { - background: url(../images/vote-favorite-on.png) -} - -.favorite-number { - padding: 0px; - font-size: 100%; - font-family: Arial; - font-weight: bold; - color: #777; -} - -.vote-notification { - z-index: 1; - cursor: pointer; - display: none; - position: absolute; - padding: 15px; - color: White; - background-color: darkred; - text-align: center; -} - -.vote-notification a { - color: White; - text-decoration: underline; -} - -.offensive-flag a { - color: #777; - padding: 3px; - cursor: pointer; -} - -.offensive-flag a:hover { - background-color: #777; - text-decoration: none; - color: #fff; -} - -.linksopt a { - color: #777; - padding: 3px; - cursor: pointer; -} - -.linksopt a:hover { - background-color: #777; - text-decoration: none; - color: #fff; -} - -.action-link a { - color: #777; - padding: 3px; - cursor: pointer; -} - -.action-link: a hover { - background-color: #777; - text-decoration: none; - color: #fff; -} - -.action-link-separator { - color: #ccc; -} - -.wiki-category { - margin-left: 5px; - color: #999; - font-size: 90%; -} - -div.comments { - line-height: 150%; - padding: 10px 0; -} - -div.post-comments { - clear: both; - background: url(../images/gray-up-arrow-h18px.png) no-repeat; - width: 100%; - padding-left: 12px; - margin: 3px 0 10px 0; -} - -form.post-comments textarea { - height: 6em; - margin-bottom: 4px; -} - -form.post-comments input { - margin-left: 10px; - margin-top: 1px; - vertical-align: top; - width: 100px; -} - -span.text-counter { - margin-right: 20px; - font-size: 11px; -} - -span.form-error { - color: #990000; - font-weight: normal; - margin-left: 5px; -} - -p.form-item { - margin: 0px; -} - -div.comments-container, div.comments-container-accepted, div.comments-container-owner, div.comments-container-deleted { - padding: 0; -} - -.post-comments a { - color: #888888; - padding: 0 3px 2px; -} - -a.comments-link, a.comments-link-accepted, a.comments-link-owner, a.comments-link-deleted { - color: black; - font-size: 11px; - background: #eeeeee; - padding: 3px; - cursor: pointer; -} - -.post-comments a:hover { - background-color: #777777; - color: white; - text-decoration: none; -} - -a.comment-user, a.comment-user:hover { - background-color: inherit; - color: blue; - padding: 0; -} - -a.comment-user:hover { - text-decoration: underline; -} - -/*??*/ -#answers { -} - -.answer { - padding-top: 10px; - width: 100%; - border-bottom: 1px solid #ccccce; -} - -.answer-body { - min-height: 80px; - font-size: 13px; - line-height: 20px; -} - -.answer-body IMG { - max-width: 600px; -} - -.accepted-answer { - background-color: #EBFFE6; - border-bottom-color: #9BD59B; -} - -.accepted-answer .comments-link { - background-color: #CCFFBF; -} - -.accepted-answer .comments-container { - background-color: #CCFFBF; -} - -.answered { - background: #72A0D0; - color: #000000; -} - -.answered-accepted { - background: #8BE334; - color: #000000; -} - -.unanswered { - background: #A40000; - color: white; -} - -.answered-by-owner { - background: #E9E9FF; -} - -.answered-by-owner .comments-link { - background-color: #E6ECFF; -} - -.answered-by-owner .comments-container { - background-color: #E6ECFF; -} - -.answered-accepted strong { - color: #E1E818; -} - -.answer-img-accept:hover { - background: url(../images/vote-accepted-on.png) -} - -.deleted { - background: #F4E7E7 none repeat scroll 0 0; -} - -/*????*/ -/* -.tagsbox {} -.tagsbox a {color:#000;line-height:30px;margin-right:10px;font-size:100%;background-color:#F9F7ED;padding:3px;border:1px solid #aaaaaa;} -.tagsbox a:hover {text-decoration:none;background-color:#F9F7ED;color:#B02B2C;} */ -.tagsList { - margin: 0; - list-style-type: none; - padding: 0px; - min-height: 360px; -} - -.tagsList li { - width: 235px; - float: left; -} - -.badge-list { - margin: 0; - list-style-type: none; -} - -/*??*/ -.list-item { - margin-left: 15px; -} - -.list-item LI { - list-style-type: disc; - font-size: 13px; - line-height: 20px; - margin-bottom: 10px; -} - -/* openid styles */ -.form-row { - line-height: 25px; -} - -table.form-as-table { - margin-top: 5px; -} - -table.form-as-table ul { - list-style-type: none; - display: inline; -} - -table.form-as-table li { - display: inline; -} - -table.form-as-table th { - text-align: left; - font-weight: normal; -} - -table.form-as-table pre { - display: inline; -} - -table.check-table td { - padding-right: 50px; -} - -/*.form-row li label { - display: inline -}*/ -.submit-row { - line-height: 30px; - padding-top: 10px; - display: block; - clear: both; -} - -.errors { - line-height: 20px; - color: red; -} - -.error { - color: darkred; - margin: 0; - font-size: 10px; -} - -.error-list li { - padding: 5px; -} - -.fieldset { -/* border:solid 1px #777;*/ - border: none; - margin-top: 10px; - padding: 10px; -} - -.openid-input { - background: url(../images/openid.gif) no-repeat; - padding-left: 15px; - cursor: pointer; -} - -.openid-login-input { - background-position: center left; - background: url(../images/openid.gif) no-repeat 0% 50%; - padding: 5px 5px 5px 15px; - cursor: pointer; - font-family: Trebuchet MS; - font-weight: 300; - font-size: 150%; - width: 500px; -} - -.openid-login-submit { - height: 40px; - width: 80px; - line-height: 40px; - cursor: pointer; - border: 1px solid #777; - font-weight: bold; - font-size: 120%; -} - -.openid-samples { - -} - -.openid-samples .list, .list li { - font-family: Trebuchet MS, "segoe ui", Helvetica, "Microsoft YaHei", ? ?, Tahoma, Verdana, MingLiu, PMingLiu, Arial, sans-serif; - list-style: none !important; - margin-left: -30px !important; - line-height: 20px !important; -} - -/*????*/ -span.form-error { - color: #990000; - font-size: 90%; - font-weight: normal; - margin-left: 5px; -} - -.title-desc { - color: #666666; - font-size: 90%; -} - -/*adjustment for editor preview*/ -#editor { - font-size: 100%; - min-height: 200px; - line-height: 18px; - width: 100%; -} - -.wmd-preview { - margin-top: 10px; - padding: 6px; - width: 100%; - background-color: #F5F5F5; - min-height: 20px; -} - -.wmd-preview pre { - background-color: #E7F1F8; - -} - -.wmd-preview blockquote { - background-color: #eee; -} - -.wmd-preview IMG { - max-width: 600px; -} - -.preview-toggle { - font-weight: 600; - width: 100%; - color: #aaa; /*letter-spacing:1px;*/ - text-align: left; -} - -.preview-toggle span:hover { - cursor: pointer; -} - -.edit-content-html { - border-top: 1px dotted #D8D2A9; - border-bottom: 1px dotted #D8D2A9; - margin: 5px 0 5px 0; -} - -/*????*/ - -#revisions { - width: 950px; -} - -.revision { - margin: 10px 0 10px 0; - width: 100%; - font-size: 13px; -} - -.revision .header { - background-color: #eee; - padding: 5px; - cursor: pointer; -} - -.revision .author { - background-color: #E9E9FF; -} - -.revision .summary { - padding: 5px 0 10px 0; -} - -.revision .summary span { - background-color: yellow; - padding-left: 3px; - padding-right: 3px; - display: inline; -} - -.revision h1 { - font-size: 130%; - font-weight: 600; - padding: 15px 0 15px 0; -} - -.revision-mark { - width: 200px; - text-align: left; - display: inline-block; - font-size: 90%; - overflow: hidden; -} - -.revision-number { - font-size: 300%; - font-weight: bold; - font-family: sans-serif; -} - -.revision .body { - padding-left: 10px; - margin-bottom: 50px; -} - -.revision .answerbody { - padding: 10px 0 5px 10px; -} - -/* Revision pages */ -del { - color: #FF5F5F; -} - -del .post-tag { - color: #FF5F5F; -} - -ins { - background-color: #97ff97; -} - -ins .post-tag { - background-color: #97ff97; -} - -/*??????*/ -.count { - font-family: Arial; - font-size: 200%; - font-weight: 700; - color: #777 -} - -.scoreNumber { - font-family: Arial; - font-size: 35px; - font-weight: 800; - color: #777; - line-height: 40px; /*letter-spacing:0px*/ -} - -.user-details { - font-size: 13px; -} - -.user-about { - background-color: #EEEEEE; - height: 200px; - line-height: 20px; - overflow: auto; - padding: 10px; - width: 90%; -} - -.user-edit-link { - background: url(../images/edit.png) no-repeat; - padding-left: 20px; -} - -.favorites-count-off { - color: #919191; - float: left; - padding: 3px; - margin: 10px 0 0 0; - text-align: center; -} - -.favorites-count { - color: #D4A849; - float: left; - padding: 3px; - margin: 10px 0 0 0; - text-align: center; -} - -.favorites-empty { - width: 32px; - height: 45px; - float: left; -} - -.question-summary { - border-bottom: 1px dotted #999999; - float: left; - overflow: hidden; - padding: 11px 0; - width: 670px; -} - -.user-info-table { - width: 950; - margin-bottom: 10px; -} - -.user-stats-table .question-summary { - width: 800px; -} - -.narrow .stats { - background: transparent none repeat scroll 0 0; - float: left; - height: 48px; - margin: 0 0 0 7px; - padding: 0; - width: auto; - font-family: Arial; -} - -.stats div { - font-size: 11px; - text-align: center; -} - -.narrow .votes { - background: #EEEEEE none repeat scroll 0 0; - float: left; - height: 42px; - margin: 0 3px 0 0; - padding: 5px; - width: 46px; - text-align: center; - -moz-border-radius: 5px; - -khtml-border-radius: 5px; - -webkit-border-radius: 5px; -} - -.narrow .summary { - width: 600px; - display: inline-block; -} - -.narrow .summary h3 { - padding: 0px; - margin: 0px; -} - -.narrow .views { - height: 42px; - float: left; - margin: 0 7px 0 0; /*padding:5px 0 5px 4px;*/ - padding: 5px; - width: 46px; - text-align: center; - -moz-border-radius: 5px; - -khtml-border-radius: 5px; - -webkit-border-radius: 5px; - color: #777; -} - -.narrow .status { - float: left; - height: 42px; - margin: 0 3px 0 0; - padding: 5px; - width: 46px; - text-align: center; - -moz-border-radius: 5px; - -khtml-border-radius: 5px; - -webkit-border-radius: 5px; -} - -.narrow .vote-count-post { - font-weight: 800; - display: block; - margin: 0; - font-size: 190%; - color: #555; - line-height: 20px; -} - -.narrow .answer-count-post { - font-weight: 800; - display: block; - margin: 0; - font-size: 190%; -} - -.narrow .views-count-post { - font-weight: 800; - display: block; - margin: 0; - font-size: 190%; -} - -div.started { - color: #999999; - float: right; - line-height: 18px; - -} - -.narrow div.started { - line-height: inherit; - padding-top: 4px; - white-space: nowrap; - width: auto; -} - -.relativetime { - font-weight: bold; - text-decoration: none; -} - -div.started a { - font-weight: bold; -} - -div.started .reputation-score { - margin-left: 1px; -} - -.narrow .tags { - float: left; -} - -.answer-summary { - display: block; - clear: both; - padding: 3px; -} - -.answer-votes { - background-color: #EEEEEE; - color: #555555; - float: left; - font-family: Arial; - font-size: 110%; - font-weight: bold; - height: 15px; - padding: 4px 4px 5px; - text-align: center; - text-decoration: none; - width: 20px; - margin-right: 10px; -} - -.vote-count { - font-family: Arial; - font-size: 160%; - font-weight: 700; - color: #777; -} - -.user-action { - -} - -.user-action-1 { - font-weight: bold; - color: #333; -} - -.user-action-2 { - font-weight: bold; - color: #CCC; -} - -.user-action-3 { - color: #333; -} - -.user-action-4 { - color: #333; -} - -.user-action-5 { - color: darkred; -} - -.user-action-6 { - color: darkred; -} - -.user-action-7 { - color: #333; -} - -.user-action-8 { - padding: 3px; - font-weight: bold; - background-color: #CCC; - color: #763333; -} - -.revision-summary { - background-color: #FFFE9B; - padding: 2px; -} - -.question-title-link a { - font-weight: bold; - color: #0077CC; -} - -.answer-title-link a { - color: #333; -} - -.post-type-1 a { - font-weight: bold; - -} - -.post-type-3 a { - font-weight: bold; - -} - -.post-type-5 a { - font-weight: bold; -} - -.post-type-2 a { - color: #333; -} - -.post-type-4 a { - color: #333; -} - -.post-type-6 a { - color: #333; -} - -.post-type-8 a { - color: #333; -} - -/*????*/ -.bookInfo { - float: left; - width: 940px; - padding: 5px; -} - -.bookCover { - float: left; - width: 200px; -} - -.bookCover img { - border: 1px solid #ccc; - max-width: 200px; -} - -.bookSummary { - float: left; - font-size: 13px; -} - -.blogRss { - float: right; - margin: 0 10px 0 0; - width: 460px; - height: 240px; - background-color: #EEE; - padding: 5px; -} - -.bookQuestions { - margin-bottom: 10px; -} - -.bookFeed { - float: right; -} - -.bookAsk { -/*letter-spacing:1px; */ - float: right; - margin: -30px 10px 0 0; - padding: 3px 5px 3px 5px; -} - -.bookAsk a { - font-size: 15px; - color: #FFF; - font-weight: bold; - text-decoration: none; - background-color: #EC7000; - padding: 3px 6px 3px 6px; -} - -.bookAsk a:hover { - text-decoration: underline; -} - -/*??????*/ -.hilite { - background-color: #ff0; -} - -.hilite1 { - background-color: #ff0; -} - -.hilite2 { - background-color: #f0f; -} - -.hilite3 { - background-color: #0ff; -} - -.userStatus { - margin-left: 12px; - color: #FFF; - float: right; -} - -.userStatus a { - color: #FFF; -} - -.gold, .badge1 { - color: #FFCC00; -} - -.silver, .badge2 { - color: #CCCCCC; -} - -.bronze, .badge3 { - color: #CC9933; -} - -.score { - font-weight: 800; - color: #333; -} - -.footerLinks { - color: #EEE; - font-size: 13px; /* letter-spacing:1px;*/ -} - -.footerLinks a { - color: #FFF; - font-size: 13px; -} - -.subSearch { - margin-bottom: 12px; - padding: 4px; -} - -a.comment { - background: #EEE; - color: #993300; - padding: 4px; -} - -a.permLink { - padding: 2px; -} - -a.offensive { - color: #999; -} - -ul.bulleta li { - background: url(../images/bullet_green.gif) no-repeat 0px 2px; - padding-left: 16px; - margin-bottom: 4px; -} - -.user { - padding: 5px; - line-height: 140%; - width: 170px; -} - -.user ul { - margin: 0; - list-style-type: none; -} - -.user .thumb { - clear: both; - float: left; - margin-right: 4px; - display: inline; -} - -.yellowbg { - background: yellow; -} - -.message { - padding: 5px; - margin: 10px 0 10px 0; - background-color: #eee; - border: 1px solid #aaaaaa; -} - -.message h1 { - padding-top: 0px; - font-size: 15px; -} - -.message p { - margin-bottom: 0px; -} - -p.space-above { - margin-top: 10px; -} - -.warning { - color: red; -} - -.darkred { - color: darkred; -} - -.submit { - cursor: pointer; /*letter-spacing:1px;*/ - background-color: #D4D0C8; - height: 40px; - border: 1px solid #777777; /* width:100px; */ - font-weight: bold; - padding-bottom: 4px; - font-size: 120%; -} - -.submit:hover { - text-decoration: underline; -} - -.ask-body { - padding-right: 10px; -} - -.thousand { - color: orange; -} - -.notify { - position: fixed; - top: 0px; - left: 0px; - width: 100%; - z-index: 100; - padding: 0; - text-align: center; - font-weight: Bold; - color: #444; - background-color: #F4A83D; -} - -.notify p { - margin-top: 5px; - margin-bottom: 5px; - font-size: 16px; -} - -#close-notify { - position: absolute; - right: 5px; - top: 5px; - padding: 0 3px 0 3px; - color: #735005; - text-decoration: none; - font-size: 14px; - line-height: 18px; - background-color: #FAD163; - border: 2px #735005 solid; - cursor: pointer; -} - -#close-notify:hover { - text-decoration: none; -} - -.big { - font-size: 15px; -} - -.bigger { - font-size: 14px; -} - -.strong { - font-weight: bold; -} - -.orange { - color: #d64000; - font-weight: bold; -} - -.grey { - color: #808080; -} - -.about div { - padding: 10px 5px 10px 5px; - border-top: 1px dashed #aaaaaa; -} - -.about div.first { - padding-top: 0; - border-top: none; -} - -.about p { - margin-bottom: 10px; -} - -.about a { - color: #d64000; - text-decoration: underline; -} - -.about h3 { - line-height: 30px; - font-size: 15px; - font-weight: 700; - padding-top: 0px; -} - -.highlight { - background-color: #FFF8C6; -} - -.nomargin { - margin: 0; -} - -.margin-bottom { - margin-bottom: 10px; -} - -.margin-top { - margin-top: 10px; -} - -.inline-block { - display: inline-block; -} - -.action-status { - margin: 0; - border: none; - text-align: center; - line-height: 10px; - font-size: 12px; - padding: 0; -} - -.action-status span { - padding: 3px 5px 3px 5px; - background-color: #fff380; /* nice yellow */ - font-weight: normal; - -moz-border-radius: 5px; - -khtml-border-radius: 5px; - -webkit-border-radius: 5px; -} - -.tight { - margin: 0; - padding: 0; -} - -.list-table td { - vertical-align: top; -} - -p.comment { - border-top: 1px dotted #ccccce; - margin: 0; - font-size: 11px; - color: #444444; - padding: 5px 0 5px 0; -} - -.delete-icon { - vertical-align: middle; - padding-left: 3px; -} - -/* these need to go */ -table.form-as-table .errorlist { - display: block; - margin: 0; - padding: 0 0 0 5px; - text-align: left; - font-size: 10px; - color: darkred; -} - -table.form-as-table input { - display: inline; - margin-left: 4px; -} - -table.form-as-table th { - vertical-align: bottom; - padding-bottom: 4px; -} - -.form-row-vertical { - margin-top: 8px; - display: block; -} - -.form-row-vertical label { - margin-bottom: 3px; - display: block; -} - -/* above stuff needs to go */ -.text-align-right { - text-align: center; -} - -ul.form-horizontal-rows { - list-style: none; - margin: 0; -} - -ul.form-horizontal-rows li { - position: relative; - height: 40px; -} - -ul.form-horizontal-rows label { - display: inline-block; -} - -ul.form-horizontal-rows ul.errorlist { - list-style: none; - color: darkred; - font-size: 10px; - line-height: 10px; - position: absolute; - top: 2px; - left: 180px; - text-align: left; - margin: 0; -} - -ul.form-horizontal-rows ul.errorlist li { - height: 10px; -} - -ul.form-horizontal-rows label { - position: absolute; - left: 0px; - bottom: 6px; - margin: 0px; - line-height: 12px; - font-size: 12px; -} - -ul.form-horizontal-rows li input { - position: absolute; - bottom: 0px; - left: 180px; - margin: 0px; -} - -#emailpw-form li input { - left: 170px; -} - -#emailpw-form ul.errorlist { - left: 170px; -} - -#changepw-form li input { - left: 150px; -} - -#changepw-form ul.errorlist { - left: 150px; -} - -.narrow .summary { - float: left; -} - -.narrow .summary .question-title { - font-weight: bold; - font-size: 120%; -} - -.user-profile-tool-links { - padding-bottom: 10px; - font-weight: bold; -} - -.post-controls { - float: left; - font-size: 11px; - line-height: 12px; - min-width: 200px; - margin-bottom: 5px; -} - -#question-controls .tags { - margin: 0 0 3px 0; -} - -.post-update-info-container { - float: right; - min-width: 190px; -} - -.post-update-info { - display: inline-block; - float: right; - width: 190px; - margin-bottom: 5px; -} - -.post-update-info p { - font-size: 11px; - line-height: 15px; - margin: 0 0 4px 0; - padding: 0; -} - -.post-update-info img { - float: left; - width: 32px; - margin: 4px 8px 0 0; -} - -.comments-container { - clear: both; -} - -.admin { - background-color: #fff380; /* nice yellow */ - border: 1px solid darkred; - padding: 0 5px 0 5px; -} - -.admin p { - margin-bottom: 3px; -} - -.admin #action_status { - text-align: center; - font-weight: bold; -} - -#tagSelector { - padding-bottom: 2px; -} - -#hideIgnoredTagsControl { - margin: 5px 0 0 0; -} - -#hideIgnoredTagsCb { - margin: 0 2px 0 1px; -} - -#recaptcha_widget_div { - width: 318px; - float: left; - clear: both; -} - -p.signup_p { - margin: 20px 0px 0px 0px; -} - -.simple-subscribe-options ul { - list-style: none; - list-style-position: outside; - margin: 0; -} - -a.sidebar_button { - color: black; - font-size: 11px; - background: #eeeeee; - padding: 3px; - cursor: pointer; -} - -a.sidebar_button:hover { - background-color: #777777; - color: white; - text-decoration: none; -} \ No newline at end of file diff --git a/forum/skins/css3/templates/header.html b/forum/skins/css3/templates/header.html deleted file mode 100644 index 963990c..0000000 --- a/forum/skins/css3/templates/header.html +++ /dev/null @@ -1,58 +0,0 @@ - -{% 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')) +