Two colomn profile page

This commit is contained in:
Alexandre Iooss 2020-02-21 11:53:37 +01:00
parent 43fd765a34
commit 45ce2eab9e
No known key found for this signature in database
GPG Key ID: 6C79278F3FCDCC02
4 changed files with 117 additions and 83 deletions

View File

@ -112,7 +112,7 @@ class UserUpdateView(LoginRequiredMixin, UpdateView):
class UserDetailView(LoginRequiredMixin, DetailView):
"""
Affiche les informations sur un utilisateur, sa note, ses clubs ...
Affiche les informations sur un utilisateur, sa note, ses clubs...
"""
model = Profile
context_object_name = "profile"
@ -126,6 +126,10 @@ class UserDetailView(LoginRequiredMixin, DetailView):
club_list = \
Membership.objects.all().filter(user=user).only("club")
context['club_list'] = ClubTable(club_list)
context['title'] = _("Account #%(id)s: %(username)s") % {
'id': user.pk,
'username': user.username,
}
return context

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-02-21 11:16+0100\n"
"POT-Creation-Date: 2020-02-21 11:52+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -90,7 +90,7 @@ msgstr ""
msgid "phone number"
msgstr ""
#: apps/member/models.py:29 templates/member/profile_detail.html:18
#: apps/member/models.py:29 templates/member/profile_detail.html:23
msgid "section"
msgstr ""
@ -98,7 +98,7 @@ msgstr ""
msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
msgstr ""
#: apps/member/models.py:36 templates/member/profile_detail.html:20
#: apps/member/models.py:36 templates/member/profile_detail.html:26
msgid "address"
msgstr ""
@ -180,7 +180,7 @@ msgstr ""
msgid "memberships"
msgstr ""
#: apps/member/views.py:63 templates/member/profile_detail.html:29
#: apps/member/views.py:63 templates/member/profile_detail.html:39
msgid "Update Profile"
msgstr ""
@ -188,6 +188,11 @@ msgstr ""
msgid "An alias with a similar name already exists."
msgstr ""
#: apps/member/views.py:129
#, python-format
msgid "Account #%(id)s: %(username)s"
msgstr ""
#: apps/note/admin.py:118 apps/note/models/transactions.py:86
msgid "source"
msgstr ""
@ -285,7 +290,7 @@ msgstr ""
msgid "alias"
msgstr ""
#: apps/note/models/notes.py:199
#: apps/note/models/notes.py:199 templates/member/profile_detail.html:32
msgid "aliases"
msgstr ""
@ -381,7 +386,7 @@ msgstr ""
msgid "Membership duration"
msgstr ""
#: templates/member/club_detail.html:18 templates/member/profile_detail.html:22
#: templates/member/club_detail.html:18 templates/member/profile_detail.html:29
msgid "balance"
msgstr ""
@ -397,23 +402,27 @@ msgstr ""
msgid "Regenerate token"
msgstr ""
#: templates/member/profile_detail.html:12
#: templates/member/profile_detail.html:10
msgid "first name"
msgstr ""
#: templates/member/profile_detail.html:14
#: templates/member/profile_detail.html:13
msgid "username"
msgstr ""
#: templates/member/profile_detail.html:27
msgid "Manage auth token"
#: templates/member/profile_detail.html:16
msgid "password"
msgstr ""
#: templates/member/profile_detail.html:30
#: templates/member/profile_detail.html:19
msgid "Change password"
msgstr ""
#: templates/member/profile_detail.html:38
#: templates/member/profile_detail.html:37
msgid "Manage auth token"
msgstr ""
#: templates/member/profile_detail.html:49
msgid "View my memberships"
msgstr ""

View File

