refact ergo + page perso (vide)
authordavin baragiotta <davin.baragiotta@u-db.(none)>
Tue, 2 Aug 2011 19:35:30 +0000 (15:35 -0400)
committerDavin BARAGIOTTA <davin.baragiotta@auf.org>
Tue, 2 Aug 2011 19:35:30 +0000 (15:35 -0400)
36 files changed:
project/context_processors.py
project/dae/context_processors.py [new file with mode: 0644]
project/dae/templates/dae/embauche.html
project/dae/templates/dae/embauche_consulter.html
project/dae/templates/dae/embauches_liste.html
project/dae/templates/dae/index.html
project/dae/templates/dae/poste.html
project/dae/templates/dae/poste_consulter.html
project/dae/templates/dae/postes_liste.html
project/dae/utils.py
project/dae/workflow.py
project/decorators.py
project/lib.py [new file with mode: 0644]
project/recrutement/context_processors.py [new file with mode: 0644]
project/recrutement/permissions.py [new file with mode: 0644]
project/recrutement/templates/recrutement/affecter_evaluateurs.html
project/recrutement/templates/recrutement/envoyer_courriel_candidats.html
project/recrutement/templates/recrutement/index.html
project/recrutement/templates/recrutement/postuler_appel_offre.html
project/recrutement/templates/recrutement/selectionner_template.html
project/rh/templates/rh/employe.html [new file with mode: 0644]
project/rh/templates/rh/employes_liste.html [new file with mode: 0644]
project/rh/templates/rh/index.html [deleted file]
project/rh/templates/rh/perso.html [new file with mode: 0644]
project/rh/urls.py
project/rh/views.py
project/settings.py
project/templates/404.html [new file with mode: 0644]
project/templates/500.html [new file with mode: 0644]
project/templates/550.html [new file with mode: 0644]
project/templates/actions.html [new file with mode: 0644]
project/templates/autocompleteselect.html
project/templates/index.html
project/templates/menu.html
project/urls.py
project/views.py

index 566b745..58db668 100644 (file)
@@ -1,4 +1,6 @@
 # -*- encoding: utf-8 -*-
+
+from lib import get_employe_from_user
 from permissions import is_admin
 
 # Ajout de variables accessibles dans les templates (pour tester permissions dans templates)
@@ -6,6 +8,11 @@ from permissions import is_admin
 def utilisateur(request):
     return {'utilisateur': request.user}
     
+def this_employe(request):
+    user = request.user
+    employe = get_employe_from_user(user)
+    return {'this_employe': employe}
+    
 def user_is_admin(request):
     return {'user_is_admin': not request.user.is_anonymous() and is_admin(request.user)}
 
diff --git a/project/dae/context_processors.py b/project/dae/context_processors.py
new file mode 100644 (file)
index 0000000..40dce68
--- /dev/null
@@ -0,0 +1,8 @@
+# -*- encoding: utf-8 -*-
+from dae.decorators import user_in_dae_groupes as in_dae_groupes
+
+# Ajout de variables accessibles dans les templates (pour tester permissions dans templates)
+   
+def user_in_dae_groupes(request):
+    return {'user_in_dae_groupes': in_dae_groupes(request.user)}
+
index 0a3cd4f..f743dda 100644 (file)
@@ -2,7 +2,6 @@
 {% load adminmedia %}
 
 {% block title %}RH - DAE - Embauche{% endblock %}
-{% block titre %}Ressources humaines{% endblock %}
 {% block sous_titre %}Demande d'autorisation d'engagement{% endblock %}
 
 {% block extrahead %}
index 6fc81c8..7884878 100644 (file)
@@ -2,7 +2,6 @@
 {% load adminmedia dae %}
 
 {% block title %}RH - DAE - Embauche{% endblock %}
-{% block titre %}Ressources humaines{% endblock %}
 {% block sous_titre %}Demande d'autorisation d'engagement{% endblock %}
 
 {% block extrahead %}
index acaa134..1cc7d8b 100644 (file)
@@ -1,7 +1,6 @@
 {% extends 'base.html' %}
 
 {% block title %}RH - DAE - Embauches{% endblock %}
