[#3125] Recherche dans les embauches finalisées
authorEric Mc Sween <eric.mcsween@auf.org>
Fri, 18 May 2012 17:59:42 +0000 (13:59 -0400)
committerEric Mc Sween <eric.mcsween@auf.org>
Fri, 18 May 2012 17:59:42 +0000 (13:59 -0400)
project/dae/forms.py
project/dae/templates/dae/embauches_finalisees.html
project/dae/views.py

index 2252e17..dc3f884 100644 (file)
@@ -414,3 +414,17 @@ class DAENumeriseeForm(forms.ModelForm):
     class Meta:
         model = dae.Dossier
         fields = ('dae_numerisee',)
+
+
+class DAEFinaliseesSearchForm(forms.Form):
+    q = forms.CharField(
+        label='Recherche', required=False,
+        widget=forms.TextInput(attrs={'size': 40})
+    )
+    importees = forms.ChoiceField(
+        label='Importation', required=False, choices=(
+            ('', ''),
+            ('oui', 'DAE importées seulement'),
+            ('non', 'DAE non-importées seulement'),
+        )
+    )
index 3e819b5..32013dd 100644 (file)
 {% block main %}
 <h1>Liste des demandes d'autorisation d'engagement finalisées</h1>
 
+<form>
+  <table>
+    {{ search_form }}
+    <tr><td></td><td><input type="submit" value="Recherche"></td></tr>
+</form>
+
 <table class="listing tablesorter">
   <thead>
     <tr>
index 9822f54..bb40f29 100644 (file)
@@ -30,7 +30,7 @@ from project.dae.forms import \
         PosteComparaisonFormSet, DossierWorkflowForm, ChoosePosteForm, \
         EmployeForm, DossierForm, DossierPieceForm, \
         DossierComparaisonFormSet, RemunForm, ContratForm, DAENumeriseeForm, \
-        label_poste_display
+        label_poste_display, DAEFinaliseesSearchForm
 from project.dae.mail import send_drh_finalisation_mail
 from project.dae.workflow import \
         DOSSIER_ETAT_FINALISE, DOSSIER_ETAT_REGION_FINALISATION, \
@@ -476,6 +476,27 @@ def embauches_finalisees(request):
     embauches = dae.Dossier.objects.ma_region_ou_service(request.user) \
             .filter(etat=DOSSIER_ETAT_FINALISE)
 
+    # Recherche
+    search_form = DAEFinaliseesSearchForm(request.GET)
+    if search_form.is_valid():
+        q = search_form.cleaned_data.get('q').strip()
+        importees = search_form.cleaned_data.get('importees')
+        if q:
+            criteria = [
+                Q(poste__implantation__region__nom__icontains=word) |
+                Q(poste__implantation__region__code=word) |
+                Q(poste__implantation__nom__icontains=word) |
+                Q(poste__nom__icontains=word) |
+                Q(employe__nom__icontains=word) |
+                Q(employe__prenom__icontains=word)
+                for word in q.split()
+            ]
+            embauches = embauches.filter(*criteria)
+        if importees == 'oui':
+            embauches = embauches.exclude(dossier_rh=None)
+        elif importees == 'non':
+            embauches = embauches.filter(dossier_rh=None)
+
     # Tri
     tri = request.GET.get('tri', None)
     if tri and tri.startswith('-'):
@@ -507,7 +528,8 @@ def embauches_finalisees(request):
         page = paginator.page(1)
 
     return render_to_response('dae/embauches_finalisees.html', {
-        'embauches': page
+        'embauches': page,
+        'search_form': search_form
     }, RequestContext(request))