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() |