add page to view/edit profile
authorFrédéric Péters <fpeters@0d.be>
Thu, 23 Apr 2020 16:51:34 +0000 (18:51 +0200)
committerFrédéric Péters <fpeters@0d.be>
Thu, 23 Apr 2020 16:51:34 +0000 (18:51 +0200)
panikdb/aa/views.py [new file with mode: 0644]
panikdb/static/css/style.css
panikdb/templates/aa/profile.html [new file with mode: 0644]
panikdb/templates/aa/user_form.html [new file with mode: 0644]
panikdb/templates/base.html
panikdb/templates/registration/password_change_form.html
panikdb/urls.py

diff --git a/panikdb/aa/views.py b/panikdb/aa/views.py
new file mode 100644 (file)
index 0000000..074f34d
--- /dev/null
@@ -0,0 +1,25 @@
+from django.contrib.auth.decorators import login_required
+from django.views.generic.base import TemplateView
+from django.views.generic.edit import UpdateView
+from django.core.urlresolvers import reverse_lazy
+
+from .models import User
+
+
+class ProfileView(TemplateView):
+    template_name = 'aa/profile.html'
+
+
+profile_view = login_required(ProfileView.as_view())
+
+
+class ProfileContactEditView(UpdateView):
+    model = User
+    fields = ['phone', 'mobile']
+    success_url = reverse_lazy('profile-view')
+
+    def get_object(self):
+        return self.request.user
+
+
+profile_contact_edit = login_required(ProfileContactEditView.as_view())
index 2c95837..aa663f5 100644 (file)
@@ -630,3 +630,8 @@ form#track-search button {
 .select2-container {
        min-width: 90%;
 }
+
+div#content div.section > h3 {
+       background: linear-gradient(to right, #386ede 30%, #00d6eb 100%);
+       color: white;
+}
diff --git a/panikdb/templates/aa/profile.html b/panikdb/templates/aa/profile.html
new file mode 100644 (file)
index 0000000..8d2a2d6
--- /dev/null
@@ -0,0 +1,23 @@
+{% extends "base.html" %}
+
+{% block appbar %}
+<h2>{{ user }}</h2>
+{% endblock %}
+
+{% block content %}
+<div class="section">
+  <h3>Informations de contact</h3>
+  <div>
+  <ul class="contact-details">
+    <li>Email : {{ user.email }}</li>
+    <li>Téléphone : {{ user.mobile|default_if_none:"" }} {% if user.phone %}— {{ user.phone }} (fixe){% endif %}</li>
+  </ul>
+  <a class="button" data-popup href="{% url 'profile-contact-edit' %}">Modifier</a>
+  </div>
+</div>
+
+<div class="section padded">
+        <a class="button" data-popup href="{% url 'auth_password_change' %}">Changement de mot de passe</a>
+</div>
+
+{% endblock %}
diff --git a/panikdb/templates/aa/user_form.html b/panikdb/templates/aa/user_form.html
new file mode 100644 (file)
index 0000000..1b2d7b8
--- /dev/null
@@ -0,0 +1,13 @@
+{% extends "base.html" %}
+
+{% block content %}
+<form method="post">
+{% csrf_token %}
+{{ form.as_p }}
+
+<div class="buttons">
+<button>Enregistrer</button>
+<a class="cancel" href="../..">Annuler</a>
+</div>
+</form>
+{% endblock %}
index aadfcfa..ca81f31 100644 (file)
@@ -69,8 +69,7 @@
     {% endblock %}
 
     {% block user-links %}
-            <span>{{ user.first_name }} {{ user.last_name }} ({{ user.username }})</span>
-            <a href="{% url 'auth_password_change' %}">Changement de mot de passe</a>
+            <a class="icon-user-space" href="{% url 'profile-view' %}">{{ user.first_name }} {{ user.last_name }} ({{ user.username }})</a>
             <a class="icon-signout" href="{% url 'logout' %}">Déconnexion</a>
             </span>
     {% endblock %}
index 76c72ad..4da4475 100644 (file)
@@ -1,46 +1,22 @@
 {% extends "registration/base.html" %}
 {% load i18n static %}
 
-
-{% block content %}<div id="content-main">
-
+{% block appbar %}
 <h2>{% trans 'Password change' %}</h2>
+{% endblock %}
 
-<form action="" method="post">{% csrf_token %}
-<div>
-{% if form.errors %}
-    <p class="errornote">
-    {% blocktrans count counter=form.errors.items|length %}Please correct the error below.{% plural %}Please correct the errors below.{% endblocktrans %}
-    </p>
-{% endif %}
-
-<p>{% trans "Please enter your old password, for security's sake, and then enter your new password twice so we can verify you typed it in correctly." %}</p>
-
-<fieldset class="module aligned wide">
-
-<div class="form-row">
-    {{ form.old_password.errors }}
-    <label for="id_old_password" class="required">{% trans 'Old password' %}:</label>{{ form.old_password }}
-</div>
-
-<div class="form-row">
-    {{ form.new_password1.errors }}
-    <label for="id_new_password1" class="required">{% trans 'New password' %}:</label>{{ form.new_password1 }}
-</div>
-
-<div class="form-row">
-{{ form.new_password2.errors }}
-    <label for="id_new_password2" class="required">{% trans 'Password (again)' %}:</label>{{ form.new_password2 }}
-</div>
+{% block content %}
 
-</fieldset>
+<form action="" method="post">
+{% csrf_token %}
+{{form.as_p}}
 
-<div class="submit-row">
+<div class="buttons">
   <button>{% trans 'Change my password' %}</button>
+  <a class="cancel" href="../..">Annuler</a>
 </div>
 
 <script type="text/javascript">document.getElementById("id_old_password").focus();</script>
-</div>
-</form></div>
+</form>
 
 {% endblock %}
index 6457da8..b87a04b 100644 (file)
@@ -22,6 +22,7 @@ from nonstop.urls import urlpatterns as nonstop_urlpatterns
 import panikombo.views
 
 from .poll import views as poll_views
+from .aa import views as aa_views
 from . import views
 
 from combo.manager.urls import urlpatterns as combo_manager_urls
@@ -78,6 +79,9 @@ urlpatterns = [
     url(r'^combok/soundfiles/', panikombo.views.soundfiles),
     url(r'^combok/episodes/', panikombo.views.episodes),
 
+    url(r'^profile/$', aa_views.profile_view, name='profile-view'),
+    url(r'^profile/edit/$', aa_views.profile_contact_edit, name='profile-contact-edit'),
+
     url(r'^vote/$', poll_views.vote, name='vote'),
     url(r'^vote/results/$', poll_views.vote_results, name='vote-results'),