Merge branch 'master' into test test
authorEric Mc Sween <eric.mcsween@auf.org>
Wed, 9 Jan 2013 17:07:01 +0000 (12:07 -0500)
committerEric Mc Sween <eric.mcsween@auf.org>
Wed, 9 Jan 2013 17:07:01 +0000 (12:07 -0500)
Conflicts:
project/dae/views.py

1  2 
project/dae/views.py

diff --combined project/dae/views.py
@@@ -6,10 -6,9 +6,9 @@@ from auf.django.permissions.decorators 
  from django.contrib import messages
  from django.contrib.auth.decorators import login_required, user_passes_test
  from django.contrib.contenttypes.models import ContentType
- from django.core.exceptions import MultipleObjectsReturned
  from django.core.paginator import Paginator, InvalidPage
 -from django.db.models import Q
 +from django.db.models import Q, Count
- from django.http import Http404, HttpResponse, HttpResponseGone
+ from django.http import Http404, HttpResponse, HttpResponseNotFound
  from django.shortcuts import redirect, render, get_object_or_404
  from sendfile import sendfile
  from simplejson import dumps
@@@ -24,7 -23,8 +23,8 @@@ from project.dae.decorators import 
          dossier_est_modifiable, \
          poste_est_modifiable, get_contrat
  from project.dae.forms import FinancementFormSet, FinancementFormSetInitial
- from project.dae.forms import PosteComparaisonFormSet, PosteComparaisonFormSetInitial
+ from project.dae.forms import \
+         PosteComparaisonFormSet, PosteComparaisonFormSetInitial
  from project.dae.forms import \
          PosteWorkflowForm, PosteForm, PostePieceFormSet, \
          DossierWorkflowForm, ChoosePosteForm, \
@@@ -96,7 -96,6 +96,6 @@@ def poste_consulter(request, key)
      })
  
  
  @user_passes_test(lambda u: u.is_superuser)
  @drh_or_admin_required
  def poste_importer(request, id):
@@@ -129,10 -128,6 +128,10 @@@ def poste(request, key=None)
      il est automatiquement copié dans dae.
  
      """
 +    if 'creer_dossier_dae' in request.GET:
 +        creer_dossier_dae = True
 +    else:
 +        creer_dossier_dae = False
  
      def _dupliquer_poste(poste_dae, poste_rh):
          """
      # Type intervention
      if 'type_intervention' in request.GET:
          data['type_intervention'] = request.GET['type_intervention']
 +    if creer_dossier_dae:
 +        data['type_intervention'] = request.GET['creer_dossier_dae']
  
      # Poste existant
      poste_rh = None
      if not new:
          financements = []
          comparaisons = []
  
      if request.POST:
          data.update(dict(request.POST.items()))
          form = PosteForm(data, instance=poste, request=request)
          financementForm = FinancementForm(request.POST, instance=poste, )
-         piecesForm = PostePieceFormSet(request.POST, request.FILES, instance=poste, )
+         piecesForm = PostePieceFormSet(
+             request.POST, request.FILES, instance=poste
+         )
          comparaisons_formset = PosteComparaisonForm(
                  request.POST,
                  instance=poste,
                  request, messages.SUCCESS,
                  "Le poste %s a été sauvegardé." % poste
              )
 +            if creer_dossier_dae:
 +                return redirect('embauche', key='dae-%s' % poste.id)
 +
              if 'save' in request.POST:
                  return redirect('poste_consulter', key='dae-%s' % poste.id)
              else:
          piecesForm = PostePieceFormSet(instance=poste)
  
          if poste_rh is not None:
-             financementForm = FinancementForm(initial=financements, instance=poste)
+             financementForm = FinancementForm(
+                 initial=financements, instance=poste
+             )
              comparaisons_formset = PosteComparaisonForm(
                  initial=comparaisons,
                  instance=poste,
          financementForm=financementForm,
          comparaisons_formset=comparaisons_formset,
          poste_rh=poste_rh,
 +        creer_dossier_dae=creer_dossier_dae,
      ))
  
      return render(request, 'dae/poste.html', vars)
@@@ -280,12 -271,8 +281,12 @@@ def postes_liste(request)
          content_type.id
      )}
      postes_a_traiter = dae.Poste.objects.mes_choses_a_faire(request.user) \
 +            .annotate(num_dae=Count('dae_dossiers')) \
 +            .filter(num_dae=0) \
              .extra(select=extra_select).order_by('-id')
      postes_en_cours = dae.Poste.objects.ma_region_ou_service(request.user) \
 +            .annotate(num_dae=Count('dae_dossiers')) \
 +            .filter(num_dae=0) \
              .extra(select=extra_select) \
              .filter(~Q(etat=POSTE_ETAT_FINALISE)) \
              .order_by('-id')
