[RFC PATCH v2 19/19] templates: Convert registration template
Stephen Finucane
stephen at that.guru
Thu Sep 2 02:57:56 AEST 2021
This is the last of our non submission pages. Next up, the main patch
and cover letter list/detail pages.
Signed-off-by: Stephen Finucane <stephen at that.guru>
---
patchwork/forms.py | 7 +-
.../templates/patchwork/registration.html | 211 +++++++++---------
patchwork/views/user.py | 15 +-
3 files changed, 120 insertions(+), 113 deletions(-)
diff --git patchwork/forms.py patchwork/forms.py
index a975db18..b1b68179 100644
--- patchwork/forms.py
+++ patchwork/forms.py
@@ -32,6 +32,7 @@ class RegistrationForm(forms.Form):
User.objects.get(username__iexact=value)
except User.DoesNotExist:
return self.cleaned_data['username']
+
raise forms.ValidationError(
'This username is already taken. Please choose another.'
)
@@ -39,12 +40,12 @@ class RegistrationForm(forms.Form):
def clean_email(self):
value = self.cleaned_data['email']
try:
- user = User.objects.get(email__iexact=value)
+ User.objects.get(email__iexact=value)
except User.DoesNotExist:
return self.cleaned_data['email']
+
raise forms.ValidationError(
- 'This email address is already in use '
- 'for the account "%s".\n' % user.username
+ 'This email address is already in use for another account.'
)
def clean(self):
diff --git patchwork/templates/patchwork/registration.html patchwork/templates/patchwork/registration.html
index 8e2a3511..c9a2a94e 100644
--- patchwork/templates/patchwork/registration.html
+++ patchwork/templates/patchwork/registration.html
@@ -1,113 +1,112 @@
-{% extends "base.html" %}
+{% extends "base2.html" %}
{% block title %}Registration{% endblock %}
-{% block heading %}Registration{% endblock %}
+
+{% block navigation %}{% endblock %}
{% block body %}
-{% if confirmation and not error %}
-<p>
- Registration successful!
-</p>
-<p>
- A confirmation email has been sent to {{ confirmation.email }}.
- You'll need to visit the link provided in that email to confirm your
- registration.
-</p>
-{% else %}
-<p>By creating a Patchwork account, you can:<p>
-<ul>
- <li>create "bundles" of patches</li>
- <li>update the state of your own patches</li>
-</ul>
-<form method="post">
- {% csrf_token %}
- <table class="form registerform">
- <tr>
- <th colspan="2" class="headerrow">register</th>
- </tr>
-{% if error %}
- <tr>
- <td colspan="2">{{ error }}</td>
- </tr>
-{% endif %}
- <tr>
- <td>{{ form.first_name.label_tag }}</td>
- <td>
-{% if form.first_name.errors %}
- {{ form.first_name.errors }}
-{% endif %}
- {{ form.first_name }}
-{% if form.first_name.help_text %}
- <div class="help_text"/>{{ form.first_name.help_text }}</div>
-{% endif %}
- </td>
- </tr>
- <tr>
- <td>{{ form.last_name.label_tag }}</td>
- <td>
-{% if form.last_name.errors %}
- {{ form.last_name.errors }}
-{% endif %}
- {{ form.last_name }}
-{% if form.last_name.help_text %}
- <div class="help_text"/>{{ form.last_name.help_text }}</div>
-{% endif %}
- </td>
- </tr>
- <tr>
- <td></td>
- <td class="form-help">
- Your name is used to identify you on the site
- </td>
- </tr>
- <tr>
- <td>{{ form.email.label_tag }}</td>
- <td>
-{% if form.email.errors %}
- {{ form.email.errors }}
+<section class="hero is-primary is-fullheight">
+ <div class="hero-body">
+ <div class="container">
+ <div class="columns is-centered">
+ <div class="column is-6-tablet is-6-desktop is-6-widescreen">
+ <div class="block has-text-centered">
+ <h1 class="title is-3">Create your Patchwork account</h1>
+ </div>
+{% if form.non_field_errors %}
+ <div class="notification is-danger is-light">
+ <button class="delete"></button>
+ {{ form.non_field_errors }}
+ </div>
{% endif %}
- {{ form.email }}
-{% if form.email.help_text %}
- <div class="help_text"/>{{ form.email.help_text }}</div>
-{% endif %}
- </td>
- </tr>
- <tr>
- <td></td>
- <td class="form-help">
- Patchwork will send a confirmation email to this address
- </td>
- </tr>
- <tr>
- <td>{{ form.username.label_tag }}</td>
- <td>
-{% if form.username.errors %}
- {{ form.username.errors }}
-{% endif %}
- {{ form.username }}
-{% if form.username.help_text %}
- <div class="help_text"/>{{ form.username.help_text }}</div>
-{% endif %}
- </td>
- </tr>
- <tr>
- <td>{{ form.password.label_tag }}</td>
- <td>
-{% if form.password.errors %}
- {{ form.password.errors }}
-{% endif %}
- {{ form.password }}
-{% if form.password.help_text %}
- <div class="help_text"/>{{ form.password.help_text }}</div>
-{% endif %}
- </td>
- </tr>
- <tr>
- <td colspan="2" class="submitrow">
- <input type="submit" value="Register"/>
- </td>
- </tr>
- </table>
-</form>
+{% for message in messages %}
+{% if message.tags == 'success' %}
+ <div class="notification is-success is-light">
+{% elif message.tags == 'warning' %}
+ <div class="notification is-warning is-light">
+{% elif message.tags == 'error' %}
+ <div class="notification is-danger is-light">
+{% else %}
+ <div class="notification is-light">
{% endif %}
+ <button class="delete" onclick="dismiss(this);"></button>
+ {{ message }}
+ </div>
+{% endfor %}
+ <form method="post" class="box">
+ {% csrf_token %}
+ <div class="field">
+ <label for="id_username" class="label has-text-weight-normal">Username</label>
+ <div class="control has-icons-left">
+ <input id="id_username" type="text" name="username" placeholder="e.g. bobsmith" class="input" autocomplete="username" autofocus required>
+ <span class="icon is-small is-left">
+ <i class="fa fa-user"></i>
+ </span>
+ </div>
+{% for error in form.username.errors %}
+ <p class="help is-danger">{{ error }}</p>
+{% endfor %}
+ </div>
+ <div class="field">
+ <label for="id_email" class="label has-text-weight-normal">Email</label>
+ <div class="control has-icons-left">
+ <input id="id_email" type="email" name="email" placeholder="e.g. bobsmith at example.com" class="input" autocomplete="email" autofocus required>
+ <span class="icon is-small is-left">
+ <i class="fa fa-envelope"></i>
+ </span>
+ </div>
+{% for error in form.email.errors %}
+ <p class="help is-danger">{{ error }}</p>
+{% endfor %}
+ </div>
+ <div class="field">
+ <label for="id_first_name" class="label has-text-weight-normal">First name</label>
+ <div class="control has-icons-left">
+ <input id="id_first_name" type="text" name="first_name" class="input" autocomplete="given-name" autofocus required>
+ <span class="icon is-small is-left">
+ </span>
+ </div>
+{% for error in form.first_name.errors %}
+ <p class="help is-danger">{{ error }}</p>
+{% endfor %}
+ </div>
+ <div class="field">
+ <label for="id_last_name" class="label has-text-weight-normal">Last name</label>
+ <div class="control has-icons-left">
+ <input id="id_last_name" type="text" name="last_name" class="input" autocomplete="family-name" autofocus required>
+ <span class="icon is-small is-left">
+ </span>
+ </div>
+{% for error in form.last_name.errors %}
+ <p class="help is-danger">{{ error }}</p>
+{% endfor %}
+ </div>
+ <div class="field">
+ <label for="id_password" class="label has-text-weight-normal">Password</label>
+ <div class="control has-icons-left">
+ <input id="id_password" type="password" name="password" placeholder="*******" class="input" autocomplete="current-password" required>
+ <span class="icon is-small is-left">
+ <i class="fa fa-lock"></i>
+ </span>
+ </div>
+{% for error in form.password.errors %}
+ <p class="help is-danger">{{ error }}</p>
+{% endfor %}
+ </div>
+ <div class="field">
+ <button class="button is-success is-fullwidth">
+ Sign up
+ </button>
+ </div>
+ </form>
+ <div class="box has-text-centered">
+ <a href="{% url 'auth_login' %}">Log in</a>
+ •
+ <a href="{% url 'password_reset' %}">Forgot Password</a>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+</section>
{% endblock %}
diff --git patchwork/views/user.py patchwork/views/user.py
index 973061b7..8a5bc276 100644
--- patchwork/views/user.py
+++ patchwork/views/user.py
@@ -81,11 +81,18 @@ def register(request):
[confirmation.email]
)
except smtplib.SMTPException:
- context['confirmation'] = None
- context['error'] = (
- 'An error occurred during registration. '
- 'Please try again later'
+ messages.error(
+ request,
+ 'An error occurred while submitting this request. '
+ 'Please contact an administrator.'
+ )
+ else:
+ messages.success(
+ request,
+ 'Succesfully signed up. '
+ 'Check your email for confirmation.',
)
+ return HttpResponseRedirect(reverse('project-list'))
else:
form = RegistrationForm()
--
2.31.1
More information about the Patchwork
mailing list