@ -3,7 +3,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-02-21 11:16+0100\n"
"POT-Creation-Date: 2020-02-21 11:52+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -85,7 +85,7 @@ msgstr "adhérent"
msgid "phone number"
msgstr "numéro de téléphone"
#: apps/member/models.py:29 templates/member/profile_detail.html:18
#: apps/member/models.py:29 templates/member/profile_detail.html:23
msgid "section"
msgstr "section"
@ -93,7 +93,7 @@ msgstr "section"
msgid "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
msgstr "e.g. \"1A0\", \"9A♥\", \"SAPHIRE\""
#: apps/member/models.py:36 templates/member/profile_detail.html:20
#: apps/member/models.py:36 templates/member/profile_detail.html:26
msgid "address"
msgstr "adresse"
@ -179,7 +179,7 @@ msgstr "adhésion"
msgid "memberships"
msgstr "adhésions"
#: apps/member/views.py:63 templates/member/profile_detail.html:29
#: apps/member/views.py:63 templates/member/profile_detail.html:39
msgid "Update Profile"
msgstr "Modifier le profil"
@ -187,6 +187,11 @@ msgstr "Modifier le profil"
msgid "An alias with a similar name already exists."
msgstr "Un alias avec un nom similaire existe déjà."
#: apps/member/views.py:129
#, python-format
msgid "Account #%(id)s: %(username)s"
msgstr "Compte n°%(id)s : %(username)s"
#: apps/note/admin.py:118 apps/note/models/transactions.py:86
msgid "source"
msgstr "source"
@ -285,7 +290,7 @@ msgstr "Alias invalide"
msgid "alias"
msgstr "alias"
#: apps/note/models/notes.py:199
#: apps/note/models/notes.py:199 templates/member/profile_detail.html:32
msgid "aliases"
msgstr "alias"
@ -381,7 +386,7 @@ msgstr "L'adhésion finie le"
msgid "Membership duration"
msgstr "Durée de l'adhésion"
#: templates/member/club_detail.html:18 templates/member/profile_detail.html:22
#: templates/member/club_detail.html:18 templates/member/profile_detail.html:29
msgid "balance"
msgstr "solde du compte"
@ -397,23 +402,29 @@ msgstr "Créé le"
msgid "Regenerate token"
msgstr "Regénérer le jeton"
#: templates/member/profile_detail.html:12
#: templates/member/profile_detail.html:10
msgid "first name"
msgstr ""
#: templates/member/profile_detail.html:14
#: templates/member/profile_detail.html:13
msgid "username"
msgstr "nom d'utilisateur"
#: templates/member/profile_detail.html:27
msgid "Manage auth token"
msgstr "Gérer les jetons d'authentification"
#: templates/member/profile_detail.html:16
#, fuzzy
#| msgid "Change password"
msgid "password"
msgstr "Changer le mot de passe"
#: templates/member/profile_detail.html:30
#: templates/member/profile_detail.html:19
msgid "Change password"
msgstr "Changer le mot de passe"
#: templates/member/profile_detail.html:38
#: templates/member/profile_detail.html:37
msgid "Manage auth token"
msgstr "Gérer les jetons d'authentification"
#: templates/member/profile_detail.html:49
msgid "View my memberships"
msgstr "Voir mes adhésions"

View File

