corrected issue #14

This commit is contained in:
Arthur Gerbaud
2016-11-24 11:30:35 +01:00
parent 891ef9ef63
commit 387fe36382
3 changed files with 34 additions and 18 deletions

View File

@@ -6,11 +6,11 @@ from . import views
urlpatterns = [ urlpatterns = [
url(r'^$', views.IndexView.as_view(), name="index"), url(r'^$', views.IndexView.as_view(), name="index"),
url(r'planning/$', views.PlanningView.as_view(), name="planning"), url(r'^planning/$', views.PlanningView.as_view(), name="planning"),
url(r'liste/$', views.MaraudeListView.as_view(), name="liste"), url(r'^liste/$', views.MaraudeListView.as_view(), name="liste"),
url(r'lieu/create/$', views.LieuCreateView.as_view(), name="lieu-create"), url(r'^lieu/create/$', views.LieuCreateView.as_view(), name="lieu-create"),
# Compte-rendus de maraude # Compte-rendus de maraude
url(r'^(?P<pk>[0-9]+)/$', views.MaraudeDetailsView.as_view(), name="details"), url(r'^(?P<pk>[0-9]+)/$', views.MaraudeDetailsView.as_view(), name="details"),
url(r'^(?P<pk>[0-9]+)/update/$', views.CompteRenduUpdateView.as_view(), name="update"), url(r'^(?P<pk>[0-9]+)/update/$', views.CompteRenduUpdateView.as_view(), name="update"),
url(r'^(?P<pk>[0-9]+)/cr/$', views.CompteRenduCreateView.as_view(), name="create"), url(r'^(?P<pk>[0-9]+)/create/$', views.CompteRenduCreateView.as_view(), name="create"),
] ]

View File

@@ -23,6 +23,9 @@
<a id="UserMenu" href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false"> <a id="UserMenu" href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">
<strong style="color:#fff;">{% bootstrap_icon "user" %} &middot; {{user}} </strong>&middot; {{ user_group }}<span class="caret"></span></a> <strong style="color:#fff;">{% bootstrap_icon "user" %} &middot; {{user}} </strong>&middot; {{ user_group }}<span class="caret"></span></a>
<ul class="dropdown-menu" aria-labelledby="UserMenu"> <ul class="dropdown-menu" aria-labelledby="UserMenu">
{% if next %}
<p class="well-sm text-center"><strong style="color:#980300;">Vous n'avez pas l'autorisation<br/> d'accéder à cette page.</strong></p>
{%endif%}
{% if user.is_authenticated %} {% if user.is_authenticated %}
{% if user.is_superuser %}<li><a href="{% url 'admin:index' %}">{% bootstrap_icon "wrench" %} Administration</a></li>{% endif %} {% if user.is_superuser %}<li><a href="{% url 'admin:index' %}">{% bootstrap_icon "wrench" %} Administration</a></li>{% endif %}
<li><a href="{% url 'logout' %}">{% bootstrap_icon "log-out" %} Déconnecter</a></li> <li><a href="{% url 'logout' %}">{% bootstrap_icon "log-out" %} Déconnecter</a></li>
@@ -30,7 +33,6 @@
<li> <li>
<form class="navbar-form navbar-left" method="post" action="/login/">{% csrf_token %} <form class="navbar-form navbar-left" method="post" action="/login/">{% csrf_token %}
{% if next %} {% if next %}
<p class="well-sm text-center"><strong style="color:#980300;">Vous devez vous connecter<br/> pour accéder à cette page.</strong></p>
<input name="next" value="{{next}}" hidden /> <input name="next" value="{{next}}" hidden />
{% endif %} {% endif %}
<div class="form-group form-horizontal"> <div class="form-group form-horizontal">

View File

@@ -3,7 +3,7 @@ from django.urls import reverse
from django import views from django import views
from .mixins import WebsiteTemplateMixin from .mixins import WebsiteTemplateMixin
from django.contrib.auth.views import login from django.contrib.auth import login, authenticate
from django.http import HttpResponseRedirect, HttpResponsePermanentRedirect from django.http import HttpResponseRedirect, HttpResponsePermanentRedirect
class Index(WebsiteTemplateMixin, views.generic.TemplateView): class Index(WebsiteTemplateMixin, views.generic.TemplateView):
@@ -16,21 +16,35 @@ class Index(WebsiteTemplateMixin, views.generic.TemplateView):
header = "La Maraude ALSA" header = "La Maraude ALSA"
header_small = "accueil" header_small = "accueil"
def _get_user_entry_point(self): def get_context_data(self, **kwargs):
# Should find best entry point according to user Group context = super().get_context_data(**kwargs)
context["next"] = self.request.GET.get("next", "")
return context
def _get_entry_point(user):
from utilisateurs.models import Maraudeur
if isinstance(user, Maraudeur):
return reverse('maraudes:index') return reverse('maraudes:index')
else:
def get(self, request, *args, **kwargs): return reverse('index')
if request.user.is_authenticated():
return redirect(self._get_user_entry_point())
return super().get(request, *args, **kwargs)
def login_view(request): def login_view(request):
if request.method == 'GET': if request.method == 'GET':
return HttpResponsePermanentRedirect('/') return HttpResponsePermanentRedirect('/')
elif request.method == 'POST': elif request.method == 'POST':
#TODO: authenticate instead of mis-using 'login' view. username = request.POST['username']
response = login(request) password = request.POST['password']
return HttpResponseRedirect('/') user = authenticate(username=username, password=password)
if user is not None:
login(request, user)
next = request.POST.get('next', None)
if not next:
next = _get_entry_point(user)
return HttpResponseRedirect(next)
else:
return HttpResponseRedirect('/')