Parcourir la source

Fix login page
Add logout menu (may be change placement later)
Use session user for member information page instead of member number passed by url

Fabs il y a 11 ans
Parent
commit
5a93b80ee4

+ 5 - 5
coin/members/models.py

@@ -93,7 +93,8 @@ class Member(CoinLdapSyncModel):
 
     def get_automatic_ldap_cn(self):
         """
-        Calcul le login / ldap_cn automatiquement en fonction du nom et du prénom
+        Calcul le login / ldap_cn automatiquement en fonction
+        du nom et du prénom
         """
         # Première lettre de chaque partie du prénom
         first_name_letters = ''.join(
@@ -210,7 +211,6 @@ class LdapUser(ldapdb.models.Model):
 
 
 class LdapGroup(ldapdb.models.Model):
-
     """
     Class for representing an LDAP group entry.
     """
@@ -296,9 +296,9 @@ def define_member_user(sender, request, user, **kwargs):
             member.user = user
             member.save()
         elif member.user.username != user.username:
-            raise Exception('Un membre avec cet ldap_cn existe en base de donnée '
-                            'mais l\'utilisateur auquel il est rattaché ne '
-                            'correspond pas.')
+            raise Exception('Un membre avec cet ldap_cn existe en base de '
+                            'donnée mais l\'utilisateur auquel il est rattaché '
+                            'ne correspond pas.')
     except Member.DoesNotExist:
         if not user.is_superuser:
             raise

+ 2 - 2
coin/members/templates/members/login.html

@@ -12,7 +12,7 @@
 	<p>Your username and password didn't match. Please try again.</p>
 	{% endif %}
 
-	<form method="post" action="{% url 'django.contrib.auth.views.login' %}">
+	<form method="post" action="{% url 'members:django.contrib.auth.views.login' %}">
 	{% csrf_token %}
 	<table>
 	<tr>
@@ -25,7 +25,7 @@
 	</tr>
 	</table>
 
-	<input type="submit" value="login" />
+	<input type="submit" value="Connexion" />
 	<input type="hidden" name="next" value="{{ next }}" />
 	</form>
 </div>

+ 13 - 4
coin/members/urls.py

@@ -7,11 +7,20 @@ from coin.members.models import Member
 urlpatterns = patterns(
     '',
     url(r'^$', views.index, name='index'),
-    url(r'^info/(?P<pk>\d+)/$',
-        DetailView.as_view(
-            model=Member,
-            template_name='members/infos.html'),
+    url(r'^login/$', 'django.contrib.auth.views.login',
+        {'template_name': 'members/login.html'},
+        name = 'login'),
+    url(r'^logout/$', 'django.contrib.auth.views.logout_then_login',
+        name = 'logout'),
+
+    url(r'^info/$',views.infos,
         name='infos'),
+    
+    # url(r'^info/(?P<pk>\d+)/$',
+    #     DetailView.as_view(
+    #         model=Member,
+    #         template_name='members/infos.html'),
+    #     name='infos'),
     url(r'^abo/', views.index, name = 'abo'),
     url(r'^contact/', views.index, name='contact')
 )

+ 11 - 5
coin/members/views.py

@@ -2,24 +2,30 @@
 from django.http import HttpResponse
 # from django.template import Context, loader
 from django.shortcuts import render, render_to_response, get_object_or_404
+from django.contrib.auth.decorators import login_required
 #from django.http import Http404
 from coin.members.models import Member
 
 
+@login_required
 def index(request):
     return render_to_response('members/index.html')
 
-def infos(request, member_id):
-    member = get_object_or_404(Member, pk=member_id)
-    return render('members/infos.html', {'member':member})
+@login_required
+def infos(request):
+    member = request.user.member
+    return render_to_response('members/infos.html', {'member':member})
 
-def abos(request, member_id):
+@login_required
+def abos(request):
     return render_to_response('members/abo.html')
 
+@login_required
 def contact(request):
     return render_to_response('members/contact.html')
 
-def change_password(request, member_id):
+@login_required
+def change_password(request):
     member = get_object_or_404(Member, pk=member_id)
     if request.POST['password']:
         member.password = ''

+ 5 - 0
coin/settings.py

@@ -68,6 +68,11 @@ USE_L10N = True
 # If you set this to False, Django will not use timezone-aware datetimes.
 USE_TZ = True
 
+# Default URL for login and logout
+LOGIN_URL = '/members/login'
+LOGIN_REDIRECT_URL = '/members'
+LOGOUT_URL = '/members/logout'
+
 # Absolute filesystem path to the directory that will hold user-uploaded files.
 # Example: "/var/www/example.com/media/"
 MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')

+ 6 - 4
coin/templates/base.html

@@ -27,11 +27,13 @@
     {% block sidenav %} 
     <nav id="sidebox" class="hide-for-small">
      <h3 id="nav">Navigation</h3>
+     ::{{ request.path_info }}
      <ul class="side-nav">
-         <li {% if request.get_full_path = "/members/" %}class="active"{% endif %}><a href="/members/">Tableau de bord</a></li>
-         <li {% if request.get_full_path = "/members/info/" %}class="active"{% endif %} ><a href="/members/info/">Mes informations personnelles</a></li>
-         <li {% if request.get_full_path = "/members/abo/" %}class="active"{% endif %}><a href="/members/abo/">Mes abonnements</a></li>
-         <li {% if request.get_full_path = "/members/contact/" %}class="active"{% endif %}><a href="/members/contact/">Contact / Support</a></li>
+         <li {% if request.path_info == "home" %}class="active"{% endif %}><a href="{% url 'home' %}">Tableau de bord</a></li>
+         <li {% if request.path_info == "members/info" %}class="active"{% endif %}><a href="{% url 'members:infos' %}">Mes informations personnelles</a></li>
+         <li {% if request.get_full_path == "/members/abo/" %}class="active"{% endif %}><a href="/members/abo/">Mes abonnements</a></li>
+         <li {% if request.get_full_path == "/members/contact/" %}class="active"{% endif %}><a href="/members/contact/">Contact / Support</a></li>
+         <li {% if request.get_full_path == "/members/logout/" %}class="active"{% endif %}><a href="{% url 'members:logout' %}">Déconnexion</a></li>
      </ul>
      </nav>
      {% endblock %}

+ 2 - 3
coin/urls.py

@@ -9,13 +9,12 @@ admin.autodiscover()
 
 urlpatterns = patterns(
     '',
-    #url(r'^$', 'coin.views.home', name='home'),
+    url(r'^$', 'coin.members.views.index', name='home'),
 
     #url(r'^members/password/$', 'django_ldapbackend.views.password_change'),
     #url(r'^members/password/changed/$',
     #    'django.contrib.auth.views.password_change_done'),
-    url(r'^members/login/$', 'django.contrib.auth.views.login',
-        {'template_name': 'members/login.html'}),
+
     url(r'^members/', include('coin.members.urls', namespace='members')),
     url(r'^billing/', include('coin.billing.urls', namespace='billing')),