Merge branch 'olivier' into test
authorOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 29 Mar 2012 20:45:28 +0000 (16:45 -0400)
committerOlivier Larchevêque <olivier.larcheveque@auf.org>
Thu, 29 Mar 2012 20:45:28 +0000 (16:45 -0400)
1  2 
project/rh/views.py

diff --combined project/rh/views.py
@@@ -1,6 -1,5 +1,6 @@@
  # -*- encoding: utf-8 -*-
  
 +import urllib
  from datetime import date
  from itertools import izip
  
@@@ -8,13 -7,11 +8,13 @@@ import pygraphviz as pg
  
  from django.core.urlresolvers import reverse
  from django.db.models import Q
 -from django.contrib.auth.decorators import login_required
  from django.utils.encoding import smart_str
  from django.shortcuts import render_to_response, get_object_or_404
  from django.template import RequestContext
  from django.http import HttpResponse
 +from django import forms
 +from django.contrib.auth.decorators import login_required
 +from django.contrib.admin import widgets as adminwidgets
  
  from datamaster_modeles import models as ref
  
@@@ -24,7 -21,6 +24,7 @@@ from rh.decorators import drh_or_admin_
  from rh.templatetags.rapports import SortHeaders
  from rh.change_list import RechercheTemporelle
  from rh import graph as rh_graph
 +from rh.masse_salariale import MasseSalariale
  
  # pas de reference a DAE devrait etre refactorisé
  from dae.utils import get_employe_from_user
@@@ -199,70 -195,6 +199,70 @@@ def rapports_contrat(request)
  
  @login_required
  @drh_or_admin_required
 +def rapports_masse_salariale(request):
 +
 +    class RechercheTemporelle(forms.Form):
 +        CHOICE_ANNEES = range(
 +                rh.Remuneration.objects.exclude(date_debut=None) \
 +                        .order_by('date_debut')[0].date_debut.year
 +                , date.today().year + 1)
 +        CHOICE_ANNEES.append('')
 +
 +        #date_debut pour que le script javascript le mette dans le querystring
 +        date_debut = forms.CharField(widget=forms.Select(choices=
 +                    ((a, a) for a in reversed(CHOICE_ANNEES)
 +                    ))
 +                )
 +
 +        #date_debut = forms.DateField(widget=adminwidgets.AdminDateWidget)
 +        #date_fin = forms.DateField(widget=adminwidgets.AdminDateWidget)
 +
 +
 +    form = RechercheTemporelle(request.GET)
 +    get_filtre = [(k, v) for k,v in request.GET.items() \
 +            if k not in ('date_debut', 'date_fin', 'implantation', )]
 +    query_string = urllib.urlencode(get_filtre)
 +
 +    date_debut = None
 +    date_fin = None
 +    if request.GET.get('date_debut', None):
 +        date_debut = "01-01-%s" % request.GET.get('date_debut', None)
 +        date_fin = "31-12-%s" % request.GET.get('date_debut', None)
 +
 +    implantation = request.GET.get('dossier__poste__implantation')
 +    region = request.GET.get('dossier__poste__implantation__region')
 +
 +    custom_filter = {}
 +    if implantation:
 +        custom_filter['dossier__poste__implantation'] = implantation
 +    if region:
 +        custom_filter['dossier__poste__implantation__region'] = region
 +
 +    c = {
 +            'title': 'Rapport de masse salariale',
 +            'form': form,
 +            'headers': [],
 +            'query_string': query_string,
 +    }
 +    if date_debut or date_fin:
 +        masse = MasseSalariale(date_debut, date_fin, custom_filter,
 +                request.GET.get('ne_pas_grouper', False))
 +        if masse.rapport:
 +            c['rapport'] = masse.rapport
 +            headers = masse.headers
 +            c['header_keys'] = [h[0] for h in masse.headers]
 +            h = SortHeaders(request, headers, order_field_type="ot",
 +                    not_sortable=c['header_keys'], order_field="o")
 +            c['headers'] = list(h.headers())
 +            c['total'] = masse.grand_totaux[0]
 +            c['total_euro'] = masse.grand_totaux[1]
 +            c['colspan'] = len(c['header_keys']) - 2
 +
 +    return render_to_response('rh/rapports/masse_salariale.html', c, RequestContext(request))
 +
 +
 +@login_required
 +@drh_or_admin_required
  def rapports_remuneration(request):
  
      lookup_params = dict(request.GET.items())
@@@ -521,6 -453,7 +521,7 @@@ def employe_apercu(request, employe_id)
      dossiers = rh.Dossier.objects.filter(q).order_by('-date_debut')
  
      c = {
+         'title': u"Employe %s" % (employe, ),
          'is_popup' : request.GET.get('_popup', False),
          'employe' : employe,
          'dossiers' : dossiers,
@@@ -638,3 -571,4 +639,3 @@@ def organigrammes_region(request, id)
      }
  
      return render_to_response('rh/organigrammes/vide.html', c, RequestContext(request), mimetype="image/svg+xml")
 -