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

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

Issue 29372800: [sitescripts] Issue 4827 - Added support for "relentless" notifications (Closed)
Patch Set: Fixed indentation Created Jan. 25, 2017, 11:48 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 | sitescripts/notifications/test/parser.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # This file is part of the Adblock Plus web scripts, 1 # This file is part of the Adblock Plus web scripts,
2 # Copyright (C) 2006-2016 Eyeo GmbH 2 # Copyright (C) 2006-2016 Eyeo GmbH
3 # 3 #
4 # Adblock Plus is free software: you can redistribute it and/or modify 4 # Adblock Plus is free software: you can redistribute it and/or modify
5 # it under the terms of the GNU General Public License version 3 as 5 # it under the terms of the GNU General Public License version 3 as
6 # published by the Free Software Foundation. 6 # published by the Free Software Foundation.
7 # 7 #
8 # Adblock Plus is distributed in the hope that it will be useful, 8 # Adblock Plus is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
62 62
63 if line.find('=') < 0: 63 if line.find('=') < 0:
64 raise Exception("Could not process line '%s' in file '%s'" % (line.s trip(), name)) 64 raise Exception("Could not process line '%s' in file '%s'" % (line.s trip(), name))
65 65
66 key, value = map(unicode.strip, line.split('=', 1)) 66 key, value = map(unicode.strip, line.split('=', 1))
67 is_variant = current != notification 67 is_variant = current != notification
68 68
69 if key == 'inactive' and not is_variant: 69 if key == 'inactive' and not is_variant:
70 current['inactive'] = value.lower() not in ('', '0', 'no', 'false', 'off') 70 current['inactive'] = value.lower() not in ('', '0', 'no', 'false', 'off')
71 elif key == 'severity': 71 elif key == 'severity':
72 if value not in ('information', 'critical', 'normal'): 72 if value not in ('information', 'critical', 'normal', 'relentless'):
73 raise Exception("Unknown severity value '%s' in file '%s'" % (va lue, name)) 73 raise Exception("Unknown severity value '%s' in file '%s'" % (va lue, name))
74 current['severity'] = value 74 current['severity'] = value
75 elif key == 'links': 75 elif key == 'links':
76 current['links'] = value.split() 76 current['links'] = value.split()
77 elif key.startswith('title.'): 77 elif key.startswith('title.'):
78 locale = key[len('title.'):] 78 locale = key[len('title.'):]
79 current['title'][locale] = value 79 current['title'][locale] = value
80 elif key.startswith('message.'): 80 elif key.startswith('message.'):
81 locale = key[len('message.'):] 81 locale = key[len('message.'):]
82 current['message'][locale] = value 82 current['message'][locale] = value
83 elif key == 'target': 83 elif key == 'target':
84 target = _parse_targetspec(value, name) 84 target = _parse_targetspec(value, name)
85 if 'targets' in notification: 85 if 'targets' in notification:
86 current['targets'].append(target) 86 current['targets'].append(target)
87 else: 87 else:
88 current['targets'] = [target] 88 current['targets'] = [target]
89 elif key == 'sample' and is_variant: 89 elif key == 'sample' and is_variant:
90 current['sample'] = float(value) 90 current['sample'] = float(value)
91 elif key in ['start', 'end']: 91 elif key in ['start', 'end']:
92 current[key] = datetime.datetime.strptime(value, '%Y-%m-%dT%H:%M') 92 current[key] = datetime.datetime.strptime(value, '%Y-%m-%dT%H:%M')
93 elif key == 'interval':
94 current[key] = int(value)
93 else: 95 else:
94 raise Exception("Unknown parameter '%s' in file '%s'" % (key, name)) 96 raise Exception("Unknown parameter '%s' in file '%s'" % (key, name))
95 97
96 for text_key in ('title', 'message'): 98 for text_key in ('title', 'message'):
97 def has_default_locale(variant): 99 def has_default_locale(variant):
98 return 'en-US' in variant[text_key] 100 return 'en-US' in variant[text_key]
99 if not has_default_locale(notification): 101 if not has_default_locale(notification):
100 variants = notification.get('variants', []) 102 variants = notification.get('variants', [])
101 if not all(map(has_default_locale, variants)): 103 if not all(map(has_default_locale, variants)):
102 raise Exception('No %s for en-US (default language) ' 104 raise Exception('No %s for en-US (default language) '
(...skipping 21 matching lines...) Expand all
124 if not 'inactive' in notification: 126 if not 'inactive' in notification:
125 current_time = datetime.datetime.now() 127 current_time = datetime.datetime.now()
126 start = notification.pop('start', current_time) 128 start = notification.pop('start', current_time)
127 end = notification.pop('end', current_time) 129 end = notification.pop('end', current_time)
128 if not start <= current_time <= end: 130 if not start <= current_time <= end:
129 notification['inactive'] = True 131 notification['inactive'] = True
130 notifications.append(notification) 132 notifications.append(notification)
131 except: 133 except:
132 traceback.print_exc() 134 traceback.print_exc()
133 return notifications 135 return notifications
OLDNEW
« no previous file with comments | « no previous file | sitescripts/notifications/test/parser.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld