# -*- encoding: utf-8 -*
+
from django.conf.urls.defaults import patterns, url
-# Rapports
urlpatterns = patterns(
'project.rh.views',
url(r'^admin/rh/rapports/postes$', 'rapports_poste', name='rhr_postes'),
- url(r'^admin/rh/rapports/employes_sans_contrats$', 'rapports_employe_sans_contrat', name='rhr_employe_sans_contrat'),
- url(r'^admin/rh/rapports/contrats$', 'rapports_contrat', name='rhr_contrats'),
- url(r'^admin/rh/rapports/remuneration$', 'rapports_remuneration', name='rhr_remuneration'),
- url(r'^admin/rh/rapports/masse_salariale$', 'rapports_masse_salariale', name='rhr_masse_salariale'),
- url(r'^admin/rh/rapports/postes_par_service$', 'rapports_postes_service', name='rhr_postes_service'),
- url(r'^admin/rh/rapports/postes_par_implantation$', 'rapports_postes_implantation', name='rhr_postes_implantation'),
- url(r'^admin/rh/rapports/postes_modelisation$', 'rapports_postes_modelisation', name='rhr_postes_modelisation'),
- url(r'^admin/rh/dossier/(\d+)/apercu/$', 'dossier_apercu', name='dossier_apercu'),
- url(r'^admin/rh/employe/(\d+)/apercu/$', 'employe_apercu', name='employe_apercu'),
- url(r'^admin/rh/poste/(\d+)/apercu/$', 'poste_apercu', name='poste_apercu'),
- url(r'^admin/rh/organigrammes/employe/(\d+)/(\d+|all)$', 'organigrammes_employe', name='rho_employe'),
- url(r'^admin/rh/organigrammes/employe/(\d+)/$', 'organigrammes_employe', name='rho_employe_sans_niveau'), #pour mettre le paramètre level non obligatoire, faut la deuxième url
- url(r'^admin/rh/organigrammes/service/(\d+)$', 'organigrammes_service', name='rho_service'),
- url(r'^admin/rh/organigrammes/implantation/(\d+)$', 'organigrammes_implantation', name='rho_implantation'),
- url(r'^admin/rh/organigrammes/bureau/(\d+)$', 'organigrammes_region', name='rho_region'),
+ url(r'^admin/rh/rapports/employes_sans_contrats$',
+ 'rapports_employe_sans_contrat', name='rhr_employe_sans_contrat'),
+ url(r'^admin/rh/rapports/contrats$', 'rapports_contrat',
+ name='rhr_contrats'),
+ url(r'^admin/rh/rapports/remuneration$', 'rapports_remuneration',
+ name='rhr_remuneration'),
+ url(r'^admin/rh/rapports/masse_salariale$', 'rapports_masse_salariale',
+ name='rhr_masse_salariale'),
+ url(r'^admin/rh/rapports/postes_par_service$',
+ 'rapports_postes_service', name='rhr_postes_service'),
+ url(r'^admin/rh/rapports/postes_par_implantation$',
+ 'rapports_postes_implantation', name='rhr_postes_implantation'),
+ url(r'^admin/rh/rapports/postes_modelisation$',
+ 'rapports_postes_modelisation', name='rhr_postes_modelisation'),
+ url(r'^admin/rh/dossier/(\d+)/apercu/$', 'dossier_apercu',
+ name='dossier_apercu'),
+ url(r'^admin/rh/employe/(\d+)/apercu/$', 'employe_apercu',
+ name='employe_apercu'),
+ url(r'^admin/rh/poste/(\d+)/apercu/$', 'poste_apercu',
+ name='poste_apercu'),
+ url(r'^admin/rh/organigrammes/employe/(\d+)/(\d+|all)$',
+ 'organigrammes_employe', name='rho_employe'),
+ #pour mettre le paramètre level non obligatoire, faut la deuxième url
+ url(r'^admin/rh/organigrammes/employe/(\d+)/$', 'organigrammes_employe',
+ name='rho_employe_sans_niveau'),
+ url(r'^admin/rh/organigrammes/service/(\d+)$', 'organigrammes_service',
+ name='rho_service'),
+ url(r'^admin/rh/organigrammes/implantation/(\d+)$',
+ 'organigrammes_implantation', name='rho_implantation'),
+ url(r'^admin/rh/organigrammes/bureau/(\d+)$', 'organigrammes_region',
+ name='rho_region'),
)
import StringIO
import pygraphviz as pgv
-
+from datamaster_modeles import models as ref
from django.core.urlresolvers import reverse
from django.db.models import Q
from django.utils.encoding import smart_str
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 django.core.servers.basehttp import FileWrapper
-from datamaster_modeles import models as ref
-
from rh import models as rh
from rh.lib import calc_remun
from rh.decorators import drh_or_admin_required
if key == 'comble':
del lookup_params[key]
+ sort_order = 'ASC' if request.GET.get('ot') == 'asc' else 'DESC'
+
postes = rh.Poste.objects.select_related('implantation') \
- .extra(select={'employe_id':'select group_concat(employe separator "|") from rh_dossier where poste=rh_poste.id and rh_dossier.date_fin is null %s' % \
- ("%s" % (('order by employe %s' % ('asc' if 'ot' in request.GET and request.GET['ot'] == "asc" else "desc"))) if 'o' in request.GET and request.GET['o'] == "employe_id" else "") \
+ .extra(select={
+ 'employe_id':
+ 'SELECT GROUP_CONCAT(employe SEPARATOR "|") '
+ 'FROM rh_dossier '
+ 'WHERE poste = rh_poste.id '
+ 'AND rh_dossier.date_fin IS NULL ' + (
+ 'ORDER BY employe ' + sort_order
+ if request.GET.get('o') == 'employe_id' else ''
+ )
}) \
- .extra(select={'employe_nom':'select group_concat(rh_employe.nom separator "|") from rh_dossier inner join rh_employe on rh_dossier.employe = rh_employe.id where poste=rh_poste.id and rh_dossier.date_fin is null %s' % \
- ("%s" % (('order by rh_employe.nom %s' % ('asc' if 'ot' in request.GET and request.GET['ot'] == "asc" else "desc"))) if 'o' in request.GET and request.GET['o'] == "employe_nom" else "") \
+ .extra(select={
+ 'employe_nom':
+ 'SELECT GROUP_CONCAT(rh_employe.nom SEPARATOR "|") '
+ 'FROM rh_dossier INNER JOIN rh_employe '
+ 'ON rh_dossier.employe = rh_employe.id '
+ 'WHERE poste = rh_poste.id '
+ 'AND rh_dossier.date_fin IS NULL ' + (
+ 'ORDER BY rh_employe.nom ' + sort_order
+ if request.GET.get('o') == 'employe_nom' else ''
+ )
}) \
- .extra(select={'employe_prenom':'select group_concat(rh_employe.prenom separator "|") from rh_dossier inner join rh_employe on rh_dossier.employe = rh_employe.id where poste=rh_poste.id and rh_dossier.date_fin is null %s' % \
- ("%s" % (('order by rh_employe.prenom %s' % ('asc' if 'ot' in request.GET and request.GET['ot'] == "asc" else "desc"))) if 'o' in request.GET and request.GET['o'] == "employe_prenom" else "") \
+ .extra(select={
+ 'employe_prenom':
+ 'SELECT GROUP_CONCAT(rh_employe.prenom SEPARATOR "|") '
+ 'FROM rh_dossier INNER JOIN rh_employe '
+ 'ON rh_dossier.employe = rh_employe.id '
+ 'WHERE poste = rh_poste.id '
+ 'AND rh_dossier.date_fin IS NULL ' + (
+ 'ORDER BY rh_employe.prenom ' + sort_order
+ if request.GET.get('o') == 'employe_prenom' else ''
+ )
})
postes = postes.filter(**lookup_params)
if 'o' in request.GET:
- postes = postes.order_by("%s%s" % ('-' if 'ot' in request.GET and request.GET['ot'] == "desc" else '', request.GET['o']))
+ postes = postes.order_by(
+ ('-' if sort_order == "DESC" else '') + request.GET['o']
+ )
out = []
for p in postes:
'id': p.id,
'nom': p.nom,
'implantation': p.implantation,
- 'employes': [] if not p.employe_id else [{'id': id, 'nom': nom, 'prenom': prenom} for id, nom, prenom in izip(p.employe_id.split('|'), p.employe_nom.split('|'), p.employe_prenom.split('|'))] })
-
+ 'employes': [] if not p.employe_id else [
+ {'id': id, 'nom': nom, 'prenom': prenom}
+ for id, nom, prenom in izip(
+ p.employe_id.split('|'),
+ p.employe_nom.split('|'),
+ p.employe_prenom.split('|')
+ )
+ ]
+ })
headers = [
("id", u"# du poste"),
'headers': list(h.headers()),
}
- return render_to_response('rh/rapports/postes.html', c, RequestContext(request))
+ return render_to_response(
+ 'rh/rapports/postes.html', c, RequestContext(request)
+ )
+
@login_required
@drh_or_admin_required
del lookup_params[key]
lookup_params[smart_str(key)] = value
- contrats = rh.Contrat.objects.select_related('dossier', 'dossier__poste', 'dossier__poste__implantation', 'type_contrat', 'dossier__employe')
+ contrats = rh.Contrat.objects.select_related(
+ 'dossier', 'dossier__poste', 'dossier__poste__implantation',
+ 'type_contrat', 'dossier__employe'
+ )
cl = RechercheTemporelle(dict(request.GET.items()), rh.Contrat)
lookup_params = cl.purge_params(lookup_params)
contrats = contrats.filter(q).exclude(dossier__employe__supprime=1)
if 'o' in request.GET:
- contrats = contrats.order_by("%s%s" % ('-' if 'ot' in request.GET and request.GET['ot'] == "desc" else '', request.GET['o']))
+ contrats = contrats.order_by(
+ ('-' if request.GET.get('ot') == "desc" else '') + request.GET['o']
+ )
employes = set([c.dossier.employe_id for c in contrats])
h = SortHeaders(request, headers, order_field_type="ot", order_field="o")
c = {
- 'cl' : cl,
+ 'cl': cl,
'title': 'Rapport des contrats',
'contrats': contrats,
'count': len(contrats),
- 'count_employe' : len(employes),
+ 'count_employe': len(employes),
'headers': list(h.headers()),
}
- return render_to_response('rh/rapports/contrats.html', c, RequestContext(request))
+ return render_to_response(
+ 'rh/rapports/contrats.html', c, RequestContext(request)
+ )
@login_required
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)
-
- annee = forms.CharField(initial=date.today().year,
- widget=forms.Select(choices=
- ((a, a) for a in reversed(CHOICE_ANNEES)
- ))
+ rh.Remuneration.objects.exclude(date_debut=None)
+ .order_by('date_debut')[0].date_debut.year,
+ date.today().year + 1
+ )
+
+ annee = forms.CharField(
+ initial=date.today().year,
+ widget=forms.Select(
+ choices=((a, a) for a in reversed(CHOICE_ANNEES))
+ )
)
region = forms.CharField(
#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', )]
+ 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
request.GET.get('ne_pas_grouper', False))
if masse.rapport:
if request.GET.get('ods'):
- for h in (h for h in masse.headers if 'background-color' in h[2]):
+ for h in (
+ h for h in masse.headers if 'background-color' in h[2]
+ ):
del h[2]['background-color']
masse.ods()
output = StringIO.StringIO()
masse.doc.save(output)
output.seek(0)
- response = HttpResponse(FileWrapper(output), content_type=
- 'application/vnd.oasis.opendocument.spreadsheet')
+ response = HttpResponse(
+ FileWrapper(output),
+ content_type=(
+ 'application/vnd.oasis.opendocument.spreadsheet'
+ )
+ )
response['Content-Disposition'] = \
'attachment; filename=Masse Salariale %s.ods' % \
masse.annee
c['rapport'] = masse.rapport
c['header_keys'] = [h[0] for h in masse.headers]
#on enleve le background pour le header
- for h in (h for h in masse.headers if 'background-color' in h[2]):
+ for h in (
+ h for h in masse.headers if 'background-color' in h[2]
+ ):
h[2]['background'] = 'none'
h = SortHeaders(request, masse.headers, order_field_type="ot",
not_sortable=c['header_keys'], order_field="o")
c['url_ods'] = "%s?%s" % (
reverse('rhr_masse_salariale'), query_string)
- return render_to_response('rh/rapports/masse_salariale.html', c, RequestContext(request))
+ return render_to_response(
+ 'rh/rapports/masse_salariale.html', c, RequestContext(request)
+ )
@login_required
employes = rh.Employe.objects.all()
if 'o' in request.GET:
- employes = employes.order_by("%s%s" % ('-' if 'ot' in request.GET and request.GET['ot'] == "desc" else '', request.GET['o']))
+ employes = employes.order_by(
+ ('-' if request.GET.get('ot') == "desc" else '') + request.GET['o']
+ )
employes = employes.filter(**lookup_params)
remun_sum_euro = 0
for dossier in dossiers:
- this_remun, this_remun_sum, this_remun_sum_euro = calc_remun(dossier)
+ this_remun, this_remun_sum, this_remun_sum_euro = \
+ calc_remun(dossier)
for item in this_remun:
if item not in remun:
line['nom'] = employe.nom
line['prenom'] = employe.prenom
-
c = {
'title': 'Rapport de remuneration',
'employes': output,
'headers': list(h.headers()),
}
- return render_to_response('rh/rapports/remuneration.html', c, RequestContext(request))
+ return render_to_response(
+ 'rh/rapports/remuneration.html', c, RequestContext(request)
+ )
+
@login_required
@drh_or_admin_required
employes_query = rh.Employe.objects
if 'o' in request.GET:
- employes_query = employes_query.order_by("%s%s" % ('-' if 'ot' in request.GET and request.GET['ot'] == "desc" else '', request.GET['o']))
+ employes_query = employes_query.order_by(
+ ('-' if request.GET.get('ot') == "desc" else '') + request.GET['o']
+ )
employes = {}
- dossiers_en_cours = rh.Dossier.objects.filter(Q(date_fin=None) | Q(date_fin__gt=date.today()))
- tous_contrats_echus = rh.Contrat.objects.filter(date_fin__lt=date.today(), dossier__in=dossiers_en_cours)
+ dossiers_en_cours = rh.Dossier.objects.filter(
+ Q(date_fin=None) | Q(date_fin__gt=date.today())
+ )
+ tous_contrats_echus = rh.Contrat.objects.filter(
+ date_fin__lt=date.today(), dossier__in=dossiers_en_cours
+ )
contrats = tous_contrats_echus.filter(**lookup_params).all()
for c in contrats:
if c.dossier.employe.id not in employes.keys():
- employes[c.dossier.employe.id] = {'employe': c.dossier.employe, 'dossiers': []}
- employes[c.dossier.employe.id]['dossiers'] += [c.dossier,]
-
-
+ employes[c.dossier.employe.id] = {
+ 'employe': c.dossier.employe,
+ 'dossiers': []
+ }
+ employes[c.dossier.employe.id]['dossiers'] += [c.dossier]
headers = [
("id", u"# de l'employé"),
("prenom", u"Prénom"),
("dossier", u"Dossiers"),
]
- h = SortHeaders(request, headers, order_field_type="ot", order_field="o", not_sortable=('dossier',))
+ h = SortHeaders(
+ request, headers, order_field_type="ot", order_field="o",
+ not_sortable=('dossier',)
+ )
c = {
'title': u'Rapport des employés sans contrat',
'headers': list(h.headers()),
}
- return render_to_response('rh/rapports/employes_sans_contrat.html', c, RequestContext(request))
+ return render_to_response(
+ 'rh/rapports/employes_sans_contrat.html', c, RequestContext(request)
+ )
+
@login_required
@drh_or_admin_required
data.append({
'categorie': categorie,
'nb_types': types.count(),
- 'types' : data_types
- })
+ 'types': data_types
+ })
c['data'] = data
-
- return render_to_response('rh/rapports/postes_modelisation.html', c, RequestContext(request))
+ return render_to_response(
+ 'rh/rapports/postes_modelisation.html', c, RequestContext(request)
+ )
@login_required
c['data'] = data
-
- return render_to_response('rh/rapports/postes_implantation.html', c, RequestContext(request))
+ return render_to_response(
+ 'rh/rapports/postes_implantation.html', c, RequestContext(request)
+ )
@login_required
data.append({'service': s, 'num_postes': num_postes, 'postes': postes})
c['data'] = data
- return render_to_response('rh/rapports/postes_service.html', c, RequestContext(request))
+ return render_to_response(
+ 'rh/rapports/postes_service.html', c, RequestContext(request)
+ )
def region_protected(model):
return func(request, id)
if grp_correspondants_rh in user_groups:
employe = get_employe_from_user(request.user)
- q = Q(**{model.prefix_implantation: employe.implantation.region})
+ q = Q(**{
+ model.prefix_implantation: employe.implantation.region
+ })
qs = model.objects.filter(q)
if int(id) in [o.id for o in qs]:
return func(request, id)
d = get_object_or_404(rh.Dossier, pk=dossier_id)
c = {
'title': u"Dossier %s" % (d, ),
- 'is_popup' : request.GET.get('_popup', False),
- 'dossier' : d,
- 'pieces' : rh.DossierPiece.objects.filter(dossier__exact=d),
- 'contrats' : rh.Contrat.objects.filter(dossier__exact=d),
- 'commentaires' : rh.DossierCommentaire.objects.filter(dossier__exact=d).all(),
+ 'is_popup': request.GET.get('_popup', False),
+ 'dossier': d,
+ 'pieces': rh.DossierPiece.objects.filter(dossier__exact=d),
+ 'contrats': rh.Contrat.objects.filter(dossier__exact=d),
+ 'commentaires': rh.DossierCommentaire.objects.filter(dossier=d).all(),
'media_url': settings.PRIVE_MEDIA_URL,
}
- return render_to_response('admin/rh/dossier/apercu.html', c, RequestContext(request))
+ return render_to_response(
+ 'admin/rh/dossier/apercu.html', c, RequestContext(request)
+ )
+
@region_protected(rh.Poste)
def poste_apercu(request, poste_id):
p = get_object_or_404(rh.Poste, pk=poste_id)
c = {
'title': u"Poste %s" % (p, ),
- 'is_popup' : request.GET.get('_popup', False),
- 'poste' : p,
- 'financements' : rh.PosteFinancement.objects.filter(poste=poste_id).all(),
- 'pieces' : rh.PostePiece.objects.filter(poste=poste_id).all(),
- 'dossiers' : rh.Dossier.objects.filter(poste=poste_id).order_by("-date_debut").all(),
- 'comparaisons' : rh.PosteComparaison.objects.filter(poste=poste_id).all(),
- 'commentaires' : rh.PosteCommentaire.objects.filter(poste=poste_id).all(),
+ 'is_popup': request.GET.get('_popup', False),
+ 'poste': p,
+ 'financements': (
+ rh.PosteFinancement.objects.filter(poste=poste_id).all()
+ ),
+ 'pieces': rh.PostePiece.objects.filter(poste=poste_id).all(),
+ 'dossiers': (
+ rh.Dossier.objects.filter(poste=poste_id)
+ .order_by("-date_debut").all()
+ ),
+ 'comparaisons': (
+ rh.PosteComparaison.objects.filter(poste=poste_id).all()
+ ),
+ 'commentaires': (
+ rh.PosteCommentaire.objects.filter(poste=poste_id).all()
+ ),
'media_url': settings.PRIVE_MEDIA_URL,
}
- return render_to_response('admin/rh/poste/apercu.html', c, RequestContext(request))
+ return render_to_response(
+ 'admin/rh/poste/apercu.html', c, RequestContext(request)
+ )
+
def employe_apercu(request, employe_id):
employe = get_object_or_404(rh.Employe, pk=employe_id)
grp_drh in user_groups:
q = Q(employe=employe)
if grp_correspondants_rh in user_groups:
- regions = [d.poste.implantation.region for d in employe.rh_dossiers.all()]
+ regions = [
+ d.poste.implantation.region for d in employe.rh_dossiers.all()
+ ]
q = Q(employe=employe) & Q(implantation__region__in=regions)
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,
+ 'is_popup': request.GET.get('_popup', False),
+ 'employe': employe,
+ 'dossiers': dossiers,
'media_url': settings.PRIVE_MEDIA_URL,
}
- return render_to_response('admin/rh/employe/apercu.html', c, RequestContext(request))
+ return render_to_response(
+ 'admin/rh/employe/apercu.html', c, RequestContext(request)
+ )
+
@login_required
@drh_or_admin_required
def organigrammes_employe(request, id, level="all"):
poste = get_object_or_404(rh.Poste, pk=id)
- dossiers_by_poste = dict((d.poste_id, d) for d in rh.Dossier.objects.select_related('employe', 'poste').all())
+ dossiers_by_poste = dict(
+ (d.poste_id, d)
+ for d in rh.Dossier.objects.select_related('employe', 'poste').all()
+ )
postes_by_id = dict((p.id, p) for p in rh.Poste.objects.all())
e = dossiers_by_poste[poste.id].employe
if rh.Poste.objects.filter(responsable=poste).count() > 0:
postes_handle = [poste]
while postes_handle:
- postes_handle = rh.Poste.objects.select_related('implantation').filter((Q(date_fin__gt=date.today()) | Q(date_fin=None)) & (Q(date_debut__lt=date.today()) | Q(date_debut=None)) ).filter(responsable__in=postes_handle).exclude(supprime=True).exclude(responsable=None).all()
+ postes_handle = rh.Poste.objects.select_related('implantation') \
+ .filter(
+ Q(date_fin__gt=date.today()) | Q(date_fin=None),
+ Q(date_debut__lt=date.today()) | Q(date_debut=None),
+ responsable__in=postes_handle
+ ).exclude(supprime=True).exclude(responsable=None).all()
for p in postes_handle:
if p.responsable_id != p.id:
- graph.add_edge(dossiers_by_poste[p.responsable_id].poste_id, p.id)
+ graph.add_edge(
+ dossiers_by_poste[p.responsable_id].poste_id, p.id
+ )
else:
graph.add_node(poste.id)
if level != "all":
postes_niveau = [poste.id]
for niveau in range(int(level)):
- postes_niveau = [p.id for p in rh.Poste.objects.filter(responsable__in=postes_niveau).all()]
+ postes_niveau = [
+ p.id for p in
+ rh.Poste.objects.filter(responsable__in=postes_niveau).all()
+ ]
while postes_niveau:
- postes_niveau = [p.id for p in rh.Poste.objects.filter(responsable__in=postes_niveau).all()]
+ postes_niveau = [
+ p.id for p in
+ rh.Poste.objects.filter(responsable__in=postes_niveau).all()
+ ]
if postes_niveau:
for p in postes_niveau:
if graph.has_node(p):
if 'forcer' in request.GET:
response = HttpResponse(svg, mimetype='image/svg+xml')
- response['Content-Disposition'] = 'attachment; filename=organigramme.svg'
+ response['Content-Disposition'] = \
+ 'attachment; filename=organigramme.svg'
return response
- return render_to_response('rh/organigrammes/employe.html', c, RequestContext(request), mimetype="image/svg+xml")
+ return render_to_response(
+ 'rh/organigrammes/employe.html', c, RequestContext(request),
+ mimetype="image/svg+xml"
+ )
@login_required
'svg': svg
}
- return render_to_response('rh/organigrammes/vide.html', c, RequestContext(request), mimetype="image/svg+xml")
+ return render_to_response(
+ 'rh/organigrammes/vide.html', c, RequestContext(request),
+ mimetype="image/svg+xml"
+ )
+
@login_required
@drh_or_admin_required
'svg': svg
}
- return render_to_response('rh/organigrammes/vide.html', c, RequestContext(request), mimetype="image/svg+xml")
+ return render_to_response(
+ 'rh/organigrammes/vide.html', c, RequestContext(request),
+ mimetype="image/svg+xml"
+ )
+
@login_required
@drh_or_admin_required
'svg': svg
}
- return render_to_response('rh/organigrammes/vide.html', c, RequestContext(request), mimetype="image/svg+xml")
+ return render_to_response(
+ 'rh/organigrammes/vide.html', c, RequestContext(request),
+ mimetype="image/svg+xml"
+ )