| Index: sitescripts/notifications/web/notification.py |
| =================================================================== |
| --- a/sitescripts/notifications/web/notification.py |
| +++ b/sitescripts/notifications/web/notification.py |
| @@ -24,13 +24,13 @@ |
| def _determine_groups(version, notifications): |
| - version_groups = dict(x.split("/") for x in version.split("-")[1:] |
| - if x.count("/") == 1) |
| + version_groups = dict(x.split('/') for x in version.split('-')[1:] |
| + if x.count('/') == 1) |
| groups = [] |
| for notification in notifications: |
| - group_id = notification["id"] |
| + group_id = notification['id'] |
| if group_id in version_groups: |
| - groups.append({"id": group_id, "variant": int(version_groups[group_id])}) |
| + groups.append({'id': group_id, 'variant': int(version_groups[group_id])}) |
| return groups |
| @@ -39,45 +39,45 @@ |
| selection = random.random() |
| start = 0 |
| for notification in notifications: |
| - if "variants" not in notification: |
| + if 'variants' not in notification: |
| continue |
| - group = {"id": notification["id"], "variant": 0} |
| + group = {'id': notification['id'], 'variant': 0} |
| groups.append(group) |
| - for i, variant in enumerate(notification["variants"]): |
| - sample_size = variant["sample"] |
| + for i, variant in enumerate(notification['variants']): |
| + sample_size = variant['sample'] |
| end = start + sample_size |
| selected = sample_size > 0 and start <= selection <= end |
| start = end |
| if selected: |
| - group["variant"] = i + 1 |
| + group['variant'] = i + 1 |
| break |
| return groups |
| def _get_active_variant(notifications, groups): |
| for group in groups: |
| - group_id = group["id"] |
| - variant = group["variant"] |
| + group_id = group['id'] |
| + variant = group['variant'] |
| if variant == 0: |
| continue |
| - notification = next((x for x in notifications if x["id"] == group_id), None) |
| + notification = next((x for x in notifications if x['id'] == group_id), None) |
| if not notification: |
| continue |
| notification = copy.deepcopy(notification) |
| - notification.update(notification["variants"][variant - 1]) |
| - for key_to_remove in ("sample", "variants"): |
| + notification.update(notification['variants'][variant - 1]) |
| + for key_to_remove in ('sample', 'variants'): |
| notification.pop(key_to_remove, None) |
| return notification |
| def _can_be_shown(notification): |
| - return notification.get("title", None) and notification.get("message", None) |
| + return notification.get('title', None) and notification.get('message', None) |
| def _generate_version(groups): |
| - version = time.strftime("%Y%m%d%H%M", time.gmtime()) |
| + version = time.strftime('%Y%m%d%H%M', time.gmtime()) |
| for group in groups: |
| - version += "-%s/%s" % (group["id"], group["variant"]) |
| + version += '-%s/%s' % (group['id'], group['variant']) |
| return version |
| @@ -90,34 +90,34 @@ |
| for notification in notifications: |
| if not _can_be_shown(notification): |
| continue |
| - if "variants" in notification: |
| + if 'variants' in notification: |
| notification = copy.deepcopy(notification) |
| - del notification["variants"] |
| + del notification['variants'] |
| notifications_to_send.append(notification) |
| return notifications_to_send |
| def _create_response(notifications, groups): |
| return { |
| - "version": _generate_version(groups), |
| - "notifications": _get_notifications_to_send(notifications, groups) |
| + 'version': _generate_version(groups), |
| + 'notifications': _get_notifications_to_send(notifications, groups) |
| } |
| -@url_handler("/notification.json") |
| +@url_handler('/notification.json') |
| def notification(environ, start_response): |
| - params = urlparse.parse_qs(environ.get("QUERY_STRING", "")) |
| - version = params.get("lastVersion", [""])[0] |
| + params = urlparse.parse_qs(environ.get('QUERY_STRING', '')) |
| + version = params.get('lastVersion', [''])[0] |
| notifications = load_notifications() |
| groups = _determine_groups(version, notifications) |
| - notifications = [x for x in notifications if not x.get("inactive", False)] |
| + notifications = [x for x in notifications if not x.get('inactive', False)] |
| if not groups: |
| groups = _assign_groups(notifications) |
| response = _create_response(notifications, groups) |
| - response_headers = [("Content-Type", "application/json; charset=utf-8"), |
| - ("ABP-Notification-Version", response["version"])] |
| + response_headers = [('Content-Type', 'application/json; charset=utf-8'), |
| + ('ABP-Notification-Version', response['version'])] |
| response_body = json.dumps(response, ensure_ascii=False, indent=2, |
| - separators=(",", ": "), |
| - sort_keys=True).encode("utf-8") |
| - start_response("200 OK", response_headers) |
| + separators=(',', ': '), |
| + sort_keys=True).encode('utf-8') |
| + start_response('200 OK', response_headers) |
| return response_body |