-{% block titre %}Ressources humaines{% endblock %}
 {% block sous_titre %}Demande d'autorisation d'engagement{% endblock %}
 
 {% block main %}
index c2ac8d2..1d6bc8b 100644 (file)
@@ -2,7 +2,6 @@
 {% load dae %}
 
 {% block title %}RH - DAE{% endblock %}
-{% block titre %}Ressources humaines{% endblock %}
 {% block sous_titre %}Demande d'autorisation d'engagement{% endblock %}
 
 {% block main %}
index 789d173..4a40e79 100644 (file)
@@ -2,7 +2,6 @@
 {% load adminmedia %}
 
 {% block title %}RH - DAE - Poste{% endblock %}
-{% block titre %}Ressources humaines{% endblock %}
 {% block sous_titre %}
 Demande d'autorisation d'embauche
 {% endblock %}
index b200fe3..e720fb6 100644 (file)
@@ -2,7 +2,6 @@
 {% load adminmedia dae %}
 
 {% block title %}RH - DAE - Poste{% endblock %}
-{% block titre %}Ressources humaines{% endblock %}
 {% block sous_titre %}
 Demande d'autorisation d'embauche
 {% endblock %}
index f9703ac..c010b90 100644 (file)
@@ -1,7 +1,6 @@
 {% extends 'base.html' %}
 
 {% block title %}RH - DAE - Postes{% endblock %}
-{% block titre %}Ressources humaines{% endblock %}
 {% block sous_titre %}Demande d'autorisation d'engagement{% endblock %}
 
 {% block main %}
index d8f765b..c0f2c05 100644 (file)
@@ -3,14 +3,15 @@
 import datamaster_modeles.models as ref
 
 def get_employe_from_user(user):
-  """
-  Retourne un employé AUF à partir de son user Django. 
-  """
-  try:
-      employe = ref.Authentification.objects.get(courriel=user.email).id
-  except:
-      raise Exception(u"L'employé avec le courriel %s n'a pas été trouvé dans le référentiel." % user.email)
-  return employe
+    """
+    Retourne un employé AUF à partir de son user Django. 
+    """
+    # TODO : Refactoring : utiliser project.lib.get_employe_from_user
+    try:
+        employe = ref.Authentification.objects.get(courriel=user.email).id
+    except:
+        raise Exception(u"L'employé avec le courriel %s n'a pas été trouvé dans le référentiel." % user.email)
+    return employe
 
 def is_user_dans_services_centraux(user):
     employe = get_employe_from_user(user)
