def before_send(event, hint): if "request" in event and "data" in event["request"] and "email" in event[ "request"]["data"]: event["request"]["data"]["email"] = remove_pii( event["request"]["data"]["email"]) if "location" in event and event["location"] in ( "vacnotify.tasts.email_confirmation", "vacnotify.tasts.email_notification_spot", "vacnotify.tasts.email_notification_group"): celery_args = event["extra"]["celery-job"]["args"] celery_args[0] = remove_pii(celery_args[0]) return event
def email_notification_spot(email: str, secret: str, cities_free: Mapping): sentry_sdk.set_user({"id": remove_pii(email)}) html = render_template("email/notification_spot.html.jinja2", secret=secret, cities_free=cities_free) msg = Message("Voľné miesta na očkovanie", recipients=[email], html=html, extra_headers={"List-Unsubscribe-Post": "List-Unsubscribe=One-Click", "List-Unsubscribe": "<" + url_for("main.spot_unsubscribe", secret=secret) + ">"}) mail.send(msg)
def email_notification_group(email: str, secret: str, new_groups: List[str]): sentry_sdk.set_user({"id": remove_pii(email)}) html = render_template("email/notification_group.html.jinja2", secret=secret, new_groups=new_groups) msg = Message("Nová skupina na očkovanie", recipients=[email], html=html, extra_headers={"List-Unsubscribe-Post": "List-Unsubscribe=One-Click", "List-Unsubscribe": "<" + url_for("main.group_unsubscribe", secret=secret) + ">"}) mail.send(msg)
def push_notification_group(subscription_info, secret: str, new_groups: List[str]): sentry_sdk.set_user({"id": remove_pii(subscription_info["endpoint"])}) text = "Vo formulári na registráciu na očkovanie" if len(new_groups) > 1: text += " pribudli nové skupiny" else: text += " pribudla nová skupina" text += " ľudí na očkovanie: " + ", ".join(new_groups) actions = [ { "action": "register", "title": "Zaregistrovať sa", "icon": url_for("main.static", filename="img/edit.svg", _external=True) }, { "action": "unsubsribe", "title": "Zrušiť odber", "icon": url_for("main.static", filename="img/bell-slash.svg", _external=True) }, ] action_map = { "register": "https://www.old.korona.gov.sk/covid-19-vaccination-form.php", "unsubscribe": url_for("main.group_unsubscribe", secret=secret, _external=True) } try: webpush(subscription_info=subscription_info, data=json.dumps({ "action": "notifyGroups", "body": text, "icon": url_for('main.static', filename="img/virus.svg", _external=True), "actions": actions, "actionMap": action_map }), vapid_private_key=vapid_privkey, vapid_claims=dict(vapid_claims)) except WebPushException as e: if e.response is not None and e.response.status_code == 410: clear_db_push.delay(secret) else: logging.error(e)
def email_confirmation(email: str, secret: str, subscription_type: str): sentry_sdk.set_user({"id": remove_pii(email)}) if subscription_type not in ("group", "spot", "both"): raise ValueError title_suffix = { "group": " - Nová skupina", "spot": " - Voľné miesta", "both": "" } html = render_template("email/confirm.html.jinja2", secret=secret, type=subscription_type) msg = Message("Potvrdenie odberu notifikácii" + title_suffix[subscription_type], recipients=[email], html=html, extra_headers={"List-Unsubscribe-Post": "List-Unsubscribe=One-Click", "List-Unsubscribe": "<" + url_for(f"main.{subscription_type}_unsubscribe", secret=secret) + ">"}) mail.send(msg)
def push_notification(subscription_info, body: str): sentry_sdk.set_user({"id": remove_pii(subscription_info["endpoint"])}) try: webpush(subscription_info=subscription_info, data=json.dumps({ "action": "notify", "body": body, "icon": url_for('main.static', filename="img/virus.svg", _external=True), "actions": [] }), vapid_private_key=vapid_privkey, vapid_claims=dict(vapid_claims)) except WebPushException as e: if e.response is not None and e.response.status_code == 410: logging.info(e) else: logging.error(e)
def push_confirmation(subscription_info, secret: str, subscription_type: str): sentry_sdk.set_user({"id": remove_pii(subscription_info["endpoint"])}) endpoint_map = { "group": "main.group_confirm", "spot": "main.spot_confirm", "both": "main.both_confirm" } endpoint = endpoint_map[subscription_type] try: webpush(subscription_info=subscription_info, data=json.dumps({ "action": "confirm", "endpoint": url_for(endpoint, secret=secret, push=1) }), vapid_private_key=vapid_privkey, vapid_claims=dict(vapid_claims)) except WebPushException as e: if e.response is not None and e.response.status_code == 410: clear_db_push.delay(secret) else: logging.error(e)
def push_notification_spot(subscription_info, secret: str, cities_free: Mapping): sentry_sdk.set_user({"id": remove_pii(subscription_info["endpoint"])}) actions = [ { "action": "register", "title": "Zaregistrovať sa", "icon": url_for("main.static", filename="img/edit.svg", _external=True) }, { "action": "places", "title": "Voľné termíny", "icon": url_for("main.static", filename="img/calendar.svg", _external=True) }, { "action": "unsubsribe", "title": "Zrušiť odber", "icon": url_for("main.static", filename="img/bell-slash.svg", _external=True) }, ] action_map = { "register": "https://www.old.korona.gov.sk/covid-19-vaccination-form.php", "places": url_for("main.spot_subscribe", _anchor="places-table", _external=True), "unsubscribe": url_for("main.spot_unsubscribe", secret=secret, _external=True) } try: webpush(subscription_info=subscription_info, data=json.dumps({ "action": "notifySpots", "body": "V nasledujúcich mestách sú voľné termíny: " + ", ".join(f"{name} ({free})" for name, free in cities_free.items()) + ".", "icon": url_for('main.static', filename="img/virus.svg", _external=True), "actions": actions, "actionMap": action_map }), vapid_private_key=vapid_privkey, vapid_claims=dict(vapid_claims)) except WebPushException as e: if e.response is not None and e.response.status_code == 410: clear_db_push.delay(secret) else: logging.error(e)