]> git.0d.be Git - panikdb.git/commitdiff
add pages to view/edit member details
authorFrédéric Péters <fpeters@0d.be>
Wed, 23 Sep 2020 10:26:54 +0000 (12:26 +0200)
committerFrédéric Péters <fpeters@0d.be>
Wed, 23 Sep 2020 10:26:54 +0000 (12:26 +0200)
panikdb/aa/views.py
panikdb/static/css/style.scss
panikdb/templates/aa/profile_form.html [new file with mode: 0644]
panikdb/templates/aa/user_detail.html [new file with mode: 0644]
panikdb/templates/aa/user_form.html
panikdb/templates/aa/user_list.html
panikdb/urls.py

index ded18223d0a2d467a713a25adfeb898352c652e8..e1cf362b10448822b6be8cc1b029cdfc7fc3c7b2 100644 (file)
@@ -1,9 +1,11 @@
 from django.contrib.auth.decorators import login_required
 from django.db.models import Q
 from django.views.generic.base import TemplateView
+from django.views.generic.detail import DetailView
 from django.views.generic.edit import UpdateView
 from django.views.generic.list import ListView
 from django.core.urlresolvers import reverse_lazy
+from django.core.exceptions import PermissionDenied
 
 from .models import User
 
@@ -19,6 +21,7 @@ class ProfileContactEditView(UpdateView):
     model = User
     fields = ['phone', 'mobile', 'share_contact_details']
     success_url = reverse_lazy('profile-view')
+    template_name = 'aa/profile_form.html'
 
     def get_object(self):
         return self.request.user
@@ -51,3 +54,26 @@ class MembersListView(ListView):
 
 
 members_list_view = login_required(MembersListView.as_view())
+
+
+class MemberView(DetailView):
+    model = User
+
+
+member_view = login_required(MemberView.as_view())
+
+
+class MemberEditView(UpdateView):
+    model = User
+    fields = ['email', 'phone', 'mobile']
+
+    def get_object(self):
+        if not self.request.user.is_staff:
+            raise PermissionDenied()
+        return super().get_object()
+
+    def get_success_url(self):
+        return reverse_lazy('member-view', kwargs={'pk': self.get_object().id})
+
+
+member_edit = login_required(MemberEditView.as_view())
index 40d19bc91d7e39efd0c1eba3392c4070e405c663..ed2244923a94e166eff8f4d86fcc3b6904317628 100644 (file)
@@ -738,6 +738,7 @@ form div[id^="id_weight"] {
 div#content div.section > h3 {
        background: linear-gradient(to right, #386ede 30%, #00d6eb 100%);
        color: white;
+       margin-bottom: 0;
 }
 
 div#content div.wiki-section h3 {
@@ -992,3 +993,7 @@ body.loading::before {
                padding: 0.6rem;
        }
 }
+
+div.section > div > *:first-child {
+       margin-top: 0;
+}
diff --git a/panikdb/templates/aa/profile_form.html b/panikdb/templates/aa/profile_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 %}
diff --git a/panikdb/templates/aa/user_detail.html b/panikdb/templates/aa/user_detail.html
new file mode 100644 (file)
index 0000000..661b6a7
--- /dev/null
@@ -0,0 +1,27 @@
+{% extends "base.html" %}
+
+{% block appbar %}
+<h2>{{ user }}</h2>
+{% endblock %}
+
+{% block content %}
+<div class="section">
+  <h3>Informations</h3>
+  <div>
+  {% if user.active_emissions %}
+  <p>{{ user.active_emissions|join:", " }}</p>
+  {% endif %}
+  {% if user.is_ca %}<p>Membre du CA.</p>{% endif %}
+  {% if user.is_cp %}<p>Membre du CP.</p>{% endif %}
+  {% if request.user.is_staff or user.share_contact_details %}
+  <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>
+  {% endif %}
+  {% if request.user.is_staff %}
+  <a class="button" data-popup href="{% url 'member-edit' pk=user.id %}">Modifier</a>
+  {% endif %}
+  </div>
+</div>
+{% endblock %}
index 1b2d7b88754fd309b80e110b31b37b6d91fbd331..e67daa6facd9904cec90cc7917317dcc57c35a56 100644 (file)
@@ -7,7 +7,7 @@
 
 <div class="buttons">
 <button>Enregistrer</button>
-<a class="cancel" href="../..">Annuler</a>
+<a class="cancel" href="{% url 'member-view' pk=object.id %}">Annuler</a>
 </div>
 </form>
 {% endblock %}
index bad3ba3dde80a6f42d70f8b969ac53133e6ba7b1..691d905892a7f4acae30624a084774dbc05adabb 100644 (file)
@@ -15,7 +15,7 @@
 <table class="main">
 {% for user in object_list %}
   <tr>
-    <td>{{ user }}</td>
+    <td><a href="{% url 'member-view' pk=user.id %}">{{ user }}</a></td>
     <td>{% if user.is_ca %}CA{% endif %}
         {% if user.is_cp %}CP{% endif %}</td>
     <td>{{ user.active_emissions|join:", " }}</td>
index d8e8d99a0d6b7299a36f21c2c26e9dda87fea915..fd25587225e6dcfeb1d666d84d4ae151857594d1 100644 (file)
@@ -82,6 +82,8 @@ urlpatterns = [
     url(r'^combok/episodes/', panikombo.views.episodes),
 
     url(r'^members/$', aa_views.members_list_view, name='members-list-view'),
+    url(r'^members/(?P<pk>\d+)/$', aa_views.member_view, name='member-view'),
+    url(r'^members/(?P<pk>\d+)/edit/$', aa_views.member_edit, name='member-edit'),
     url(r'^profile/$', aa_views.profile_view, name='profile-view'),
     url(r'^profile/edit/$', aa_views.profile_contact_edit, name='profile-contact-edit'),