index bb1c55f..fc2b5f4 100644 (file)
@@ -10,6 +10,7 @@ def safe_create_groupe(name):
     ne peut se faire. (C'est le cas au syncdb, quand la table de groupe
     n'a pas été crée encore).
     """
+    # TODO : Refactoring : utiliser project.lib.safe_create_groupe
     try:
         grp, created = Group.objects.get_or_create(name=name)
     except:
index 03430bf..2c543c8 100644 (file)
@@ -2,11 +2,17 @@
 """
 Décorateurs AUF
 """
-from django.contrib.auth.decorators import user_passes_test
-from django.core.urlresolvers import reverse
+#from django.contrib.auth.decorators import user_passes_test
+#from django.core.exceptions import PermissionDenied
+#from django.core.urlresolvers import reverse
 from django.http import HttpResponseRedirect
+from django.shortcuts import redirect
 from permissions import is_employe, is_admin
 
+#from datamaster_modeles import models as ref
+from dae.utils import get_employe_from_user
+from rh import models as rh
+
 # Décorateurs des fonctions dans views (pour tester permissions dans views)
     
 def admin_required(fn):
@@ -23,3 +29,19 @@ def admin_required(fn):
             tup = login_url, REDIRECT_FIELD_NAME, path
             return HttpResponseRedirect('%s?%s=%s' % tup)
     return inner
+    
+def user_is_this_employe(fn):
+    """
+    Décorateur qui vérifie si le user est l'employé demandé.
+    Succes = execution de la vue.
+    Echec = page d'erreur de permission
+    """
+    def inner(request, id, *args, **kwargs):
+        id = int(id)
+        user = request.user
+        employe = get_employe_from_user(user)
+        if user.is_authenticated() and employe and id==employe.id:
+            return fn(request, id, *args, **kwargs)
+#        raise PermissionDenied
+        return redirect('550')
+    return inner
diff --git a/project/lib.py b/project/lib.py
new file mode 100644 (file)
index 0000000..2c90073
--- /dev/null
@@ -0,0 +1,28 @@
+# -*- encoding: utf-8 -*-
+
+import datamaster_modeles.models as ref
+import rh.models as rh
+
+def get_employe_from_user(user):
+    """
+    Retourne un employé AUF (rh.Employe) à partir de son user Django. 
+    """
+    try:
+        ref_employe = ref.Authentification.objects.get(courriel=user.email).id
+        employe = rh.Employe.objects.get(id=ref_employe.id)
+    except:
+        #raise Exception(u"L'employé avec le courriel %s n'a pas été trouvé dans le référentiel." % user.email)
+        employe = rh.Employe.objects.none()
+    return employe
+    
+def safe_create_groupe(name):
+    """
+    Création d'un groupe prédéfini. Retourne None, quand la création
+    ne peut se faire. (C'est le cas au syncdb, quand la table de groupe
+    n'a pas été créée encore).
+    """
+    try:
+        grp, created = Group.objects.get_or_create(name=name)
+    except:
+        return None
+    return grp
diff --git a/project/recrutement/context_processors.py b/project/recrutement/context_processors.py
new file mode 100644 (file)
index 0000000..69b8c6e
--- /dev/null
@@ -0,0 +1,8 @@
+# -*- encoding: utf-8 -*-
+from recrutement.permissions import user_in_recrutement_groupes as in_recrutement_groupes
+
+# Ajout de variables accessibles dans les templates (pour tester permissions dans templates)
+   
+def user_in_recrutement_groupes(request):
+    return {'user_in_recrutement_groupes': in_recrutement_groupes(request.user)}
+
diff --git a/project/recrutement/permissions.py b/project/recrutement/permissions.py
new file mode 100644 (file)
index 0000000..c8d12fd
--- /dev/null
@@ -0,0 +1,25 @@
+# -*- encoding: utf-8 -*-
+from django.contrib.auth.models import Group
+
+from project.lib import safe_create_groupe
+
+# Logique AUF des permissions
+
+grp_drh = safe_create_groupe(name='DRH')
+grp_evaluateurs = safe_create_groupe(name='Évaluateurs')
+
+recrutement_groupes = (
+    grp_drh,
+    grp_evaluateurs,
+)
+
+def user_in_recrutement_groupes(user):
+    """
+    Teste si un user Django fait parti des groupes prédéfinis de DAE.
+    """
+    if user.is_superuser:
+        return True
+    for g in user.groups.all():
+        if g in recrutement_groupes:
+            return True
+    return False
index 926d3bc..17af613 100644 (file)
@@ -2,7 +2,6 @@
 {% load i18n adminmedia form_utils_tags %}
 
 {% block title %}RH - Recrutement{% endblock %}
-{% block titre %}Ressources humaines{% endblock %}
 {% block sous_titre %}Affecter évaluateur{% endblock %}
 
 {% block content %}
index 7fa5696..2ffe957 100644 (file)
@@ -2,7 +2,6 @@
 {% load i18n adminmedia form_utils_tags %}
 
 {% block title %}RH - Recrutement{% endblock %}
-{% block titre %}Ressources humaines{% endblock %}
 {% block sous_titre %}Envoyer courriel aux candidats{% endblock %}
 {% block extrahead %}
 
index 452d7a0..5ca20a9 100644 (file)
@@ -1,14 +1,13 @@
 {% extends 'base.html' %}
 
-{% block title %}RH{% endblock %}
-{% block titre %}Ressources humaines{% endblock %}
-{% block sous_titre %}Accueil{% endblock %}
+{% block title %}RH - Recrutement{% endblock %}
+{% block sous_titre %}Recrutement{% endblock %}
 
 {% block main %}
 <h1>Recrutement</h1>
 
 <p>
-Recrutement
+Application de gestion du recrutement.
 </p>
 
 {% endblock %}
index 53569f0..5227c79 100644 (file)
@@ -2,7 +2,6 @@
 {% load adminmedia %}
 
 {% block title %}RH{% endblock %}
-{% block titre %}Ressources humaines{% endblock %}
 {% block sous_titre %}Accueil{% endblock %}
 
 {% block main %}
index fe32d40..038387c 100644 (file)
@@ -2,7 +2,6 @@
 {% load i18n adminmedia form_utils_tags %}
 
 {% block title %}RH - Recrutement{% endblock %}
-{% block titre %}Ressources humaines{% endblock %}
 {% block sous_titre %}Envoyer courriel aux candidats{% endblock %}
 {% block extrahead %}
 {{ form.media }}
diff --git a/project/rh/templates/rh/employe.html b/project/rh/templates/rh/employe.html
new file mode 100644 (file)
index 0000000..35917f3
--- /dev/null
@@ -0,0 +1,11 @@
+{% extends 'base.html' %}
+
+{% block title %}RH - {{ employe }}{% endblock %}
+{% block sous_titre %}Employés{% endblock %}
+
+{% block main %}
+<h1>{{ employe }}</h1>
+
+{{ employe }}­
+{% endblock %}
+
diff --git a/project/rh/templates/rh/employes_liste.html b/project/rh/templates/rh/employes_liste.html
new file mode 100644 (file)
index 0000000..80dd7f1
--- /dev/null
@@ -0,0 +1,16 @@
+{% extends 'base.html' %}
+
+{% block title %}RH - Employés{% endblock %}
+{% block sous_titre %}Employés{% endblock %}
+
+{% block main %}
+<h1>Employés</h1>
+
+<ul>
+{% for e in employes %}
+    <li><a href="{% url rh_employe e.id %}">{{ e }}</a></li>
+{% endfor %}
+</ul>
+
+{% endblock %}
+
diff --git a/project/rh/templates/rh/index.html b/project/rh/templates/rh/index.html
deleted file mode 100644 (file)
index d1cccdd..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-{% extends 'base.html' %}
-
-{% block title %}RH{% endblock %}
-{% block titre %}Ressources humaines{% endblock %}
-{% block sous_titre %}Accueil{% endblock %}
-
-{% block main %}
-<h1>Ressources humaines</h1>
-
-<p>
-L'ensemble des applications RH sera regroupé dans ce système de gestion des ressources humaines (SGRH).
-</p>
-<p>
-Voici les modules actuellement disponibles :
-</p>
-<ul>
-    <li><a href="{% url dae_index %}">Demande d'autorisation d'embauche (DAE)</a></li>
-</ul>
-{% endblock %}
-
diff --git a/project/rh/templates/rh/perso.html b/project/rh/templates/rh/perso.html
new file mode 100644 (file)
index 0000000..e9e7e0e
--- /dev/null
@@ -0,0 +1,11 @@
+{% extends 'base.html' %}
+
+{% block title %}RH - {{ employe }}{% endblock %}
+{% block sous_titre %}Espace personnel{% endblock %}
+
+{% block main %}
+<h1>{{ employe }}</h1>
+
+Infos personnelles.
+{% endblock %}
+
index 9430adc..76f1b89 100644 (file)
@@ -3,6 +3,7 @@ from django.conf.urls.defaults import patterns, url
 
 urlpatterns = patterns(
     'project.rh.views',
-    url(r'^$', 'index', name='index'),
-    #url(r'^employes$', 'employes', name='employes'),
+    url(r'^employes/$', 'employes_liste', name='rh_employes'),
+    url(r'^employes/(?P<id>\d+)/perso$', 'perso', name='rh_perso'),
+    url(r'^employes/(?P<id>\d+)$', 'employe', name='rh_employe'),
 )
index 566f922..17530fb 100644 (file)
@@ -1,8 +1,47 @@
 # -*- encoding: utf-8 -*-
+from django.contrib.auth.decorators import login_required
 from django.shortcuts import redirect, render_to_response, get_object_or_404
 from django.template import RequestContext
 
+#from datamaster_modeles import models as ref
 from project.rh import models as rh
+from project.decorators import user_is_this_employe
 
-def index(request):
-    return render_to_response('rh/index.html', {}, RequestContext(request))
+
+# homes
+@user_is_this_employe
+def perso(request, id):
+    """Espace personnel de l'employé."""
+    try:
+        employe = rh.Employe.objects.get(pk=id)
+    except:
+        employe = rh.Employe.none()
+    c = {
+        'user':request.user,
+        'employe':employe,
+        }
+    return render_to_response('rh/perso.html', c, RequestContext(request))
+    
+# employes
+@login_required
+def employes_liste(request):
+    """Liste des employés."""
+    employes = rh.Employe.objects.all()
+    c = {
+        'user':request.user,
+        'employes':employes,
+        }
+    return render_to_response('rh/employes_liste.html', c, RequestContext(request))
+    
+@login_required
+def employe(request, id):
+    """Information publique sur un employé."""
+    try:
+        employe = rh.Employe.objects.get(pk=id)
+    except:
+        employe = rh.Employe.objects.none()
+    c = {
+        'user':request.user,
+        'employe':employe,
+        }
+    return render_to_response('rh/employe.html', c, RequestContext(request))
index a2985e8..8f46b73 100644 (file)
@@ -5,7 +5,7 @@ import socket
 from conf import *
 
 
-PROJET_TITRE = "SGRH"
+PROJET_TITRE = "Ressources humaines"
 
 # Rapports d'erreurs
 EMAIL_SUBJECT_PREFIX = '[auf_rh_dae - %s] ' % socket.gethostname()
@@ -88,7 +88,10 @@ TEMPLATE_CONTEXT_PROCESSORS = (
     'django.core.context_processors.request',
     'auf.django.skin.context_processors.auf',
     'project.context_processors.utilisateur',
+    'project.context_processors.this_employe',
     'project.context_processors.user_is_admin',
+    'dae.context_processors.user_in_dae_groupes',
+    'recrutement.context_processors.user_in_recrutement_groupes',
 )
 
 AUTHENTICATION_BACKENDS = (
diff --git a/project/templates/404.html b/project/templates/404.html
new file mode 100644 (file)
index 0000000..9653978
--- /dev/null
@@ -0,0 +1,12 @@
+{% extends 'base.html' %}
+
+{% block title %}RH - Erreur 404{% endblock %}
+{% block sous_titre %}Erreur 404{% endblock %}
+
+{% block main %}
+<h1 class="msgNegatif">Page non trouvée</h1>
+
+<p>
+La page demandée n'a pas été trouvée dans le système.
+</p>
+{% endblock %}
diff --git a/project/templates/500.html b/project/templates/500.html
new file mode 100644 (file)
index 0000000..09ea99e
--- /dev/null
@@ -0,0 +1,12 @@
+{% extends 'base.html' %}
+
+{% block title %}RH - Erreur 500{% endblock %}
+{% block sous_titre %}Erreur 500{% endblock %}
+
+{% block main %}
+<h1 class="msgNegatif">Erreur interne du système</h1>
+
+<p>
+Le système a rencontré une erreur interne et n'a pas pu traiter votre demande.
+</p>
+{% endblock %}
diff --git a/project/templates/550.html b/project/templates/550.html
new file mode 100644 (file)
index 0000000..a70bec5
--- /dev/null
@@ -0,0 +1,12 @@
+{% extends 'base.html' %}
+
+{% block title %}RH - Erreur 550{% endblock %}
+{% block sous_titre %}Erreur 550{% endblock %}
+
+{% block main %}
+<h1 class="msgNegatif">Permission non accordée</h1>
+
+<p>
+Vous n'avez pas les permissions nécessaires pour faire l'action demandée.
+</p>
+{% endblock %}
diff --git a/project/templates/actions.html b/project/templates/actions.html
new file mode 100644 (file)
index 0000000..7df2dad
--- /dev/null
@@ -0,0 +1,13 @@
+<ul>
+    {% if user.is_authenticated %}
+        {% if this_employe %}
+            <li class="username"><a href="{% url rh_perso this_employe.id %}">{{ this_employe }}</a></li>
+        {% else %}
+            <li class="username">{{ user }}</li>
+        {% endif %}
+        <li><a href="{% url admin:index %}">Administration</a></li>
+        <li><a href="{% url django.contrib.auth.views.logout %}?next=/">Déconnexion</a></li>
+    {% else %}
+        <li><a href="{% url django.contrib.auth.views.login %}?next={{request.path}}">Connexion</a></li>
+    {% endif %}
+</ul>
index d91ba4f..13e4ea2 100644 (file)
@@ -1,10 +1,14 @@
 {% load i18n %}
 <input type="text" name="{{name}}_text" id="{{html_id}}_text" value="" {{ extra_attrs }} />
 {% if add_link %}
-        <a href="{{ add_link }}" class="add-another" id="add_{{ html_id }}" onclick="return showAddAnotherPopup(this);"> <img src="{{ admin_media_prefix }}img/admin/icon_addlink.gif" width="10" height="10" alt="Add Another"></a>
+    <a href="{{ add_link }}" class="add-another" id="add_{{ html_id }}" onclick="return showAddAnotherPopup(this);">
+        <img src="{{ admin_media_prefix }}img/admin/icon_addlink.gif" width="10" height="10" alt="Add Another">
+    </a>
 {% endif %}
 {% block help %}{% endblock %}
-<div id="{{html_id}}_on_deck" class="results_on_deck"><div>{{current_result|safe}}</div></div>
+<div id="{{html_id}}_on_deck" class="results_on_deck">
+    <div>{{current_result|safe}}</div>
+</div>
 <input type="hidden" name="{{name}}" id="{{html_id}}" value="{{current_id}}" />
 <script type="text/javascript">
 jQuery(document).ready(function($){{% block script %}
index 893d13f..e2fa48d 100644 (file)
@@ -1,33 +1,48 @@
 {% extends 'base.html' %}
 
 {% block title %}RH{% endblock %}
-{% block titre %}Ressources humaines{% endblock %}
 {% block sous_titre %}Accueil{% endblock %}
 
 {% block main %}
-
 <h1>Ressources humaines</h1>
 
 <p>
 L'ensemble des applications RH sera regroupé dans ce système de gestion des ressources humaines (SGRH).
 </p>
 <p>
-Voici les modules actuellement disponibles :
+Voici les applications actuellement disponibles :
 </p>
 <ul>
-    <li><a href="{% url dae_index %}">Demande d'autorisation d'engagement (DAE)</a></li>
+    <li><a href="{% url rh_employes %}">Employés</a></li>
+    <li>
+    {% if user_in_dae_groupes %}
+        <a href="{% url dae_index %}">Demande d'autorisation d'engagement (DAE)</a>
+    {% else %}
+        Demande d'autorisation d'engagement (DAE)
+    {% endif %}
+    </li>
+    <li>
+    {% if user_in_recrutement_groupes %}
+        <a href="{% url index %}">Recrutement</a>
+    {% else %}
+        Recrutement
+    {% endif %}
+    </li>
 </ul>
+<p>
+L'accès aux applications est géré par des permissions d'accès.
+</p>
+
+<h1>Vos permissions d'accès</h1>
 
-<h1>Vos droits d'accès</h1>
-{% if request.user.is_authenticated %}
-<p>Vous faîtes partie des groupes suivants : </p>
+{% if user.groups.all %}
+<p>Vous faites partie des groupes suivants : </p>
 <ul>
-    {% for g in  request.user.groups.all %}
+    {% for g in request.user.groups.all %}
     <li>{{ g.name }}</li>
     {% endfor %}
 </ul>
+{% else %}
+    Vous n'avez aucune permission d'accès particulière.
 {% endif %}
-
-
 {% endblock %}
-
index a0ba2f0..0dd8848 100644 (file)
@@ -1,28 +1,40 @@
 {% load auf_menu dae %}
 
 <ul class="menu">
-  <li class="{% menu_actif request '^$' %}">
-    <a href="{% url index %}">Accueil</a>
-  </li>
-  <li class="{% menu_actif request '^dae$' %}">
-    <a href="{% url dae_index %}">DAE</a>
-    <ul>
+    <li class="{% menu_actif request '^$' %}">
+        <a href="{% url accueil %}">Accueil</a>
+    </li>
+{% if user.is_authenticated %}
+    <li class="{% menu_actif request '^employes$' %}">
+        <a href="{% url rh_employes %}">Employés</a>
+    </li>
+    {% if user_in_dae_groupes %}
+    <li class="{% menu_actif request '^dae$' %}">
+        <a href="{% url dae_index %}">DAE</a>
+        <ul>
         {% if request.user|peut_ajouter %}
         <li class="{% menu_actif request '^poste$' %}">
-          <a href="{% url poste %}">Poste : formulaire</a>
+            <a href="{% url poste %}">Poste : formulaire</a>
         </li>
         {% endif %}
         <li class="{% menu_actif request '^postes$' %}">
-          <a href="{% url dae_postes_liste %}">Postes : voir et valider</a>
+            <a href="{% url dae_postes_liste %}">Postes : voir et valider</a>
         </li>
         {% if request.user|peut_ajouter %}
         <li class="{% menu_actif request '^embauche$' %}">
-          <a href="{% url embauche %}">Embauche : formulaire</a>
+            <a href="{% url embauche %}">Embauche : formulaire</a>
         </li>
         {% endif %}
         <li class="{% menu_actif request '^embauches$' %}">
-          <a href="{% url dae_embauches_liste %}">Embauches : voir et valider</a>
+            <a href="{% url dae_embauches_liste %}">Embauches : voir et valider</a>
         </li>
-    </ul>
-  </li>
+        </ul>
+    </li>
+    {% endif %}
+    {% if user_in_recrutement_groupes %}
+    <li class="{% menu_actif request '^recrutement$' %}">
+        <a href="{% url index %}">Recrutement</a>
+    </li>
+    {% endif %}
+{% endif %}
 </ul>
index bdff2f5..43b6bb6 100644 (file)
@@ -10,20 +10,28 @@ handler500 # Pyflakes
 
 urlpatterns = patterns(
     '',
-    (r'^$', 'project.views.index'),
-    url(r'^captcha/', include('captcha.urls')),
-    url(r'^admin_tools/', include('admin_tools.urls')),
+    # système
+    url(r'^$', 'project.views.index', name='accueil'),
+
     (r'^admin/', include(admin.site.urls)),
     url(r'^api/(?P<method>[a-z_-]+)/$', 'recrutement.api.api', 
             name='recrutement_api'),
     (r'^connexion/$', 'django.contrib.auth.views.login'),
     (r'^deconnexion/$', 'django.contrib.auth.views.logout'),
+    #url(r'^private_files/', include('private_files.urls')),
+    url(r'^captcha/', include('captcha.urls')),
+    url(r'^admin_tools/', include('admin_tools.urls')),
+    (r'^tinymce/', include('tinymce.urls')),
+    (r'^prive/(?P<path>.*)$', 'django.views.static.serve', 
+        {'document_root': settings.PRIVE_MEDIA_ROOT}),
+    url(r'^404$', 'project.views.erreur404', name='404'),
+    url(r'^500$', 'project.views.erreur500', name='500'),
+    url(r'^550$', 'project.views.erreur550', name='550'),
+
+    # apps
     (r'^dae/', include('project.dae.urls')),
     (r'^recrutement/', include('recrutement.urls')),
-    (r'^tinymce/', include('tinymce.urls')),    
     (r'^', include('project.rh.urls')),
-    (r'^prive/(?P<path>.*)$', 'django.views.static.serve', 
-        {'document_root': sett.PRIVE_MEDIA_ROOT}),
 )
 
 if settings.DEBUG:
index c69b5a6..b14a92b 100644 (file)
@@ -1,8 +1,29 @@
 # -*- encoding: utf-8 -*-
+from django.contrib.auth.decorators import login_required
 from django.shortcuts import render_to_response
 from django.template import RequestContext
-from project.dae.decorators import dae_groupe_requis
 
-@dae_groupe_requis
+@login_required
 def index(request):
     return render_to_response('index.html', {}, RequestContext(request))
+
+def erreur404(request) :
+    c = {
+        'user':request.user,
+    }
+    return render_to_response('404.html', c,
+            context_instance = RequestContext(request))
+
+def erreur500(request) :
+    c = {
+        'user':request.user,
+    }
+    return render_to_response('500.html', c,
+            context_instance = RequestContext(request))
+            
+def erreur550(request) :
+    c = {
+        'user':request.user,
+    }
+    return render_to_response('550.html', c,
+            context_instance = RequestContext(request))