repos
/ analytics-django master

analytics-django

mirror archived upstream

Self-hostable website analytics on Django: a straightforward collector API, dashboards, a world map, and PDF reports.

analyticsdjangodockerhandcodedpythonself-hostedsqliteviteweb-analytics

2.0 KB · 49 lines · HTML Raw History
 1{% extends "base.html" %}
 2
 3
 4{% block breadcrumbs %}
 5<nav aria-label="breadcrumb">
 6  <ol class="breadcrumb mb-0">
 7    <li class="breadcrumb-item"><a href="/">Home</a></li>
 8    <li class="breadcrumb-item"><a href="{% url 'login' %}">Login</a></li>
 9    <li class="breadcrumb-item active" aria-current="page">{{ title }}</li>
10  </ol>
11</nav>
12{% endblock %}
13
14
15{% block main %}
16<div class="container my-5">
17  <div class="row">
18    <div class="col-lg-6 offset-lg-3 col-md-8 offset-md-2">
19      <div class="section-label mb-2">account · recovery</div>
20      <h1 class="fw-bolder text-white" style="letter-spacing: -0.01em;">{{ title }}</h1>
21
22      {% if validlink %}
23      <p class="text-muted small mb-4">Enter your new password twice to confirm.</p>
24      <form method="POST">
25        {% csrf_token %}
26        <input type="hidden" autocomplete="username" value="{{ form.user.get_username }}" />
27        <div class="form-floating mb-3">
28          <input type="password" class="form-control {% if form.new_password1.errors %}is-invalid{% endif %}" name="new_password1" id="id_new_password1" placeholder="New password" autocomplete="new-password" required autofocus />
29          <label for="id_new_password1">New password</label>
30          {{ form.new_password1.errors }}
31        </div>
32        <div class="form-floating mb-3">
33          <input type="password" class="form-control {% if form.new_password2.errors %}is-invalid{% endif %}" name="new_password2" id="id_new_password2" placeholder="Confirm password" autocomplete="new-password" required />
34          <label for="id_new_password2">Confirm password</label>
35          {{ form.new_password2.errors }}
36        </div>
37        <button type="submit" class="btn btn-primary">Change password →</button>
38      </form>
39      {% else %}
40      <div class="alert alert-danger py-2 small">
41        This password reset link is invalid — it may have already been used. Request a new link from the
42        <a href="{% url 'password_reset' %}">password reset form</a>.
43      </div>
44      {% endif %}
45    </div>
46  </div>
47</div>
48{% endblock %}