Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code

Side by Side Diff: sitescripts/notifications/parser.py

Issue 29323363: Issue 2868 - Don't pull the notification repo when parsing (Closed)
Patch Set: Created Aug. 7, 2015, 6:34 a.m.
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # coding: utf-8 1 # coding: utf-8
2 2
3 # This file is part of the Adblock Plus web scripts, 3 # This file is part of the Adblock Plus web scripts,
4 # Copyright (C) 2006-2015 Eyeo GmbH 4 # Copyright (C) 2006-2015 Eyeo GmbH
5 # 5 #
6 # Adblock Plus is free software: you can redistribute it and/or modify 6 # Adblock Plus is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License version 3 as 7 # it under the terms of the GNU General Public License version 3 as
8 # published by the Free Software Foundation. 8 # published by the Free Software Foundation.
9 # 9 #
10 # Adblock Plus is distributed in the hope that it will be useful, 10 # Adblock Plus is distributed in the hope that it will be useful,
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 for text_key in ("title", "message"): 96 for text_key in ("title", "message"):
97 def has_default_locale(variant): return "en-US" in variant[text_key] 97 def has_default_locale(variant): return "en-US" in variant[text_key]
98 if (not has_default_locale(notification) and 98 if (not has_default_locale(notification) and
99 not all(map(has_default_locale, notification.get("variants", [])))): 99 not all(map(has_default_locale, notification.get("variants", [])))):
100 raise Exception("No %s for en-US (default language) in file '%s'" % 100 raise Exception("No %s for en-US (default language) in file '%s'" %
101 (text_key, name)) 101 (text_key, name))
102 return notification 102 return notification
103 103
104 def load_notifications(): 104 def load_notifications():
105 repo = get_config().get("notifications", "repository") 105 repo = get_config().get("notifications", "repository")
106 subprocess.call(["hg", "-R", repo, "pull", "-q"])
107 command = ["hg", "-R", repo, "archive", "-r", "default", "-t", "tar", 106 command = ["hg", "-R", repo, "archive", "-r", "default", "-t", "tar",
108 "-p", ".", "-X", os.path.join(repo, ".hg_archival.txt"), "-"] 107 "-p", ".", "-X", os.path.join(repo, ".hg_archival.txt"), "-"]
109 data = subprocess.check_output(command) 108 data = subprocess.check_output(command)
110 109
111 notifications = [] 110 notifications = []
112 with tarfile.open(mode="r:", fileobj=StringIO(data)) as archive: 111 with tarfile.open(mode="r:", fileobj=StringIO(data)) as archive:
113 for fileinfo in archive: 112 for fileinfo in archive:
114 name = fileinfo.name 113 name = fileinfo.name
115 if name.startswith("./"): 114 if name.startswith("./"):
116 name = name[2:] 115 name = name[2:]
117 116
118 if fileinfo.type == tarfile.REGTYPE: 117 if fileinfo.type == tarfile.REGTYPE:
119 data = codecs.getreader("utf8")(archive.extractfile(fileinfo)) 118 data = codecs.getreader("utf8")(archive.extractfile(fileinfo))
120 try: 119 try:
121 notification = _parse_notification(data, name) 120 notification = _parse_notification(data, name)
122 if "inactive" in notification: 121 if "inactive" in notification:
123 continue 122 continue
124 current_time = datetime.datetime.now() 123 current_time = datetime.datetime.now()
125 start = notification.pop("start", None) 124 start = notification.pop("start", None)
126 if start is not None and current_time < start: 125 if start is not None and current_time < start:
127 continue 126 continue
128 end = notification.pop("end", None) 127 end = notification.pop("end", None)
129 if end is not None and current_time > end: 128 if end is not None and current_time > end:
130 continue 129 continue
131 notifications.append(notification) 130 notifications.append(notification)
132 except: 131 except:
133 traceback.print_exc() 132 traceback.print_exc()
134 return notifications 133 return notifications
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld