Index: sitescripts/reports/utils.py |
=================================================================== |
--- a/sitescripts/reports/utils.py |
+++ b/sitescripts/reports/utils.py |
@@ -5,7 +5,7 @@ |
# http://mozilla.org/MPL/2.0/. |
import hashlib, hmac, base64, MySQLdb, os, re, marshal, subprocess |
-from sitescripts.utils import get_config, cached, get_template, sendMail |
+from sitescripts.utils import get_config, memoize, cached, get_template, sendMail |
def getReportSubscriptions(guid): |
cursor = get_db().cursor(MySQLdb.cursors.DictCursor) |
@@ -59,7 +59,7 @@ |
reportData['hasscreenshot'] = 0 |
del reportData['screenshot'] |
knownIssues = len(reportData.get('knownIssues', [])) |
- contact = getUserId(reportData.get('email', None)) if reportData.get('email', None) else None |
+ contact = getUserId(reportData.get('email', None)) if 'email' in reportData else None |
Wladimir Palant
2012/10/22 13:32:52
If 'email' in reportData is True then it means tha
Andrey Novikov
2012/10/23 14:15:29
Done.
|
dumpstr = marshal.dumps(reportData) |
if contact != None and isNew: |
@@ -111,6 +111,47 @@ |
if os.path.isfile(file): |
os.remove(file) |
+@memoize |
+def getUserUsefulnessScore(contact): |
+ if contact == None: |
+ return 0 |
+ |
+ cursor = get_db().cursor() |
+ executeQuery(cursor, |
+ '''SELECT ((positive + 1.9208) / (positive + negative) |
+ - 1.96 * SQRT((positive * negative) / (positive + negative) + 0.9604) / (positive + negative)) |
+ / (1 + 3.8416 / (positive + negative)) AS score FROM #PFX#users WHERE id = %s''', |
+ (contact)) |
Wladimir Palant
2012/10/22 13:32:52
Please add a link to the source of this formula.
Andrey Novikov
2012/10/23 14:15:29
Done.
|
+ user = cursor.fetchone() |
Wladimir Palant
2012/10/22 13:32:52
You are selecting the score, not the user - please
Andrey Novikov
2012/10/23 14:15:29
Done.
|
+ if user == None: |
+ return 0 |
+ |
+ if user[0] == None: # no score yet |
+ return 0.3 |
+ else: |
+ return user[0] |
Wladimir Palant
2012/10/22 13:32:52
How about returning |4 * user[0]| here? We want th
Andrey Novikov
2012/10/23 14:15:29
Done.
|
+ |
+def updateUserUsefulness(contact, newusefulness, oldusefulness): |
+ new = int(newusefulness) |
+ old = int(oldusefulness) |
+ if new == old: |
+ return |
+ positive = 0 |
+ negative = 0 |
+ if old > 0: |
+ positive -= 1 |
+ elif old < 0: |
+ negative -= 1 |
+ if new > 0: |
+ positive += 1 |
+ elif new < 0: |
+ negative += 1 |
+ cursor = get_db().cursor() |
+ executeQuery(cursor, |
+ '''UPDATE #PFX#users SET negative = negative + %s, positive = positive + %s WHERE id = %s''', |
+ (negative, positive, contact)) |
+ get_db().commit() |
+ |
def saveScreenshot(guid, screenshot): |
prefix = 'data:image/png;base64,' |
if not screenshot.startswith(prefix): |