| Index: sitescripts/notifications/parser.py |
| =================================================================== |
| --- a/sitescripts/notifications/parser.py |
| +++ b/sitescripts/notifications/parser.py |
| @@ -29,18 +29,18 @@ |
| target = {} |
| for spec in value.split(): |
| known = False |
| - for parameter in ("extension", "application", "platform"): |
| - if spec.startswith(parameter + "="): |
| - target[parameter] = spec[len(parameter + "="):] |
| + for parameter in ('extension', 'application', 'platform'): |
| + if spec.startswith(parameter + '='): |
| + target[parameter] = spec[len(parameter + '='):] |
| known = True |
| - elif spec.startswith(parameter + "Version>="): |
| - target[parameter + "MinVersion"] = spec[len(parameter + "Version>="):] |
| + elif spec.startswith(parameter + 'Version>='): |
| + target[parameter + 'MinVersion'] = spec[len(parameter + 'Version>='):] |
| known = True |
| - elif spec.startswith(parameter + "Version<="): |
| - target[parameter + "MaxVersion"] = spec[len(parameter + "Version<="):] |
| + elif spec.startswith(parameter + 'Version<='): |
| + target[parameter + 'MaxVersion'] = spec[len(parameter + 'Version<='):] |
| known = True |
| - elif spec.startswith(parameter + "Version="): |
| - target[parameter + "MinVersion"] = target[parameter + "MaxVersion"] = spec[len(parameter + "Version="):] |
| + elif spec.startswith(parameter + 'Version='): |
| + target[parameter + 'MinVersion'] = target[parameter + 'MaxVersion'] = spec[len(parameter + 'Version='):] |
| known = True |
| if not known: |
| raise Exception("Unknown target specifier '%s' in file '%s'" % (spec, name)) |
| @@ -48,85 +48,85 @@ |
| def _parse_notification(data, name): |
| - notification = {"id": name, "severity": "information", "message": {}, "title": {}} |
| + notification = {'id': name, 'severity': 'information', 'message': {}, 'title': {}} |
| current = notification |
| for line in data: |
| - if not re.search(r"\S", line): |
| + if not re.search(r'\S', line): |
| continue |
| - if re.search(r"^\[.*\]$", line): |
| - current = {"title": {}, "message": {}} |
| - notification.setdefault("variants", []).append(current) |
| + if re.search(r'^\[.*\]$', line): |
| + current = {'title': {}, 'message': {}} |
| + notification.setdefault('variants', []).append(current) |
| continue |
| - if line.find("=") < 0: |
| + if line.find('=') < 0: |
| raise Exception("Could not process line '%s' in file '%s'" % (line.strip(), name)) |
| - key, value = map(unicode.strip, line.split("=", 1)) |
| + key, value = map(unicode.strip, line.split('=', 1)) |
| is_variant = current != notification |
| - if key == "inactive" and not is_variant: |
| - current["inactive"] = value.lower() not in ("", "0", "no", "false", "off") |
| - elif key == "severity": |
| - if value not in ("information", "critical", "normal"): |
| + if key == 'inactive' and not is_variant: |
| + current['inactive'] = value.lower() not in ('', '0', 'no', 'false', 'off') |
| + elif key == 'severity': |
| + if value not in ('information', 'critical', 'normal'): |
| raise Exception("Unknown severity value '%s' in file '%s'" % (value, name)) |
| - current["severity"] = value |
| - elif key == "links": |
| - current["links"] = value.split() |
| - elif key.startswith("title."): |
| - locale = key[len("title."):] |
| - current["title"][locale] = value |
| - elif key.startswith("message."): |
| - locale = key[len("message."):] |
| - current["message"][locale] = value |
| - elif key == "target": |
| + current['severity'] = value |
| + elif key == 'links': |
| + current['links'] = value.split() |
| + elif key.startswith('title.'): |
| + locale = key[len('title.'):] |
| + current['title'][locale] = value |
| + elif key.startswith('message.'): |
| + locale = key[len('message.'):] |
| + current['message'][locale] = value |
| + elif key == 'target': |
| target = _parse_targetspec(value, name) |
| - if "targets" in notification: |
| - current["targets"].append(target) |
| + if 'targets' in notification: |
| + current['targets'].append(target) |
| else: |
| - current["targets"] = [target] |
| - elif key == "sample" and is_variant: |
| - current["sample"] = float(value) |
| - elif key in ["start", "end"]: |
| - current[key] = datetime.datetime.strptime(value, "%Y-%m-%dT%H:%M") |
| + current['targets'] = [target] |
| + elif key == 'sample' and is_variant: |
| + current['sample'] = float(value) |
| + elif key in ['start', 'end']: |
| + current[key] = datetime.datetime.strptime(value, '%Y-%m-%dT%H:%M') |
| else: |
| raise Exception("Unknown parameter '%s' in file '%s'" % (key, name)) |
| - for text_key in ("title", "message"): |
| + for text_key in ('title', 'message'): |
| def has_default_locale(variant): |
| - return "en-US" in variant[text_key] |
| + return 'en-US' in variant[text_key] |
| if not has_default_locale(notification): |
| - variants = notification.get("variants", []) |
| + variants = notification.get('variants', []) |
| if not all(map(has_default_locale, variants)): |
| - raise Exception("No %s for en-US (default language) " |
| + raise Exception('No %s for en-US (default language) ' |
| "in file '%s'" % (text_key, name)) |
| return notification |
| def load_notifications(): |
| - repo = get_config().get("notifications", "repository") |
| - command = ["hg", "-R", repo, "archive", "-r", "default", "-t", "tar", |
| - "-p", ".", "-X", os.path.join(repo, ".hg_archival.txt"), "-"] |
| + repo = get_config().get('notifications', 'repository') |
| + command = ['hg', '-R', repo, 'archive', '-r', 'default', '-t', 'tar', |
| + '-p', '.', '-X', os.path.join(repo, '.hg_archival.txt'), '-'] |
| data = subprocess.check_output(command) |
| notifications = [] |
| - with tarfile.open(mode="r:", fileobj=StringIO(data)) as archive: |
| + with tarfile.open(mode='r:', fileobj=StringIO(data)) as archive: |
| for fileinfo in archive: |
| name = fileinfo.name |
| - if name.startswith("./"): |
| + if name.startswith('./'): |
| name = name[2:] |
| if fileinfo.type == tarfile.REGTYPE: |
| - data = codecs.getreader("utf8")(archive.extractfile(fileinfo)) |
| + data = codecs.getreader('utf8')(archive.extractfile(fileinfo)) |
| try: |
| notification = _parse_notification(data, name) |
| - if not "inactive" in notification: |
| + if not 'inactive' in notification: |
| current_time = datetime.datetime.now() |
| - start = notification.pop("start", current_time) |
| - end = notification.pop("end", current_time) |
| + start = notification.pop('start', current_time) |
| + end = notification.pop('end', current_time) |
| if not start <= current_time <= end: |
| - notification["inactive"] = True |
| + notification['inactive'] = True |
| notifications.append(notification) |
| except: |
| traceback.print_exc() |