src/templates/users/edit.html \
src/templates/users/index.html \
src/templates/users/passwd.html \
+ src/templates/users/probe.html \
src/templates/users/recently-joined.html \
src/templates/users/show.html \
src/templates/users/subscribe.html \
return res.sent_at if res else None
+ def probe_received(self):
+ """
+ Called when the user has clicked the link on the probe message
+ """
+ log.info("Probe response received from %s" % self)
+
+ # Delete all bounces
+ self.db.execute("""
+ DELETE FROM
+ account_bounces
+ WHERE
+ uid = %s
+ """, self.uid,
+ )
+
+ # Delete the last probe
+ self.db.execute("""
+ DELETE FROM
+ account_probes
+ WHERE
+ uid = %s
+ """, self.uid,
+ )
+
+
class Groups(Object):
hidden_groups = (
"cn=LDAP Read Only,ou=Group,dc=ipfire,dc=org",
Click here to confirm you still want to hear from us:
- [VERIFY_LINK]
+ https://www.ipfire.org/probe
Or update your email address in your settings:
- [SETTINGS_LINK]
+ https://www.ipfire.org/users/{{ account.uid }}/edit
No worries if you'd rather not receive emails - just ignore this message
and we'll stop trying and close your account.
--- /dev/null
+{% extends "../base.html" %}
+
+{% block title %}{{ _("Thank You") }}{% end block %}
+
+{% block container %}
+ <div class="columns is-centered">
+ <div class="column is-one-third-desktop">
+ <div class="notification is-success my-auto has-text-centered">
+ <div class="block">
+ <span class="fa-solid fa-check fa-5x my-4"></span>
+ </div>
+
+ <p>
+ {{ _("You have confirmed your email address and will continue to receive email from us.") }}
+ </p>
+ </div>
+ </div>
+ </div>
+{% end block %}
(r"/subscribe", users.SubscribeHandler),
(r"/unsubscribe", users.UnsubscribeHandler),
+ # Probe responses
+ (r"/probe", users.ProbeHandler),
+
# VoIP
(r"/voip", voip.IndexHandler),
self.render("users/unsubscribed.html")
+class ProbeHandler(base.BaseHandler):
+ @tornado.web.authenticated
+ def get(self):
+ with self.db.transaction():
+ self.current_user.probe_received()
+
+ self.render("users/probe.html")
+
+
class ListModule(ui_modules.UIModule):
def render(self, accounts, show_created_at=False):
return self.render_string("users/modules/list.html", accounts=accounts,