OLD | NEW |
1 # coding: utf-8 | 1 # coding: utf-8 |
2 | 2 |
3 # This Source Code is subject to the terms of the Mozilla Public License | 3 # This Source Code is subject to the terms of the Mozilla Public License |
4 # version 2.0 (the "License"). You can obtain a copy of the License at | 4 # version 2.0 (the "License"). You can obtain a copy of the License at |
5 # http://mozilla.org/MPL/2.0/. | 5 # http://mozilla.org/MPL/2.0/. |
6 | 6 |
7 import hashlib, hmac, base64, MySQLdb, os, re, marshal, subprocess | 7 import hashlib, hmac, base64, MySQLdb, os, re, marshal, subprocess |
8 from sitescripts.utils import get_config, cached, get_template, sendMail | 8 from sitescripts.utils import get_config, cached, get_template, sendMail |
9 | 9 |
10 def getReportSubscriptions(guid): | 10 def getReportSubscriptions(guid): |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 | 92 |
93 reportData['guid'] = guid | 93 reportData['guid'] = guid |
94 file = os.path.join(get_config().get('reports', 'dataPath'), guid[0], guid[1],
guid[2], guid[3], guid + '.html') | 94 file = os.path.join(get_config().get('reports', 'dataPath'), guid[0], guid[1],
guid[2], guid[3], guid + '.html') |
95 dir = os.path.dirname(file) | 95 dir = os.path.dirname(file) |
96 if not os.path.exists(dir): | 96 if not os.path.exists(dir): |
97 os.makedirs(dir) | 97 os.makedirs(dir) |
98 template = get_template(get_config().get('reports', 'webTemplate')) | 98 template = get_template(get_config().get('reports', 'webTemplate')) |
99 template.stream(reportData).dump(file, encoding='utf-8') | 99 template.stream(reportData).dump(file, encoding='utf-8') |
100 | 100 |
101 def removeReport(guid): | 101 def removeReport(guid): |
| 102 reportData = getReport(guid) |
| 103 if (reportData.get('email', None)): |
| 104 utility = reportData['utility'] |
| 105 contact = getUserId(reportData['email']) |
| 106 updateUserUtility(contact, utility) |
| 107 |
102 cursor = get_db().cursor() | 108 cursor = get_db().cursor() |
103 executeQuery(cursor, | 109 executeQuery(cursor, |
104 '''DELETE FROM #PFX#reports WHERE guid = %s''', | 110 '''DELETE FROM #PFX#reports WHERE guid = %s''', |
105 (guid)) | 111 (guid)) |
106 get_db().commit() | 112 get_db().commit() |
107 file = os.path.join(get_config().get('reports', 'dataPath'), guid[0], guid[1],
guid[2], guid[3], guid + '.html') | 113 file = os.path.join(get_config().get('reports', 'dataPath'), guid[0], guid[1],
guid[2], guid[3], guid + '.html') |
108 if os.path.isfile(file): | 114 if os.path.isfile(file): |
109 os.remove(file) | 115 os.remove(file) |
110 file = os.path.join(get_config().get('reports', 'dataPath'), guid[0], guid[1],
guid[2], guid[3], guid + '.png') | 116 file = os.path.join(get_config().get('reports', 'dataPath'), guid[0], guid[1],
guid[2], guid[3], guid + '.png') |
111 if os.path.isfile(file): | 117 if os.path.isfile(file): |
112 os.remove(file) | 118 os.remove(file) |
113 | 119 |
| 120 def updateUserUtility(contact, utility): |
| 121 if utility == 0: |
| 122 return |
| 123 cursor = get_db().cursor() |
| 124 if utility > 0: |
| 125 executeQuery(cursor, |
| 126 '''UPDATE #PFX#users SET positive = positive + 1 WHERE id = %s''
', |
| 127 (contact)) |
| 128 else: |
| 129 executeQuery(cursor, |
| 130 '''UPDATE #PFX#users SET negative = negative + 1 WHERE id = %s''
', |
| 131 (contact)) |
| 132 get_db().commit() |
| 133 |
114 def saveScreenshot(guid, screenshot): | 134 def saveScreenshot(guid, screenshot): |
115 prefix = 'data:image/png;base64,' | 135 prefix = 'data:image/png;base64,' |
116 if not screenshot.startswith(prefix): | 136 if not screenshot.startswith(prefix): |
117 raise TypeError('Screenshot is not a PNG image') | 137 raise TypeError('Screenshot is not a PNG image') |
118 data = base64.b64decode(screenshot[len(prefix):]) | 138 data = base64.b64decode(screenshot[len(prefix):]) |
119 file = os.path.join(get_config().get('reports', 'dataPath'), guid[0], guid[1],
guid[2], guid[3], guid + '.png') | 139 file = os.path.join(get_config().get('reports', 'dataPath'), guid[0], guid[1],
guid[2], guid[3], guid + '.png') |
120 dir = os.path.dirname(file) | 140 dir = os.path.dirname(file) |
121 if not os.path.exists(dir): | 141 if not os.path.exists(dir): |
122 os.makedirs(dir) | 142 os.makedirs(dir) |
123 f = open(file, 'wb') | 143 f = open(file, 'wb') |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
175 dbpasswd = get_config().get('reports', 'dbpassword') | 195 dbpasswd = get_config().get('reports', 'dbpassword') |
176 if os.name == 'nt': | 196 if os.name == 'nt': |
177 return MySQLdb.connect(user=dbuser, passwd=dbpasswd, db=database, use_unicod
e=True, charset='utf8', named_pipe=True) | 197 return MySQLdb.connect(user=dbuser, passwd=dbpasswd, db=database, use_unicod
e=True, charset='utf8', named_pipe=True) |
178 else: | 198 else: |
179 return MySQLdb.connect(user=dbuser, passwd=dbpasswd, db=database, use_unicod
e=True, charset='utf8') | 199 return MySQLdb.connect(user=dbuser, passwd=dbpasswd, db=database, use_unicod
e=True, charset='utf8') |
180 | 200 |
181 def executeQuery(cursor, query, args=None): | 201 def executeQuery(cursor, query, args=None): |
182 tablePrefix = get_config().get('reports', 'dbprefix') | 202 tablePrefix = get_config().get('reports', 'dbprefix') |
183 query = re.sub(r'#PFX#', tablePrefix, query) | 203 query = re.sub(r'#PFX#', tablePrefix, query) |
184 cursor.execute(query, args) | 204 cursor.execute(query, args) |
OLD | NEW |