Browse 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 11 years ago
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')),