| Index: sitescripts/stats/common.py |
| =================================================================== |
| new file mode 100644 |
| --- /dev/null |
| +++ b/sitescripts/stats/common.py |
| @@ -0,0 +1,147 @@ |
| +# coding: utf-8 |
| + |
| +# This file is part of the Adblock Plus web scripts, |
| +# Copyright (C) 2006-2013 Eyeo GmbH |
| +# |
| +# Adblock Plus is free software: you can redistribute it and/or modify |
| +# it under the terms of the GNU General Public License version 3 as |
| +# published by the Free Software Foundation. |
| +# |
| +# Adblock Plus is distributed in the hope that it will be useful, |
| +# but WITHOUT ANY WARRANTY; without even the implied warranty of |
| +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| +# GNU General Public License for more details. |
| +# |
| +# You should have received a copy of the GNU General Public License |
| +# along with Adblock Plus. If not, see <http://www.gnu.org/licenses/>. |
| + |
| +import re |
| + |
| +def filename_encode(name): |
| + """ |
| + This encodes any string to a valid file name while ensuring that the |
| + original string can still be reconstructed. All characters except 0-9, A-Z, |
| + the period and underscore are encoded as "-12cd" where "12cd" stands for the |
| + hexadecimal representation of the character's ordinal. |
| + """ |
| + return re.sub(r"[^\w\.]", lambda match: "-%04x" % ord(match.group(0)), name) |
| + |
| +def filename_decode(path): |
| + """ |
| + This reconstructs a string encoded with filename_encode(). |
| + """ |
| + return re.sub(r"-([0-9a-f]{4})", lambda match: unichr(int(match.group(1), 16)), path) |
| + |
| +basic_fields = [ |
| + { |
| + "name": "day", |
| + "title": "Days of month", |
| + "coltitle": "Day", |
| + "showaverage": True, |
| + "sort": lambda obj: sorted(obj.items(), key=lambda (k,v): k), |
| + }, |
| + { |
| + "name": "weekday", |
| + "title": "Days of week", |
| + "coltitle": "Weekday", |
| + "showaverage": True, |
| + "sort": lambda obj: sorted(obj.items(), key=lambda (k,v): k), |
| + "isspecial": lambda weekday: weekday == 5 or weekday == 6, |
| + }, |
| + { |
| + "name": "hour", |
| + "title": "Hours of day", |
| + "coltitle": "Hour", |
| + "showaverage": True, |
| + "sort": lambda obj: sorted(obj.items(), key=lambda (k,v): int(k)), |
| + }, |
| + { |
| + "name": "country", |
| + "title": "Countries", |
| + "coltitle": "Country", |
| + }, |
| + { |
| + "name": "ua", |
| + "title": "Browsers", |
| + "coltitle": "Browser", |
| + }, |
| + { |
| + "name": "fullua", |
| + "title": "Browser versions", |
| + "coltitle": "Browser version", |
| + }, |
| + { |
| + "name": "mirror", |
| + "title": "Download mirrors", |
| + "coltitle": "Download mirror", |
| + }, |
| +] |
| + |
| +downloader_fields = [ |
| + { |
| + "name": "addonName", |
| + "title": "Extensions", |
| + "coltitle": "Extension", |
| + }, |
| + { |
| + "name": "fullAddon", |
| + "title": "Extension versions", |
| + "coltitle": "Extension version", |
| + }, |
| + { |
| + "name": "application", |
| + "title": "Host applications", |
| + "coltitle": "Host application", |
| + }, |
| + { |
| + "name": "fullApplication", |
| + "title": "Host application versions", |
| + "coltitle": "Host application version", |
| + }, |
| + { |
| + "name": "platform", |
| + "title": "Platforms", |
| + "coltitle": "Platform", |
| + }, |
| + { |
| + "name": "fullPlatform", |
| + "title": "Platform versions", |
| + "coltitle": "Platform version", |
| + }, |
| + { |
| + "name": "downloadInterval", |
| + "title": "Download intervals", |
| + "coltitle": "Download interval", |
| + }, |
| + { |
| + "name": "firstDownload", |
| + "title": "Initial download", |
| + "filter": True, |
| + }, |
| + { |
| + "name": "firstInDay", |
| + "title": "First download this day", |
| + "filter": True, |
| + }, |
| + { |
| + "name": "firstInWeek", |
| + "title": "First download this week", |
| + "filter": True, |
| + }, |
| + { |
| + "name": "firstInMonth", |
| + "title": "First download this month", |
| + "filter": True, |
| + }, |
| +] |
| + |
| +install_fields = [ |
| + { |
| + "name": "installType", |
| + "title": "Install types", |
| + "coltitle": "Install type", |
| + }, |
| +] |
| + |
| + |
| +fields = basic_fields + downloader_fields + install_fields |