Skip to content

Commit

Permalink
Merge pull request #2091 from laws-africa/sandrava-2035
Browse files Browse the repository at this point in the history
basic user profile page
  • Loading branch information
longhotsummer authored Oct 16, 2024
2 parents 4fd4013 + fd4fd82 commit 78794e8
Show file tree
Hide file tree
Showing 14 changed files with 373 additions and 7 deletions.
2 changes: 1 addition & 1 deletion peachjam/auth.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from allauth.account.utils import perform_login
from allauth.exceptions import ImmediateHttpResponse
from allauth.core.exceptions import ImmediateHttpResponse
from allauth.socialaccount.adapter import DefaultSocialAccountAdapter
from allauth.socialaccount.models import SocialAccount
from django.contrib import messages
Expand Down
6 changes: 6 additions & 0 deletions peachjam/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -384,6 +384,12 @@ class PeachjamLoginForm(LoginForm):
captcha = ReCaptchaField(widget=ReCaptchaV2Invisible)


class UserForm(forms.ModelForm):
class Meta:
model = User
fields = ["first_name", "last_name"]


class JudgmentUploadForm(forms.Form):
jurisdiction = forms.ModelChoiceField(Country.objects)
file = forms.FileField()
Expand Down
95 changes: 95 additions & 0 deletions peachjam/templates/account/email.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
{% extends "user_account/layout.html" %}
{% load i18n %}
{% block title %}Emails {{ block.super }}{% endblock %}
{% block account-tabs %}
{% include 'user_account/_tabs.html' with active='emails' %}
{% endblock %}
{% block account-content %}
<div class="card mb-5">
<h5 class="card-header">{% trans "Email addresses" %}</h5>
<div class="card-body">
{% with user.emailaddress_set.all as emails %}
{% if emails %}
<p>{% trans 'You can use any of these email addresses to log in.' %}</p>
<p>
<strong>{% trans 'Note:' %}</strong>
{% blocktrans %}We only send email notifications to your <strong>primary</strong> email address.{% endblocktrans %}
</p>
{% if form.non_field_errors %}
<div class="text-danger">
{% for error in form.non_field_errors %}<p>{{ error }}</p>{% endfor %}
</div>
{% endif %}
<table class="table table-sm mt-4 mb-4">
<thead class="thead-light">
<tr>
<th>{% trans 'Email address' %}</th>
<th colspan="2">{% trans 'Status' %}</th>
</tr>
</thead>
{% for emailaddress in emails %}
<tr>
<td class="{% if emailaddress.primary %}font-weight-bold{% endif %}">{{ emailaddress.email }}</td>
<td>
{% if emailaddress.verified %}
<i class="far fa-fw fa-check-circle text-success"></i>
{% trans 'verified' %}
{% else %}
<i class="far fa-fw fa-question-circle text-danger"></i>
{% trans 'unverified' %}
{% endif %}
{% if emailaddress.primary %}
– {% trans 'primary' %}
{% endif %}
</td>
<td class="text-end">
<form action="{% url 'account_email' %}" method="post">
{% csrf_token %}
<input type="hidden" name="email" value="{{ emailaddress.email }}" />
{% if not emailaddress.verified %}
<button class="btn btn-sm btn-primary" type="submit" name="action_send">{% trans 'Re-send verification' %}</button>
{% endif %}
{% if not emailaddress.primary %}
<button class="btn btn-sm btn-outline-secondary"
type="submit"
name="action_primary">
{% trans 'Make primary' %}
</button>
<button class="btn btn-sm btn-outline-danger"
type="submit"
name="action_remove"
data-confirm="Really remove this email?">
{% trans 'Remove' %}
</button>
{% endif %}
</form>
</td>
</tr>
{% endfor %}
</table>
{% else %}
<p>
<strong>{% trans 'Warning:' %}</strong> {% trans "You currently do not have any e-mail address set up. You should really add an e-mail address so you can receive notifications, reset your password, etc." %}
</p>
{% endif %}
{% endwith %}
<h5 class="mt-5">{% trans 'Add an email address' %}</h5>
<form method="post" action="{% url 'account_email' %}">
{% csrf_token %}
<div class="mb-3">
<input type="text"
class="form-control col-sm-6"
name="{{ form.email.name }}"
value="{{ form.email.value|default:'' }}"
placeholder="[email protected]"/>
{% if form.email.errors %}
<div class="text-danger">
{% for error in form.email.errors %}<p>{{ error }}</p>{% endfor %}
</div>
{% endif %}
</div>
<button name="action_add" type="submit" class="btn btn-primary">{% trans 'Add email' %}</button>
</form>
</div>
</div>
{% endblock %}
68 changes: 68 additions & 0 deletions peachjam/templates/account/password_change.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
{% extends "user_account/layout.html" %}
{% load i18n %}
{% block title %}
{% trans "Change Password" %}
{% endblock %}
{% block account-tabs %}
{% include 'user_account/_tabs.html' with active='password' %}
{% endblock %}
{% block account-content %}
<form method="post" action="{% url 'account_change_password' %}">
{% csrf_token %}
<div class="row">
<div class="col-lg-6 mx-auto">
<div class="card">
<h5 class="card-header">{% trans 'Change your password' %}</h5>
<div class="card-body">
<div class="mb-3">
<label for="{{ form.oldpassword.id_for_label }}">Current password</label>
<input type="password"
class="form-control"
name="{{ form.oldpassword.name }}"
id="{{ form.oldpassword.id_for_label }}"
value="{{ form.oldpassword.value|default:'' }}"
required
autofocus/>
{% if form.oldpassword.errors %}
<div class="text-danger">
{% for error in form.oldpassword.errors %}<p>{{ error }}</p>{% endfor %}
</div>
{% endif %}
</div>
<div class="mb-3">
<label for="{{ form.password1.id_for_label }}">New password</label>
<input type="password"
class="form-control"
name="{{ form.password1.name }}"
id="{{ form.password1.id_for_label }}"
value="{{ form.password1.value|default:'' }}"
required/>
{% if form.password1.errors %}
<div class="text-danger">
{% for error in form.password1.errors %}<p>{{ error }}</p>{% endfor %}
</div>
{% endif %}
</div>
<div class="mb-3">
<label for="{{ form.password2.id_for_label }}">New password (again)</label>
<input type="password"
class="form-control"
name="{{ form.password2.name }}"
id="{{ form.password2.id_for_label }}"
value="{{ form.password2.value|default:'' }}"
required/>
{% if form.password2.errors %}
<div class="text-danger">
{% for error in form.password2.errors %}<p>{{ error }}</p>{% endfor %}
</div>
{% endif %}
</div>
</div>
<div class="card-footer text-end">
<button type="submit" class="btn btn-success" name="action">{% trans "Change password" %}</button>
</div>
</div>
</div>
</div>
</form>
{% endblock %}
8 changes: 4 additions & 4 deletions peachjam/templates/peachjam/_folders_list.html
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{% load i18n %}
<div>
<div class="d-flex justify-content-between align-items-center">
<h1 class="mb-4">{% trans 'Saved documents' %}</h1>
<div class="d-flex justify-content-between align-items-center mb-4">
<h2>{% trans 'Saved documents' %}</h2>
<button class="btn btn-primary"
hx-target="#folders-list"
hx-prompt="Give your folder a name:"
Expand All @@ -12,7 +12,7 @@ <h1 class="mb-4">{% trans 'Saved documents' %}</h1>
{% if folders or ungrouped_saved_documents %}
{% for folder in folders %}
<div class="card mb-5">
<h3 class="card-header">{{ folder }}</h3>
<h5 class="card-header">{{ folder }}</h5>
<div class="card-body">
<div>
{% if folder.saved_documents.all %}
Expand Down Expand Up @@ -66,7 +66,7 @@ <h3 class="card-header">{{ folder }}</h3>
{% endfor %}
{% if ungrouped_saved_documents %}
<div class="card">
<h3 class="card-header">{% trans 'Ungrouped documents' %}</h3>
<h5 class="card-header">{% trans 'Ungrouped documents' %}</h5>
<div class="card-body">
<table class="doc-table">
{% for saved_doc in ungrouped_saved_documents %}
Expand Down
1 change: 1 addition & 0 deletions peachjam/templates/peachjam/_header.html
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@
</a>
<ul class="dropdown-menu">
<li>
<a class="dropdown-item" href="{% url 'edit_account' %}">{% trans 'My account' %}</a>
{% if user.is_staff %}
<a class="dropdown-item" href="{% url 'admin:index' %}">{% trans 'Admin' %}</a>
{% endif %}
Expand Down
7 changes: 5 additions & 2 deletions peachjam/templates/peachjam/folders_list.html
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
{% extends 'peachjam/layouts/main.html' %}
{% extends "user_account/layout.html" %}
{% load i18n %}
{% block title %}
{% trans 'Saved Documents' %}
{% endblock %}
{% block page-content %}
{% block account-tabs %}
{% include 'user_account/_tabs.html' with active='folders' %}
{% endblock %}
{% block account-content %}
<div id="folders-list" class="container mt-4">{% include 'peachjam/_folders_list.html' %}</div>
{% endblock %}
68 changes: 68 additions & 0 deletions peachjam/templates/socialaccount/connections.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
{% extends "user_account/layout.html" %}
{% load i18n socialaccount %}
{% block title %}
{% trans "Social accounts" %} {{ block.super }}
{% endblock %}
{% block account-tabs %}
{% include 'user_account/_tabs.html' with active='social' %}
{% endblock %}
{% block account-content %}
<div class="card mb-5">
<h5 class="card-header">{% trans "Social accounts" %}</h5>
<div class="card-body">
{% if form.accounts %}
<p>{% blocktrans %}You can sign in to your account using any of these third party accounts:{% endblocktrans %}</p>
{% if form.non_field_errors %}
<div class="text-danger">
{% for error in form.non_field_errors %}<p>{{ error }}</p>{% endfor %}
</div>
{% endif %}
<table class="table table-sm mt-4 mb-4">
{% for base_account in form.accounts %}
{% with base_account.get_provider_account as account %}
<tr>
<td>
<i class="fab fa-fw fa-{{ account.get_brand.id }}"></i> {{ account.get_brand.name }}
</td>
<td>{{ account.account.extra_data.email|default:account }}</td>
<td class="text-end">
<form method="post" action="{% url 'socialaccount_connections' %}">
{% csrf_token %}
<input type="hidden" name="account" value="{{ base_account.id }}" />
<button class="btn btn-sm btn-outline-danger"
type="submit"
data-confirm="{% trans "Really remove this social account?" %}">
{% trans "Disconnect" %}
</button>
</form>
</td>
</tr>
{% endwith %}
{% endfor %}
</table>
{% else %}
<p>{% trans 'You currently have no social network accounts connected to this account.' %}</p>
{% endif %}
{% get_providers as socialaccount_providers %}
{% if socialaccount_providers %}
<h5 class="mt-4">{% trans "Connect a social account" %}</h5>
<p class="mb-4">{% trans "Connecting to a social account allows you to use it to login to Indigo." %}</p>
<div class="row">
<div class="col-md-6">
<ul class="socialaccount_providers list-unstyled">
{% for provider in socialaccount_providers %}
<li>
<a class="btn btn-block btn-outline-primary mb-3 socialaccount_provider {{ provider.id }}"
href="{% provider_login_url provider.id process='connect' %}">
<i class="fab fa-fw fa-{{ provider.id }}"></i>
{% trans "Connect to" %} {{ provider.name }}
</a>
</li>
{% endfor %}
</ul>
</div>
</div>
{% endif %}
</div>
</div>
{% endblock %}
38 changes: 38 additions & 0 deletions peachjam/templates/user_account/_tabs.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
{% load socialaccount i18n %}
<ul class="nav nav-tabs border-bottom">
{% block list-group-items %}
<li class="nav-item">
<a href="{% url 'edit_account' %}"
class="nav-link {% if active == 'profile' %}active{% endif %}">
{% trans "Profile" %}
</a>
</li>
<li class="nav-item">
<a href="{% url 'account_change_password' %}"
class="nav-link {% if active == 'password' %}active{% endif %}">
{% trans "Password" %}
</a>
</li>
<li class="nav-item">
<a href="{% url 'account_email' %}"
class="nav-link {% if active == 'emails' %}active{% endif %}">
{% trans "Email addresses" %}
</a>
</li>
{% get_providers as socialaccount_providers %}
{% if socialaccount_providers %}
<li class="nav-item">
<a href="{% url 'socialaccount_connections' %}"
class="nav-link {% if active == 'social' %}active{% endif %}">
{% trans "Social accounts" %}
</a>
</li>
{% endif %}
<li class="nav-item">
<a href="{% url 'folder_list' %}"
class="nav-link {% if active == 'folders' %}active{% endif %}">
{% trans "Saved documents" %}
</a>
</li>
{% endblock %}
</ul>
51 changes: 51 additions & 0 deletions peachjam/templates/user_account/edit.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
{% extends 'user_account/layout.html' %}
{% load i18n %}
{% block title %}
{% trans "Edit Profile" %} {{ block.super }}
{% endblock %}
{% block account-tabs %}
{% include 'user_account/_tabs.html' with active='profile' %}
{% endblock %}
{% block account-content %}
<form method="post">
{% csrf_token %}
<div class="row">
<div class="col-lg-6 mx-auto">
<div class="card mb-5">
<h5 class="card-header">{% trans "Profile" %}</h5>
<div class="card-body">
<div class="mb-3">
<label for="{{ form.first_name.id_for_label }}">{{ form.first_name.label }}</label>
<input type="text"
class="form-control"
name="{{ form.first_name.name }}"
id="{{ form.first_name.id_for_label }}"
value="{{ form.first_name.value|default:'' }}"/>
{% if form.first_name.errors %}
<div class="text-danger">
{% for error in form.first_name.errors %}<p>{{ error }}</p>{% endfor %}
</div>
{% endif %}
</div>
<div class="mb-3">
<label for="{{ form.last_name.id_for_label }}">{{ form.last_name.label }}</label>
<input type="text"
class="form-control"
name="{{ form.last_name.name }}"
id="{{ form.last_name.id_for_label }}"
value="{{ form.last_name.value|default:'' }}"/>
{% if form.last_name.errors %}
<div class="text-danger">
{% for error in form.last_name.errors %}<p>{{ error }}</p>{% endfor %}
</div>
{% endif %}
</div>
</div>
<div class="card-footer text-end">
<button type="submit" class="btn btn-success">{% trans "Save" %}</button>
</div>
</div>
</div>
</div>
</form>
{% endblock %}
Loading

0 comments on commit 78794e8

Please sign in to comment.