@ -2,67 +2,77 @@
{% load i18n static pretty_money django_tables2 %}
{% block content %}
<h3>Compte n° {{ object.pk }}</h3>
<div class="row mt-4">
<div class="col-md-3">
<img src="{{ object.note.display_image.url }}" alt=""/>
<img src="{{ object.note.display_image.url }}" alt=""/>
<dl class="row table">
<dt class="col-xl-6">{% trans 'name'|capfirst %}, {% trans 'first name' %}</dt>
<dd class="col-xl-6">{{ object.user.last_name }} {{ object.user.first_name }}</dd>
<dl class="row">
<dt class="col-6 col-md-3">{% trans 'name'|capfirst %}</dt>
<dd class="col-6 col-md-3">{{ object.user.last_name }}</dd>
<dt class="col-6 col-md-3">{% trans 'first name'|capfirst %}</dt>
<dd class="col-6 col-md-3">{{ object.user.first_name }}</dd>
<dt class="col-6 col-md-3">{% trans 'username'|capfirst %}</dt>
<dd class="col-6 col-md-3">{{ object.user.username }}</dd>
<dt class="col-6 col-md-3">Aliases</dt>
<dd class="col-6 col-md-3">{{ object.user.note.alias_set.all }}</dd>
<dt class="col-6 col-md-3">{% trans 'section'|capfirst %}</dt>
<dd class="col-6 col-md-3">{{ object.section }}</dd>
<dt class="col-6 col-md-3">{% trans 'address'|capfirst %}</dt>
<dd class="col-6 col-md-3">{{ object.address }}</dd>
<dt class="col-6 col-md-3">{% trans 'balance'|capfirst %}</dt>
<dd class="col-6 col-md-3">{{ object.user.note.balance | pretty_money }}</dd>
</dl>
<center>
{% if object.user.pk == user.pk %}
<a class="btn btn-primary" href="{% url 'member:auth_token' %}">{% trans 'Manage auth token' %}</a>
{% endif %}
<a class="btn btn-primary" href="{% url 'member:user_update_profile' object.pk %}">{% trans 'Update Profile' %}</a>
<a class="btn btn-primary" href="{% url 'password_change' %}">{% trans 'Change password' %}</a>
</center>
<dt class="col-xl-6">{% trans 'username'|capfirst %}</dt>
<dd class="col-xl-6">{{ object.user.username }}</dd>
<div class="accordion" id="accordionProfile">
<div class="card">
<div class="card-header" id="headingOne">
<h5 class="mb-0">
<button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
<i class="fa fa-users"></i> {% trans "View my memberships" %}
</button>
</h5>
<dt class="col-xl-6">{% trans 'password'|capfirst %}</dt>
<dd class="col-xl-6">
<a class="badge badge-primary" href="{% url 'password_change' %}">
{% trans 'Change password' %}
</a>
</dd>
<dt class="col-xl-6">{% trans 'section'|capfirst %}</dt>
<dd class="col-xl-6">{{ object.section }}</dd>
<dt class="col-xl-6">{% trans 'address'|capfirst %}</dt>
<dd class="col-xl-6">{{ object.address }}</dd>
<dt class="col-xl-6">{% trans 'balance'|capfirst %}</dt>
<dd class="col-xl-6">{{ object.user.note.balance | pretty_money }}</dd>
<dt class="col-xl-6">{% trans 'aliases'|capfirst %}</dt>
<dd class="col-xl-6">{{ object.user.note.alias_set.all|join:", " }}</dd>
</dl>
<p class="text-center">
{% if object.user.pk == user.pk %}
<a class="btn btn-info btn-sm" href="{% url 'member:auth_token' %}">{% trans 'Manage auth token' %}</a>
{% endif %}
<a class="btn btn-primary btn-sm" href="{% url 'member:user_update_profile' object.pk %}">{% trans 'Update Profile' %}</a>
</p>
</div>
<div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordionProfile">
<div class="card-body">
{% render_table club_list %}
</div>
<div class="col-9">
<div class="accordion" id="accordionProfile">
<div class="card">
<div class="card-header" id="headingOne">
<h5 class="mb-0">
<button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
<i class="fa fa-users"></i> {% trans "View my memberships" %}
</button>
</h5>
</div>
<div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordionProfile">
<div class="card-body">
{% render_table club_list %}
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="headingTwo">
<h5 class="mb-0">
<button class="btn btn-link collapsed" type="button" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
<i class="fa fa-euro"></i> Historique des transactions
</button>
</h5>
</div>
<div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionProfile">
<div class="card-body">
{% render_table history_list %}
</div>
</div>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-header" id="headingTwo">
<h5 class="mb-0">
<button class="btn btn-link collapsed" type="button" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
<i class="fa fa-euro"></i> Historique des transactions
</button>
</h5>
</div>
<div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordionProfile">
<div class="card-body">
{% render_table history_list %}
</div>
</div>
</div>
</div>
{% endblock %}
{% endblock %}