@@@ -350,6 -337,7 +351,7 @@@ def embauche_consulter(request, dossier
          'importer': request.user.is_superuser,
      })
  
  @user_passes_test(lambda u: u.is_superuser)
  @dae_groupe_requis
  @dossier_dans_ma_region_ou_service
@@@ -370,14 -358,8 +372,14 @@@ def embauche_importer(request, dossier_
  
  @dae_groupe_requis
  def embauche_choisir_poste(request):
 +    if request.POST:
 +        form = ChoosePosteForm(data=request.POST, request=request)
 +        if form.is_valid():
 +            return form.redirect()
 +    else:
 +        form = ChoosePosteForm(request=request)
      c = {
 -        'form': ChoosePosteForm(request=request),
 +        'form': form,
      }
      return render(request, 'dae/embauche-choisir-poste.html', c)
  
@@@ -569,7 -551,10 +571,10 @@@ def embauches_finalisees(request)
          importees = search_form.cleaned_data.get('importees')
          if q:
              criteria = [
-                 Q(poste__implantation__zone_administrative__nom__icontains=word) |
+                 Q(**{
+                     'poste__implantation__zone_administrative__nom__icontains':
+                     word
+                 }) |
                  Q(poste__implantation__zone_administrative__code=word) |
                  Q(poste__implantation__nom__icontains=word) |
                  Q(poste__nom__icontains=word) |
@@@ -840,15 -825,18 +845,18 @@@ def pre_filled_dossier(dossier_rh, empl
  
      return dossier
  
  def _get_salaire_traitement(dossier):
      """
      Type de remun traitement derniers commencant a la meme date
      """
      data = {}
      # Toutes les rémunérations d'un dossier
-     remunerations = [r for r in dossier.remunerations().order_by('-date_debut') if \
-             r.type.nature_remuneration == "Traitement"]
-     
+     remunerations = [
+         r for r in dossier.remunerations().order_by('-date_debut')
+         if r.type.nature_remuneration == "Traitement"
+     ]
      # On prend les dernières avec le postulat que les rémun à la même date
      # constituent le dernier salaire
      if len(remunerations) > 0:
      data['montant_euros'] = montant_euros
      return data
  
  @dae_groupe_requis
  @vieux_dossier_dans_ma_region_ou_service
  def dossier_resume(request, dossier_id=None):
      try:
          dossier = rh.Dossier.objects.get(id=dossier_id)
      except:
-         return HttpResponseGone("Ce dossier n'est pas accessible")
-     
+         return HttpResponseNotFound("Ce dossier n'est pas accessible")
      data = {}
      data['personne'] = unicode(dossier.employe)
      if dossier.classement is not None:
@@@ -900,9 -889,8 +909,8 @@@ def poste_resume(request, dossier_id=No
      try:
          dossier = rh.Dossier.objects.get(id=dossier_id)
      except:
-         return HttpResponseGone("Ce dossier n'est pas accessible")
+         return HttpResponseNotFound("Ce dossier n'est pas accessible")
  
-     salaire = dossier.get_salaire()
      data = {}
      data['implantation'] = dossier.poste.implantation.id
      data['poste'] = dossier.poste.nom
@@@ -984,8 -972,13 +992,13 @@@ def devise(request)
              taux = rh.TauxChange.objects.get(
                  annee=annee, devise=valeur_point.devise
              )
-         except MultipleObjectsReturned:
-             return HttpResponseGone(
+         except rh.TauxChange.DoesNotExist:
+             return HttpResponseNotFound(
+                 u"Taux de change introuvable pour la devise %s "
+                 u"pour l'année %d" % (valeur_point.devise.code, annee)
+             )
+         except rh.TauxChange.MultipleObjectsReturned:
+             return HttpResponseNotFound(
                  u"Il existe plusieurs taux pour la devise %s "
                  u"cette année-là : %s" % (valeur_point.devise.code, annee)
              )
          data['devise_code'] = taux.devise.code
          data['taux_euro'] = taux.taux
      else:
-         return HttpResponseGone("Vous devez choisir une valeur de point")
+         return HttpResponseNotFound("Vous devez choisir une valeur de point")
      return HttpResponse(dumps(data))
  
  
@@@ -1013,7 -1006,7 +1026,7 @@@ def devise_code(request)
          annee = date.today().year
          taux = rh.TauxChange.objects.filter(annee=annee, devise=devise)
          if len(taux) == 0:
-             return HttpResponseGone("Le taux n'est pas disponible")
+             return HttpResponseNotFound("Le taux n'est pas disponible")
          data['devise_code'] = devise.code
          data['taux_euro'] = taux[0].taux
      return HttpResponse(dumps(data))