| Index: sitescripts/stats/common.py | 
| =================================================================== | 
| deleted file mode 100644 | 
| --- a/sitescripts/stats/common.py | 
| +++ /dev/null | 
| @@ -1,171 +0,0 @@ | 
| -# This file is part of the Adblock Plus web scripts, | 
| -# Copyright (C) 2006-present 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 | 
| -import hashlib | 
| - | 
| - | 
| -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. File names longer | 
| - than 150 characters will be still be unique but no longer reversible due to | 
| - file system limitations. | 
| - """ | 
| - result = re.sub(r'[^\w\.]', lambda match: '-%04x' % ord(match.group(0)), name) | 
| - if len(result) > 150: | 
| - result = result[:150] + '--%s' % hashlib.md5(result[150:]).hexdigest() | 
| - return result | 
| - | 
| - | 
| -def filename_decode(path): | 
| - """ | 
| - This reconstructs a string encoded with filename_encode(). | 
| - """ | 
| - path = re.sub(r'--[0-9A-Fa-f]{32}', u'\u2026', path) | 
| - path = re.sub(r'-([0-9a-f]{4})', lambda match: unichr(int(match.group(1), 16)), path) | 
| - return path | 
| - | 
| - | 
| -basic_fields = [ | 
| - { | 
| - 'name': 'day', | 
| - 'title': 'Days of month', | 
| - 'coltitle': 'Day', | 
| - 'showaverage': True, | 
| - 'defaultcount': 31, | 
| - 'sort': lambda obj: sorted(obj.items(), key=lambda (k, v): int(k)), | 
| - }, | 
| - { | 
| - 'name': 'weekday', | 
| - 'title': 'Days of week', | 
| - 'coltitle': 'Weekday', | 
| - 'showaverage': True, | 
| - 'sort': lambda obj: sorted(obj.items(), key=lambda (k, v): int(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': 'referrer', | 
| - 'title': 'Referrers', | 
| - 'coltitle': 'Referrer', | 
| - }, | 
| - { | 
| - 'name': 'status', | 
| - 'title': 'Status codes', | 
| - 'coltitle': 'Status code', | 
| - }, | 
| - { | 
| - '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': 'previousDownload', | 
| - 'hidden': True, | 
| - }, | 
| - { | 
| - '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 |