http://pypi.auf.org/simple/auf.django.emploi/
http://pypi.auf.org/django-alphafilter/
http://pypi.auf.org/simple/auf.django.references/
-
develop = src/qbe
src/auf.django.metadata
-
eggs =
django
south
django-ajax-selects
django-alphafilter
django-form-utils
+ django-picklefield
django-qbe
django-reversion
django-sendfile
auf.django.workflow
auf.recipe.django
odfpy
+ django-picklefield
pygraphviz
simplejson
recipe = auf.recipe.django
wsgi=true
settings=production
-extra-paths = project
eggs =${buildout:eggs}
--- /dev/null
+#content-main { width: auto; }
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="210mm"
+ height="297mm"
+ id="svg2"
+ version="1.1"
+ inkscape:version="0.47 r22583"
+ sodipodi:docname="Nouveau document 1">
+ <defs
+ id="defs4">
+ <inkscape:perspective
+ sodipodi:type="inkscape:persp3d"
+ inkscape:vp_x="0 : 526.18109 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_z="744.09448 : 526.18109 : 1"
+ inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+ id="perspective10" />
+ <inkscape:perspective
+ id="perspective2884"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ <inkscape:perspective
+ id="perspective2958"
+ inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
+ inkscape:vp_z="1 : 0.5 : 1"
+ inkscape:vp_y="0 : 1000 : 0"
+ inkscape:vp_x="0 : 0.5 : 1"
+ sodipodi:type="inkscape:persp3d" />
+ </defs>
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="0.66905966"
+ inkscape:cx="-147.14286"
+ inkscape:cy="518.0181"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1920"
+ inkscape:window-height="1005"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="1" />
+ <metadata
+ id="metadata7">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:label="Calque 1"
+ inkscape:groupmode="layer"
+ id="layer1">
+ <g
+ id="g2966"
+ inkscape:export-xdpi="111"
+ inkscape:export-ydpi="111">
+ <image
+ xlink:href="file:///net/nfs-authnss.b.ca.auf/home/davin.baragiotta/Desktop/user.png"
+ width="48"
+ height="48"
+ id="image2886"
+ x="-118.28571"
+ y="568.36218" />
+ <image
+ xlink:href="file:///net/nfs-authnss.b.ca.auf/home/davin.baragiotta/Desktop/bullet-magnify.png"
+ width="48"
+ height="48"
+ id="image2960"
+ x="-103.57162"
+ y="582.7973" />
+ </g>
+ </g>
+</svg>
'HOST': '',
'PORT': ''
},
- 'legacy': {
- 'ENGINE': 'django.db.backends.postgresql_psycopg2',
- 'NAME': 'auf',
- 'USER': 'datamaster',
- 'PASSWORD': '',
- 'HOST': 'db.auf',
- },
}
EMAIL_FROM = ''
+++ /dev/null
-# -*- 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)
-
-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)}
-
# -*- encoding: utf-8 -*-
-from auf.django.workflow.models import WorkflowCommentaire
from django import forms
from django.contrib import admin
+
from reversion.admin import VersionAdmin
+from auf.django.workflow.models import WorkflowCommentaire
+
from project.dae.models import Poste, Dossier
-class PosteAdmin(VersionAdmin):
+class BaseAdmin(admin.ModelAdmin):
+
+ class Media:
+ css = {'screen': ('css/admin_custom.css',)}
+
+
+class PosteAdmin(BaseAdmin, VersionAdmin):
list_display = ('nom', 'implantation', 'etat', )
-class DossierAdmin(VersionAdmin):
+class DossierAdmin(BaseAdmin, VersionAdmin):
list_display = ('_poste', '_implantation', 'employe', 'etat', )
list_filter = ('etat', )
exclude = ('etat', )
fields = ('etat', )
-class StatutAdmin(VersionAdmin):
+class StatutAdmin(BaseAdmin, VersionAdmin):
action = None
def has_delete_permission(self, request, obj=None):
# -*- encoding: utf-8 -*-
from django.db.models import Q
-from rh import models as rh
-from utils import get_employe_from_user, is_user_dans_services_centraux
-from workflow import grp_drh
+
+from project.groups import \
+ get_employe_from_user, is_user_dans_services_centraux
+from project.rh import models as rh
+
+from project.dae.workflow import grp_drh
+
class Responsable(object):
q = ""
- def get_query(self,q,request):
+
+ def get_query(self, q, request):
if len(q) < 4:
return rh.Poste.objects.none()
self.q = q
- postes = rh.Poste.objects.filter(
+ postes = rh.Poste.objects.filter(
Q(nom__icontains=q) |
Q(type_poste__nom__icontains=q) |
Q(rh_dossiers__employe__nom__icontains=q) |
def format_result(self, poste):
q = self.q
- filtre = Q(poste=poste) & (Q(poste__nom__icontains=q) | Q(employe__nom__icontains=q) | Q(employe__prenom__icontains=q))
+ filtre = Q(poste=poste) & (
+ Q(poste__nom__icontains=q) | Q(employe__nom__icontains=q) |
+ Q(employe__prenom__icontains=q)
+ )
dossiers = rh.Dossier.objects.filter(filtre)
-
+
nom_poste = poste.nom
-
+
if len(dossiers) == 1:
dossier = dossiers[0]
employe = dossier.employe
employe = unicode(dossiers[0].employe)
else:
employe = ""
- return "[%s] %s (%s) (%s)" % (poste.implantation.id, nom_poste, poste.id, employe)
+ return "[%s] %s (%s) (%s)" % (
+ poste.implantation.id, nom_poste, poste.id, employe
+ )
def format_item(self, poste):
- """ the display of a currently selected object in the area below the search box. html is OK """
+ """
+ the display of a currently selected object in the area below the
+ search box. html is OK
+ """
return self.format_result(poste)
def get_objects(self, ids):
- """ given a list of ids, return the objects ordered as you would like them on the admin page.
- this is for displaying the currently selected items (in the case of a ManyToMany field)
+ """
+ given a list of ids, return the objects ordered as you would like
+ them on the admin page. this is for displaying the currently
+ selected items (in the case of a ManyToMany field)
"""
return rh.Poste.objects.filter(pk__in=ids)
+
class Dossier(object):
- def get_query(self,q,request):
+ def get_query(self, q, request):
employe = get_employe_from_user(request.user)
prefixe_implantation = 'poste__implantation'
Q(employe__prenom__icontains=q)
if is_user_dans_services_centraux(request.user):
- q_place = Q(**{ '%s' % prefixe_implantation : employe.implantation })
+ q_place = Q(**{prefixe_implantation: employe.implantation})
else:
- q_place = Q(**{ '%s__region' % prefixe_implantation : employe.implantation.region })
-
+ q_place = Q(**{
+ prefixe_implantation + '__region': employe.implantation.region
+ })
if grp_drh in request.user.groups.all():
q_filtre = q_recherche
return dossier.__unicode__()
def format_item(self, dossier):
- """ the display of a currently selected object in the area below the search box. html is OK """
+ """
+ the display of a currently selected object in the area below the
+ search box. html is OK
+ """
return self.format_result(dossier)
def get_objects(self, ids):
- """ given a list of ids, return the objects ordered as you would like them on the admin page.
- this is for displaying the currently selected items (in the case of a ManyToMany field)
+ """
+ given a list of ids, return the objects ordered as you would like
+ them on the admin page. this is for displaying the currently
+ selected items (in the case of a ManyToMany field)
"""
return rh.Dossier.objects.filter(pk__in=ids)
+
class Poste(object):
- def get_query(self,q,request):
+ def get_query(self, q, request):
employe = get_employe_from_user(request.user)
prefixe_implantation = 'poste__implantation'
- q_recherche = Q(poste__nom__icontains=q) | Q(poste__type_poste__nom__icontains=q)
+ q_recherche = \
+ Q(poste__nom__icontains=q) | \
+ Q(poste__type_poste__nom__icontains=q)
if is_user_dans_services_centraux(request.user):
- q_place = Q(**{ '%s' % prefixe_implantation : employe.implantation })
+ q_place = Q(**{prefixe_implantation: employe.implantation})
else:
- q_place = Q(**{ '%s__region' % prefixe_implantation : employe.implantation.region })
-
+ q_place = Q(**{
+ prefixe_implantation + '__region': employe.implantation.region
+ })
if grp_drh in request.user.groups.all():
q_filtre = q_recherche
annee = dossier.date_debut.year
if dossier.date_fin is not None:
annee = dossier.date_fin.year
- return u"[%s] %s %s" % (dossier.poste.implantation, annee, dossier.poste.nom)
+ return u"[%s] %s %s" % (
+ dossier.poste.implantation, annee, dossier.poste.nom
+ )
def format_item(self, dossier):
- """ the display of a currently selected object in the area below the search box. html is OK """
+ """
+ the display of a currently selected object in the area below the
+ search box. html is OK
+ """
return self.format_result(dossier)
def get_objects(self, ids):
- """ given a list of ids, return the objects ordered as you would like them on the admin page.
- this is for displaying the currently selected items (in the case of a ManyToMany field)
+ """
+ given a list of ids, return the objects ordered as you would like
+ them on the admin page. this is for displaying the currently
+ selected items (in the case of a ManyToMany field)
"""
return rh.Dossier.objects.filter(pk__in=ids)
# -*- encoding: utf-8 -*-
-from dae.decorators import user_in_dae_groupes as in_dae_groupes
+
+from project.dae.decorators import user_in_dae_groupes as in_dae_groupes
# Ajout de variables accessibles dans les templates (pour tester permissions dans templates)
# -*- encoding: utf-8 -*-
-from django.db.models import Q
from django.contrib import messages
-from django.contrib.auth.decorators import user_passes_test
-from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.shortcuts import get_object_or_404
-from workflow import dae_groupes, ETATS_EDITABLE, ETATS_VALIDE, \
- grp_drh, grp_drh2
-from project.dae import models as dae
+
+from project.decorators import redirect_interdiction
from project.rh import models as rh
-from utils import get_employe_from_user
+
+from project.dae import models as dae
+from project.dae.groups import dae_groupes, grp_drh, grp_drh2
+from project.dae.workflow import ETATS_EDITABLE, ETATS_VALIDE
+
def user_in_dae_groupes(user):
"""
return True
return False
-def redirect_interdiction(request, msg=u"Vous n'avez pas accès à cette page"):
- """
- Redirection du la page de login avec un message d'erreur.
- """
- from django.conf import settings
- from django.contrib.auth import REDIRECT_FIELD_NAME
- from django.utils.http import urlquote
- login_url = settings.LOGIN_URL
- path = urlquote(request.get_full_path())
- tup = login_url, REDIRECT_FIELD_NAME, path
- messages.add_message(request, messages.ERROR, "Votre compte ne permet pas d'accéder à cette partie de l'application.")
- return HttpResponseRedirect('%s?%s=%s' % tup)
-
def dae_groupe_requis(fn):
"""
- L'accès à la plateforme nécessite d'appartenir au moins à un groupe,
- ou d'être superuser. De cette manière l'autentification AUF fonctionnera
- toujours, il suffit de mettre le nouvel employé dans le groupe qui le concerne.
+ L'accès à la plateforme nécessite d'appartenir au moins à un groupe, ou
+ d'être superuser. De cette manière l'autentification AUF fonctionnera
+ toujours, il suffit de mettre le nouvel employé dans le groupe qui le
+ concerne.
"""
def inner(request, *args, **kwargs):
user = request.user
if user.is_superuser or user_in_dae_groupes(user):
return fn(request, *args, **kwargs)
- else :
- msg = u"Votre compte ne permet pas d'accéder à cette partie de l'application."
+ else:
+ msg = u"Votre compte ne permet pas d'accéder à cette partie " \
+ u"de l'application."
return redirect_interdiction(request, msg)
return inner
+
def poste_dans_ma_region_ou_service(fn):
"""
- Test si le user connecté appartient bien à la même région ou service que le poste.
+ Test si le user connecté appartient bien à la même région ou service que
+ le poste.
"""
def inner(request, *args, **kwargs):
user = request.user
postes = Poste.objects.ma_region_ou_service(user).filter(id=id)
if len(postes) > 0:
return fn(request, *args, **kwargs)
- else :
+ else:
msg = u"Vous n'avez pas le droit de consulter ce poste."
return redirect_interdiction(request, msg)
return inner
+
def dossier_dans_ma_region_ou_service(fn):
"""
- Test si le user connecté appartient bien à la même région ou service que le poste.
+ Test si le user connecté appartient bien à la même région ou service que
+ le poste.
"""
def inner(request, *args, **kwargs):
user = request.user
poste_key = kwargs.get('key', None)
dossier_id = kwargs.get('dossier_id', None)
- # Si on s'intéresse à un dossier, on teste la validation avec le poste associé
+ # Si on s'intéresse à un dossier, on teste la validation avec le
+ # poste associé
if dossier_id is not None:
- dossiers = dae.Dossier.objects.ma_region_ou_service(user).filter(id=dossier_id)
+ dossiers = dae.Dossier.objects.ma_region_ou_service(user) \
+ .filter(id=dossier_id)
if len(dossiers) > 0:
return fn(request, *args, **kwargs)
- else :
- msg = u"Vous n'avez pas le droit de consulter ce dossier d'embauche."
+ else:
+ msg = u"Vous n'avez pas le droit de consulter " \
+ u"ce dossier d'embauche."
return redirect_interdiction(request, msg)
# Autoriser la création d'une nouvelle demande
return fn(request, *args, **kwargs)
# On est en train de répondre à un poste
else:
- return poste_dans_ma_region_ou_service(fn)(request, *args, **kwargs)
+ return poste_dans_ma_region_ou_service(fn)(
+ request, *args, **kwargs
+ )
return inner
+
def vieux_dossier_dans_ma_region_ou_service(fn):
"""
- Test si le user connecté appartient bien à la même région ou service que le poste.
+ Test si le user connecté appartient bien à la même région ou service que
+ le poste.
"""
def inner(request, *args, **kwargs):
user = request.user
dossier_id = kwargs.get('dossier_id', None)
- dossiers = rh.Dossier.objects.ma_region_ou_service(user).filter(id=dossier_id)
+ dossiers = rh.Dossier.objects.ma_region_ou_service(user) \
+ .filter(id=dossier_id)
if len(dossiers) > 0:
return fn(request, *args, **kwargs)
else:
- msg = u"Vous n'avez pas le droit de consulter ce dossier d'embauche."
+ msg = u"Vous n'avez pas le droit de consulter " \
+ u"ce dossier d'embauche."
return redirect_interdiction(request, msg)
-
return inner
+
def employe_dans_ma_region_ou_service(fn):
"""
Test d'accès à un employé
employe_key = kwargs.get('employe_key')
if employe_key in autorises:
return fn(request, *args, **kwargs)
- else :
+ else:
msg = u"Vous n'avez pas le droit de consulter cet employé."
return redirect_interdiction(request, msg)
return inner
+
def dossier_est_modifiable(fn):
def inner(request, *args, **kwargs):
dossier_id = kwargs.get('dossier_id', None)
dossier = dae.Dossier.objects.get(id=dossier_id)
if not (dossier.etat in ETATS_EDITABLE and
(grp_drh in user_groupes or grp_drh2 in user_groupes or
- dossier in dae.Dossier.objects.mes_choses_a_faire(request.user).all())):
+ dossier in dae.Dossier.objects \
+ .mes_choses_a_faire(request.user).all())):
msg = u"Ce dossier d'embauche ne peut plus être modifié."
return redirect_interdiction(request, msg)
return fn(request, *args, **kwargs)
return inner
+
def poste_est_modifiable(fn):
def inner(request, *args, **kwargs):
key = kwargs.get('key', None)
poste_id = key.split('-')[1]
poste = dae.Poste.objects.get(id=poste_id)
if grp_drh not in request.user.groups.all() and \
- (poste.etat not in ETATS_EDITABLE or poste not in dae.Poste.objects.mes_choses_a_faire(request.user).all()):
+ (poste.etat not in ETATS_EDITABLE \
+ or poste not in dae.Poste.objects \
+ .mes_choses_a_faire(request.user).all()):
msg = u"Ce poste ne peut plus être modifié."
return redirect_interdiction(request, msg)
return fn(request, *args, **kwargs)
return inner
+
def get_contrat(fn):
"""Ce décorateur s'attend à ce que le premier argument de la vue décorée
soit l'ID d'un contrat. Il vérifie les permissions, puis transforme
user_groupes = request.user.groups.all()
if not (dossier.etat in ETATS_VALIDE and
(grp_drh in user_groupes or grp_drh2 in user_groupes or
- dossier in dae.Dossier.objects.mes_choses_a_faire(request.user).all())):
+ dossier in dae.Dossier.objects \
+ .mes_choses_a_faire(request.user).all())):
return redirect_interdiction(request)
return fn(request, contrat, *args, **kwargs)
return inner
import datetime
-from auf.django.workflow.forms import WorkflowFormMixin
-from auf.django.references import models as ref
-from ajax_select.fields import AutoCompleteSelectField
from django import forms
from django.contrib.admin import widgets as admin_widgets
from django.db.models import Q, Max
from django.forms.models import inlineformset_factory, modelformset_factory
-from project.dae import models as dae
-from project.dae.utils import \
- get_employe_from_user, is_user_dans_services_centraux
+from ajax_select.fields import AutoCompleteSelectField
+
+from auf.django.references import models as ref
+from auf.django.workflow.forms import WorkflowFormMixin
+
from project.rh import models as rh
+from project.groups import \
+ get_employe_from_user, is_user_dans_services_centraux
+
+from project.dae import models as dae
from project.dae.workflow import \
grp_drh, POSTE_ETATS_BOUTONS, DOSSIER_ETAT_FINALISE, \
POSTE_ETAT_FINALISE
-
+
def _implantation_choices(obj, request):
# TRAITEMENT NORMAL
--- /dev/null
+# -*- encoding: utf-8 -*-
+
+from project.groups import \
+ grp_drh, grp_drh2, grp_administrateurs, grp_service_utilisateurs, \
+ grp_correspondants_rh, grp_directeurs_bureau, grp_accior, grp_abf, \
+ grp_haute_direction
+
+dae_groupes = (
+ grp_correspondants_rh,
+ grp_administrateurs,
+ grp_directeurs_bureau,
+ grp_drh,
+ grp_drh2,
+ grp_accior,
+ grp_abf,
+ grp_haute_direction,
+ grp_service_utilisateurs,
+)
# encoding: utf-8
+from django.conf import settings
from django.core.mail import send_mail
from django.core.urlresolvers import reverse
-from django.conf import settings
-from dae.workflow import grp_drh
+
+from project.dae.workflow import grp_drh
def send_drh_finalisation_mail(request, dossier):
# -*- encoding: utf-8 -*-
-from django.db import models
from django.db.models import Q
-from utils import get_employe_from_user
-from workflow import MAP_GROUPE_ETATS_A_FAIRE, DOSSIER_ETAT_FINALISE, \
- POSTE_ETAT_FINALISE
-from workflow import grp_drh, \
- grp_drh2, \
- grp_accior, \
- grp_abf, \
- grp_haute_direction, \
- grp_service_utilisateurs
-
-from rh.managers import DossierManager as RHDossierManager
-from rh.managers import PosteManager as RHPosteManager
-from rh.managers import PosteComparaisonManager as RHPosteComparaisonManager
-from rh.managers import DossierComparaisonManager as RHDossierComparaisonManager
+
+from project.groups import get_employe_from_user
+from project.rh.managers import \
+ DossierManager as RHDossierManager, \
+ PosteManager as RHPosteManager, \
+ PosteComparaisonManager as RHPosteComparaisonManager, \
+ DossierComparaisonManager as RHDossierComparaisonManager
+
+from project.dae.workflow import MAP_GROUPE_ETATS_A_FAIRE
+from project.dae.workflow import \
+ grp_drh, grp_drh2, grp_accior, \
+ grp_abf, grp_haute_direction, grp_service_utilisateurs
class TodoManagerMixin(object):
q2 = Q(etat=etat)
if g == grp_service_utilisateurs:
q2 &= Q(**{self.prefixe_service: employe.service})
- elif g not in (grp_accior, grp_abf, grp_haute_direction, grp_drh, grp_drh2):
- q2 &= Q(**{self.prefixe_implantation: employe.implantation.region})
+ elif g not in (
+ grp_accior, grp_abf, grp_haute_direction, grp_drh, grp_drh2
+ ):
+ q2 &= Q(**{
+ self.prefixe_implantation: employe.implantation.region
+ })
q |= q2
if rien_a_faire:
return qs
+
class DossierManager(RHDossierManager, TodoManagerMixin):
pass
+
class PosteManager(RHPosteManager, TodoManagerMixin):
pass
+
class PosteComparaisonManager(RHPosteComparaisonManager, TodoManagerMixin):
pass
+
class DossierComparaisonManager(RHDossierComparaisonManager, TodoManagerMixin):
pass
import os
from datetime import date, timedelta
-import reversion
-from auf.django.metadata.models import AUFMetadata
from django.conf import settings
from django.core.files.storage import FileSystemStorage
from django.db import models
from django.db.models import Q
+import reversion
+
+from auf.django.metadata.models import AUFMetadata
+
from project.dae.managers import PosteManager, DossierManager
from project.dae.workflow import PosteWorkflow, DossierWorkflow
from project.dae.workflow import \
DOSSIER_ETAT_DRH_FINALISATION, DOSSIER_ETAT_REGION_FINALISATION, \
DOSSIER_ETAT_FINALISE
-
-# XXX: Saloperie, il faut importer rh.models à partir d'un autre namespace
-# à cause du hack app_context() dans project.rh.models. Très fragile. Il
-# faut régler ça aussi vite que possible.
-from rh import models as rh
-from rh.models import HELP_TEXT_DATE
+from project.rh import models as rh
+from project.rh.models import HELP_TEXT_DATE
# Upload de fichiers
UPLOAD_STORAGE = FileSystemStorage(settings.PRIVE_MEDIA_ROOT)
class PosteFinancement(rh.PosteFinancement_):
- pass
+ poste = models.ForeignKey(
+ Poste, db_column='poste', related_name='dae_financements'
+ )
class PostePiece(rh.PostePiece_):
- pass
+ poste = models.ForeignKey(
+ Poste, db_column='poste', related_name='dae_pieces'
+ )
class PosteComparaison(rh.PosteComparaison_):
+ poste = models.ForeignKey(
+ Poste, related_name='dae_comparaisons_internes'
+ )
statut = models.ForeignKey(
rh.Statut, related_name='+', verbose_name=u'Statut', null=True,
blank=True
class Dossier(DossierWorkflow, rh.Dossier_):
poste = models.ForeignKey(
- 'Poste', db_column='poste', related_name='%(app_label)s_dossiers'
+ 'Poste', db_column='poste', related_name='dae_dossiers'
)
employe = models.ForeignKey(
'Employe', db_column='employe',
- related_name='%(app_label)s_dossiers', verbose_name=u"Employé"
+ related_name='rh_dossiers', verbose_name=u"Employé"
)
organisme_bstg_autre = models.CharField(max_length=255,
verbose_name=u"Autre organisme",
class DossierPiece(rh.DossierPiece_):
- """Documents relatifs au Dossier (à l'occupation de ce poste par employé).
+ """
+ Documents relatifs au Dossier (à l'occupation de ce poste par employé).
Ex.: Lettre de motivation.
"""
- pass
+ dossier = models.ForeignKey(
+ Dossier, db_column='dossier', related_name='dae_dossierpieces'
+ )
class DossierComparaison(rh.DossierComparaison_):
"""
Photo d'une comparaison salariale au moment de l'embauche.
"""
+ dossier = models.ForeignKey(
+ Dossier, related_name='dae_comparaisons'
+ )
statut = models.ForeignKey(
rh.Statut, related_name='+', verbose_name='Statut', null=True,
blank=True
### RÉMUNÉRATION
class Remuneration(rh.Remuneration_):
- pass
+ dossier = models.ForeignKey(
+ Dossier, db_column='dossier', related_name='dae_remunerations'
+ )
### CONTRATS
class Contrat(rh.Contrat_):
- pass
+ dossier = models.ForeignKey(
+ Dossier, db_column='dossier', related_name='dae_contrats'
+ )
from auf.django.permissions import allow
-import dae.models as dae
-from dae.workflow import grp_drh, grp_drh2, grp_haute_direction
-from dae.decorators import user_in_dae_groupes
+from project.dae.decorators import user_in_dae_groupes
+from project.dae.groups import grp_drh, grp_drh2, grp_haute_direction
+import project.dae.models as dae
+
def user_in_group(*groups):
def test(user, obj):
import os
from django import template
+
+from project.groups import grp_correspondants_rh, grp_administrateurs, grp_drh
+
from project.dae.workflow import ETATS_EDITABLE
-from project.rh.groups import grp_correspondants_rh, grp_administrateurs, grp_drh
+
register = template.Library()
# -*- encoding: utf-8 -*
+
from django.conf.urls.defaults import patterns, url
urlpatterns = patterns(
+++ /dev/null
-# -*- encoding: utf-8 -*-
-
-import auf.django.references.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
-
-def is_user_dans_services_centraux(user):
- employe = get_employe_from_user(user)
- if employe.id == 12: # monique chéry gère les DAE des amériques
- return False
- return employe.implantation_id in (15, 19)
-
-def is_user_dans_region(user):
- employe = get_employe_from_user(user)
- return not is_user_dans_services_centraux(user)
-
-
from datetime import date
from simplejson import dumps
-from auf.django.permissions.decorators import get_object
from django.contrib import messages
from django.contrib.auth.decorators import login_required
from django.contrib.contenttypes.models import ContentType
from django.core.paginator import Paginator, InvalidPage
from django.db.models import Q
from django.http import Http404, HttpResponse, HttpResponseGone
-from django.shortcuts import redirect, render_to_response, get_object_or_404
-from django.template import RequestContext
+from django.shortcuts import redirect, render, get_object_or_404
+
from sendfile import sendfile
+from auf.django.permissions.decorators import get_object
+
+from project.decorators import redirect_interdiction
+
from project.dae import models as dae
from project.dae.decorators import \
- redirect_interdiction, dae_groupe_requis, \
+ dae_groupe_requis, \
poste_dans_ma_region_ou_service, \
dossier_dans_ma_region_ou_service, \
vieux_dossier_dans_ma_region_ou_service, \
@dae_groupe_requis
def index(request):
- return render_to_response('dae/index.html', {}, RequestContext(request))
+ return render(request, 'dae/index.html', {})
### POSTE
'comparaisons_internes': comparaisons_internes
}
- return render_to_response(
- 'dae/poste_consulter.html', vars, RequestContext(request)
- )
+ return render(request, 'dae/poste_consulter.html', vars)
def poste_importer(request, id):
else:
return redirect('poste_consulter', 'dae-' + id)
else:
- return render_to_response('dae/poste_importer.html', {
- 'poste': poste_dae
- }, RequestContext(request))
+ c = {
+ 'poste': poste_dae,
+ }
+ return render(request, 'dae/poste_importer.html', c)
@dae_groupe_requis
comparaisons_formset=comparaisons_formset
))
- return render_to_response('dae/poste.html', vars, RequestContext(request))
+ return render(request, 'dae/poste.html', vars)
@dae_groupe_requis
.extra(select=extra_select) \
.filter(~Q(etat=POSTE_ETAT_FINALISE)) \
.order_by('-date_creation')
- return render_to_response('dae/postes_liste.html', {
+ c = {
'postes_a_traiter': postes_a_traiter,
'postes_en_cours': postes_en_cours,
- }, RequestContext(request))
+ }
+ return render(request, 'dae/postes_liste.html', c)
@login_required
'comparaisons_internes': comparaisons_internes,
'comparaisons': comparaisons
}
-
- return render_to_response(
- 'dae/embauche_consulter.html', vars, RequestContext(request)
- )
+ return render(request, 'dae/embauche_consulter.html', vars)
@dae_groupe_requis
else:
return redirect('embauches_finalisees')
else:
- return render_to_response('dae/embauche_importer.html', {
- 'dossier': dossier_dae
- }, RequestContext(request))
+ c = {
+ 'dossier': dossier_dae,
+ }
+ return render(request, 'dae/embauche_importer.html', c)
@dae_groupe_requis
def embauche_choisir_poste(request):
- return render_to_response('dae/embauche-choisir-poste.html', {
- 'form': ChoosePosteForm(request=request)
- }, RequestContext(request))
+ c = {
+ 'form': ChoosePosteForm(request=request),
+ }
+ return render(request, 'dae/embauche-choisir-poste.html', c)
@dae_groupe_requis
)
except dae.Poste.DoesNotExist:
comparaisons_internes = []
-
- return render_to_response('dae/embauche.html', {
+ c = {
'type_remun': filtered_type_remun(),
'devises': devises(),
'poste': poste,
'remunForm': remunForm,
'comparaisons_formset': comparaisons_formset,
'forms': dict(employe=employe_form, dossier=dossier_form, ),
- 'comparaisons_internes': comparaisons_internes
- }, RequestContext(request))
+ 'comparaisons_internes': comparaisons_internes,
+ }
+ return render(request, 'dae/embauche.html', c)
@dae_groupe_requis
.extra(select=extra_select) \
.order_by('-date_creation') \
.exclude(etat=DOSSIER_ETAT_FINALISE)
- return render_to_response('dae/embauches_liste.html', {
+ c = {
'embauches_a_traiter': embauches_a_traiter,
'embauches_en_cours': embauches_en_cours,
- }, RequestContext(request))
+ }
+ return render(request, 'dae/embauches_liste.html', c)
@dae_groupe_requis
page = paginator.page(request.GET.get('page', 1))
except InvalidPage:
page = paginator.page(1)
-
- return render_to_response('dae/embauches_finalisees.html', {
+
+ c = {
'embauches': page,
- 'search_form': search_form
- }, RequestContext(request))
+ 'search_form': search_form,
+ }
+ return render(request, 'dae/embauches_finalisees.html', c)
def employe(request, key):
if 'oui' in request.POST:
contrat.delete()
return redirect('embauche_consulter', dossier_id=contrat.dossier.id)
- return render_to_response('dae/contrat-supprimer.html', {
- 'contrat': contrat
- }, RequestContext(request))
+ c = {
+ 'contrat': contrat,
+ }
+ return render(request, 'dae/contrat-supprimer.html', c)
@dae_groupe_requis
return redirect('embauche_consulter', dossier_id=dossier.id)
else:
form = ContratForm()
- return render_to_response('dae/embauche-ajouter-contrat.html', {
- 'form': form
- }, RequestContext(request))
+
+ c = {
+ 'form': form,
+ }
+ return render(request, 'dae/embauche-ajouter-contrat.html', c)
### DAE NUMERISEE
return redirect('embauche_consulter', dossier_id=dossier.id)
else:
form = DAENumeriseeForm(instance=dossier)
- return render_to_response('dae/dae_numerisee_modifier.html', {
- 'form': form
- }, RequestContext(request))
+
+ c = {
+ 'form': form,
+ }
+ return render(request, 'dae/dae_numerisee_modifier.html', c)
@get_object(dae.Dossier, 'modifier_dae_numerisee')
dossier.dae_numerisee = None
dossier.save()
return redirect('embauche_consulter', dossier_id=dossier.id)
- return render_to_response(
- 'dae/dae_numerisee_supprimer.html', {}, RequestContext(request)
- )
+ return render(request, 'dae/dae_numerisee_supprimer.html', {})
# AJAX SECURISE
dossier_form = DossierForm(initial=data, instance=dossier)
vars = dict(form=dossier_form, poste=poste, employe=employe)
- return render_to_response('dae/embauche-dossier.html', vars,
- RequestContext(request))
+ return render(request, 'dae/embauche-dossier.html', vars)
# Cette fonction est appelée à partir de fonctions déjà sécurisée
dae.Remuneration(dossier=dossier, devise=dossier.devise,
type=type_remun).save()
- return render_to_response('dae/embauche-remun.html', dict(dossier=dossier),
- RequestContext(request))
+ c = {
+ 'dossier': dossier,
+ }
+ return render(request, 'dae/embauche-remun.html', c)
def salaire(request, implantation, devise, classement):
# -*- encoding: utf-8 -*-
-from django.contrib.auth.models import Group
from auf.django.workflow.models import WorkflowMixin
-from utils import is_user_dans_services_centraux, is_user_dans_region
-from rh.groups import *
+
+from project.groups import \
+ grp_drh, grp_drh2, grp_administrateurs, grp_service_utilisateurs, \
+ grp_correspondants_rh, grp_directeurs_bureau, grp_accior, grp_abf, \
+ grp_haute_direction
+from project.groups import \
+ is_user_dans_services_centraux, is_user_dans_region
# codes états
POSTE_ETAT_BROUILLON = 'BROUILLON'
#libellés états
POSTE_ETATS = {
- POSTE_ETAT_BROUILLON : u"En rédaction",
- POSTE_ETAT_ADMINISTRATEUR : u"Validation de l'administrateur",
- POSTE_ETAT_DIRECTEUR_BUREAU : u"Directeur de bureau",
- POSTE_ETAT_SERVICE_UTILISATEURS : u"Service utilisateurs",
- POSTE_ETAT_DRH_CONTROLE : u"Validation DRH",
- POSTE_ETAT_DRH_2 : u"Validation DRH 2",
- POSTE_ETAT_DEMANDE_MODIF : u"Demande de modification",
- POSTE_ETAT_ACCIOR : u"ACCIOR",
- POSTE_ETAT_ABF : u"ABF",
- POSTE_ETAT_HAUTE_DIRECTION : u"Validation : Secrétaire général / Recteur",
- POSTE_ETAT_DEMANDE_JUSTIF : u"Demande de justification",
- POSTE_ETAT_REGION_FINALISATION : u'Retour à la région',
- POSTE_ETAT_DRH_FINALISATION : u'Retour à la DRH',
- POSTE_ETAT_FINALISE : u'Finalisée'
+ POSTE_ETAT_BROUILLON: u"En rédaction",
+ POSTE_ETAT_ADMINISTRATEUR: u"Validation de l'administrateur",
+ POSTE_ETAT_DIRECTEUR_BUREAU: u"Directeur de bureau",
+ POSTE_ETAT_SERVICE_UTILISATEURS: u"Service utilisateurs",
+ POSTE_ETAT_DRH_CONTROLE: u"Validation DRH",
+ POSTE_ETAT_DRH_2: u"Validation DRH 2",
+ POSTE_ETAT_DEMANDE_MODIF: u"Demande de modification",
+ POSTE_ETAT_ACCIOR: u"ACCIOR",
+ POSTE_ETAT_ABF: u"ABF",
+ POSTE_ETAT_HAUTE_DIRECTION: u"Validation : Secrétaire général / Recteur",
+ POSTE_ETAT_DEMANDE_JUSTIF: u"Demande de justification",
+ POSTE_ETAT_REGION_FINALISATION: u'Retour à la région',
+ POSTE_ETAT_DRH_FINALISATION: u'Retour à la DRH',
+ POSTE_ETAT_FINALISE: u'Finalisée'
}
#libellés états pour boutons
POSTE_ETATS_BOUTONS = {
- POSTE_ETAT_DIRECTEUR_BUREAU : u"Envoyer au directeur de bureau",
- POSTE_ETAT_SERVICE_UTILISATEURS : u"Envoyer au service utilisateurs",
- POSTE_ETAT_ADMINISTRATEUR : u"Envoyer à l'adminstrateur",
- POSTE_ETAT_DRH_CONTROLE : u"Envoyer à la DRH (validation)",
- POSTE_ETAT_DRH_2 : u"Envoyer à DRH 2",
- POSTE_ETAT_DEMANDE_MODIF : u"Envoyer une demande de modification",
- POSTE_ETAT_ACCIOR : u"Envoyer à l'ACCIOR",
- POSTE_ETAT_ABF : u"Envoyer à l'ABF",
- POSTE_ETAT_HAUTE_DIRECTION : u"Envoyer à la haute direction",
- POSTE_ETAT_DEMANDE_JUSTIF : u"Envoyer une demande de justification",
- POSTE_ETAT_REGION_FINALISATION : u"Retourner à la région pour finalisation",
- POSTE_ETAT_DRH_FINALISATION : u'Retourner à la DRH pour finalisation',
- POSTE_ETAT_FINALISE : u'Finaliser'
+ POSTE_ETAT_DIRECTEUR_BUREAU: u"Envoyer au directeur de bureau",
+ POSTE_ETAT_SERVICE_UTILISATEURS: u"Envoyer au service utilisateurs",
+ POSTE_ETAT_ADMINISTRATEUR: u"Envoyer à l'adminstrateur",
+ POSTE_ETAT_DRH_CONTROLE: u"Envoyer à la DRH (validation)",
+ POSTE_ETAT_DRH_2: u"Envoyer à DRH 2",
+ POSTE_ETAT_DEMANDE_MODIF: u"Envoyer une demande de modification",
+ POSTE_ETAT_ACCIOR: u"Envoyer à l'ACCIOR",
+ POSTE_ETAT_ABF: u"Envoyer à l'ABF",
+ POSTE_ETAT_HAUTE_DIRECTION: u"Envoyer à la haute direction",
+ POSTE_ETAT_DEMANDE_JUSTIF: u"Envoyer une demande de justification",
+ POSTE_ETAT_REGION_FINALISATION: u"Retourner à la région pour finalisation",
+ POSTE_ETAT_DRH_FINALISATION: u'Retourner à la DRH pour finalisation',
+ POSTE_ETAT_FINALISE: u'Finaliser'
}
# définition du worflow séquentiel
POSTE_ACTIONS = {
- POSTE_ACTION_ENVOYER_BROUILLON : {
- 'nom' : u'Créer',
- 'etat_initial' : None,
- 'etat_final' : POSTE_ETAT_BROUILLON,
+ POSTE_ACTION_ENVOYER_BROUILLON: {
+ 'nom': u'Créer',
+ 'etat_initial': None,
+ 'etat_final': POSTE_ETAT_BROUILLON,
},
- POSTE_ACTION_ENVOYER_ADMINISTRATEUR : {
- 'nom' : u'Envoyer',
- 'etat_initial' : (POSTE_ETAT_BROUILLON,),
- 'etat_final' : POSTE_ETAT_ADMINISTRATEUR,
+ POSTE_ACTION_ENVOYER_ADMINISTRATEUR: {
+ 'nom': u'Envoyer',
+ 'etat_initial': (POSTE_ETAT_BROUILLON,),
+ 'etat_final': POSTE_ETAT_ADMINISTRATEUR,
},
- POSTE_ACTION_ENVOYER_SRV_UTILISATEURS : {
- 'nom' : u'Envoyer',
- 'etat_initial' : (POSTE_ETAT_ADMINISTRATEUR,),
- 'etat_final' : POSTE_ETAT_SERVICE_UTILISATEURS,
+ POSTE_ACTION_ENVOYER_SRV_UTILISATEURS: {
+ 'nom': u'Envoyer',
+ 'etat_initial': (POSTE_ETAT_ADMINISTRATEUR,),
+ 'etat_final': POSTE_ETAT_SERVICE_UTILISATEURS,
},
- POSTE_ACTION_ENVOYER_DIRECTEUR_BUREAU : {
- 'nom' : u'Envoyer',
- 'etat_initial' : (POSTE_ETAT_ADMINISTRATEUR,),
- 'etat_final' : POSTE_ETAT_DIRECTEUR_BUREAU,
+ POSTE_ACTION_ENVOYER_DIRECTEUR_BUREAU: {
+ 'nom': u'Envoyer',
+ 'etat_initial': (POSTE_ETAT_ADMINISTRATEUR,),
+ 'etat_final': POSTE_ETAT_DIRECTEUR_BUREAU,
},
- POSTE_ACTION_ENVOYER_DRH_CONTROLE : {
- 'nom' : u'Envoyer',
- 'etat_initial' : (POSTE_ETAT_ADMINISTRATEUR, POSTE_ETAT_DIRECTEUR_BUREAU, POSTE_ETAT_SERVICE_UTILISATEURS),
- 'etat_final' : POSTE_ETAT_DRH_CONTROLE,
+ POSTE_ACTION_ENVOYER_DRH_CONTROLE: {
+ 'nom': u'Envoyer',
+ 'etat_initial': (
+ POSTE_ETAT_ADMINISTRATEUR, POSTE_ETAT_DIRECTEUR_BUREAU,
+ POSTE_ETAT_SERVICE_UTILISATEURS
+ ),
+ 'etat_final': POSTE_ETAT_DRH_CONTROLE,
},
- POSTE_ACTION_ENVOYER_DRH_2 : {
- 'nom' : u'Envoyer',
- 'etat_initial' : (POSTE_ETAT_DRH_CONTROLE,),
- 'etat_final' : POSTE_ETAT_DRH_2,
+ POSTE_ACTION_ENVOYER_DRH_2: {
+ 'nom': u'Envoyer',
+ 'etat_initial': (POSTE_ETAT_DRH_CONTROLE,),
+ 'etat_final': POSTE_ETAT_DRH_2,
},
- POSTE_ACTION_DEMANDE_MODIF : {
- 'nom' : u'Envoyer',
- 'etat_initial' : (POSTE_ETAT_DRH_CONTROLE, POSTE_ETAT_DRH_2),
+ POSTE_ACTION_DEMANDE_MODIF: {
+ 'nom': u'Envoyer',
+ 'etat_initial': (POSTE_ETAT_DRH_CONTROLE, POSTE_ETAT_DRH_2),
'etat_final': POSTE_ETAT_DEMANDE_MODIF,
},
- POSTE_ACTION_RETOUR_DEMANDE_MODIF : {
+ POSTE_ACTION_RETOUR_DEMANDE_MODIF: {
'nom': u'Retourner',
'etat_initial': (POSTE_ETAT_DEMANDE_MODIF,),
'etat_final': POSTE_ETAT_DRH_CONTROLE,
},
- POSTE_ACTION_ENVOYER_ACCIOR : {
- 'nom' : u'Envoyer',
- 'etat_initial' : (POSTE_ETAT_DRH_2,),
- 'etat_final' : POSTE_ETAT_ACCIOR,
+ POSTE_ACTION_ENVOYER_ACCIOR: {
+ 'nom': u'Envoyer',
+ 'etat_initial': (POSTE_ETAT_DRH_2,),
+ 'etat_final': POSTE_ETAT_ACCIOR,
},
- POSTE_ACTION_ENVOYER_ABF : {
- 'nom' : u'Envoyer',
- 'etat_initial' : (POSTE_ETAT_ACCIOR,),
- 'etat_final' : POSTE_ETAT_ABF,
+ POSTE_ACTION_ENVOYER_ABF: {
+ 'nom': u'Envoyer',
+ 'etat_initial': (POSTE_ETAT_ACCIOR,),
+ 'etat_final': POSTE_ETAT_ABF,
},
- POSTE_ACTION_ENVOYER_HAUTE_DIRECTION : {
- 'nom' : u'Envoyer',
- 'etat_initial' : (POSTE_ETAT_ABF,),
- 'etat_final' : POSTE_ETAT_HAUTE_DIRECTION,
+ POSTE_ACTION_ENVOYER_HAUTE_DIRECTION: {
+ 'nom': u'Envoyer',
+ 'etat_initial': (POSTE_ETAT_ABF,),
+ 'etat_final': POSTE_ETAT_HAUTE_DIRECTION,
},
- POSTE_ACTION_DEMANDE_JUSTIF : {
- 'nom' : u'Envoyer',
- 'etat_initial' : (POSTE_ETAT_HAUTE_DIRECTION,),
+ POSTE_ACTION_DEMANDE_JUSTIF: {
+ 'nom': u'Envoyer',
+ 'etat_initial': (POSTE_ETAT_HAUTE_DIRECTION,),
'etat_final': POSTE_ETAT_DEMANDE_JUSTIF,
},
- POSTE_ACTION_RETOUR_DEMANDE_JUSTIF : {
- 'nom' : u'Envoyer',
- 'etat_initial' : (POSTE_ETAT_DEMANDE_JUSTIF,),
+ POSTE_ACTION_RETOUR_DEMANDE_JUSTIF: {
+ 'nom': u'Envoyer',
+ 'etat_initial': (POSTE_ETAT_DEMANDE_JUSTIF,),
'etat_final': POSTE_ETAT_HAUTE_DIRECTION,
},
- POSTE_ACTION_ENVOYER_REGION_FINALISATION : {
- 'nom' : u'Envoyer',
- 'etat_initial' : (POSTE_ETAT_HAUTE_DIRECTION,),
- 'etat_final' : POSTE_ETAT_REGION_FINALISATION
+ POSTE_ACTION_ENVOYER_REGION_FINALISATION: {
+ 'nom': u'Envoyer',
+ 'etat_initial': (POSTE_ETAT_HAUTE_DIRECTION,),
+ 'etat_final': POSTE_ETAT_REGION_FINALISATION
},
- POSTE_ACTION_ENVOYER_DRH_FINALISATION : {
- 'nom' : u'Envoyer',
- 'etat_initial' : (POSTE_ETAT_REGION_FINALISATION,),
- 'etat_final' : POSTE_ETAT_DRH_FINALISATION,
+ POSTE_ACTION_ENVOYER_DRH_FINALISATION: {
+ 'nom': u'Envoyer',
+ 'etat_initial': (POSTE_ETAT_REGION_FINALISATION,),
+ 'etat_final': POSTE_ETAT_DRH_FINALISATION,
},
- POSTE_ACTION_FINALISER : {
- 'nom' : u'Finaliser',
- 'etat_initial' : (POSTE_ETAT_DRH_FINALISATION,),
- 'etat_final' : POSTE_ETAT_FINALISE
+ POSTE_ACTION_FINALISER: {
+ 'nom': u'Finaliser',
+ 'etat_initial': (POSTE_ETAT_DRH_FINALISATION,),
+ 'etat_final': POSTE_ETAT_FINALISE
},
}
def acces_directeur_bureau(self, action, request):
user_groups = request.user.groups.all()
return grp_drh in user_groups or grp_drh2 in user_groups or \
- (is_user_dans_services_centraux(request.user) and
+ (is_user_dans_services_centraux(request.user) and
grp_administrateurs in user_groups)
def acces_administrateur(self, action, request):
user_groups = request.user.groups.all()
- return grp_correspondants_rh in user_groups or grp_drh in user_groups or \
- grp_drh2 in user_groups
+ return grp_correspondants_rh in user_groups or grp_drh in user_groups \
+ or grp_drh2 in user_groups
def acces_drh_controle(self, action, request):
user_groups = request.user.groups.all()
if not is_user_dans_services_centraux(request.user):
return False
user_groups = request.user.groups.all()
- return grp_administrateurs in user_groups or grp_drh in user_groups or \
- grp_drh2 in user_groups
+ return grp_administrateurs in user_groups or grp_drh in user_groups \
+ or grp_drh2 in user_groups
def acces_accior(self, action, request):
user_groups = request.user.groups.all()
def acces_abf(self, action, request):
user_groups = request.user.groups.all()
- return grp_accior in user_groups or grp_drh in user_groups or grp_drh2 in user_groups
+ return grp_accior in user_groups or grp_drh in user_groups \
+ or grp_drh2 in user_groups
def acces_haute_direction(self, action, request):
user_groups = request.user.groups.all()
- return grp_abf in user_groups or grp_drh in user_groups or grp_drh2 in user_groups
+ return grp_abf in user_groups or grp_drh in user_groups \
+ or grp_drh2 in user_groups
def acces_region_finalisation(self, action, request):
user_groups = request.user.groups.all()
- return grp_haute_direction in user_groups or grp_drh in user_groups or \
- grp_drh2 in user_groups
+ return grp_haute_direction in user_groups or grp_drh in user_groups \
+ or grp_drh2 in user_groups
def acces_drh_finalisation(self, action, request):
user_groups = request.user.groups.all()
def acces_demande_justif(self, action, request):
user_groups = request.user.groups.all()
- return grp_haute_direction in user_groups or grp_drh in user_groups or \
- grp_drh2 in user_groups
+ return grp_haute_direction in user_groups or grp_drh in user_groups \
+ or grp_drh2 in user_groups
def acces_retour_demande_modif(self, action, request):
user_groups = request.user.groups.all()
- return grp_administrateurs in user_groups or grp_drh in user_groups or \
- grp_drh2 in user_groups
+ return grp_administrateurs in user_groups or grp_drh in user_groups \
+ or grp_drh2 in user_groups
def acces_retour_demande_justif(self, action, request):
user_groups = request.user.groups.all()
DOSSIER_ETAT_DRH_FINALISATION = POSTE_ETAT_DRH_FINALISATION
DOSSIER_ETAT_FINALISE = POSTE_ETAT_FINALISE
+
class DossierWorkflow(PosteWorkflow):
class Meta:
MAP_GROUPE_ETATS_A_FAIRE = {
- grp_correspondants_rh : (POSTE_ETAT_BROUILLON, DOSSIER_ETAT_BROUILLON,
- POSTE_ETAT_REGION_FINALISATION,
- DOSSIER_ETAT_REGION_FINALISATION),
- grp_service_utilisateurs : (POSTE_ETAT_SERVICE_UTILISATEURS,
- DOSSIER_ETAT_SERVICE_UTILISATEURS,),
- grp_administrateurs : (POSTE_ETAT_ADMINISTRATEUR,
- DOSSIER_ETAT_ADMINISTRATEUR,
- POSTE_ETAT_DEMANDE_MODIF,
- DOSSIER_ETAT_DEMANDE_MODIF,
- POSTE_ETAT_REGION_FINALISATION,
- DOSSIER_ETAT_REGION_FINALISATION,
- ),
- grp_directeurs_bureau : (POSTE_ETAT_DIRECTEUR_BUREAU, DOSSIER_ETAT_DIRECTEUR_BUREAU, ),
- grp_drh : (POSTE_ETAT_DRH_CONTROLE, POSTE_ETAT_DRH_FINALISATION,
- DOSSIER_ETAT_DRH_CONTROLE, DOSSIER_ETAT_DRH_FINALISATION,
- POSTE_ETAT_DEMANDE_JUSTIF, DOSSIER_ETAT_DEMANDE_JUSTIF),
- grp_drh2 : (POSTE_ETAT_DRH_2, DOSSIER_ETAT_DRH_2),
- grp_accior : (POSTE_ETAT_ACCIOR, DOSSIER_ETAT_ACCIOR, ),
- grp_abf : (POSTE_ETAT_ABF, DOSSIER_ETAT_ABF, ),
- grp_haute_direction : (POSTE_ETAT_HAUTE_DIRECTION, DOSSIER_ETAT_HAUTE_DIRECTION, ),
+ grp_correspondants_rh: (
+ POSTE_ETAT_BROUILLON, DOSSIER_ETAT_BROUILLON,
+ POSTE_ETAT_REGION_FINALISATION, DOSSIER_ETAT_REGION_FINALISATION
+ ),
+ grp_service_utilisateurs: (
+ POSTE_ETAT_SERVICE_UTILISATEURS,
+ DOSSIER_ETAT_SERVICE_UTILISATEURS
+ ),
+ grp_administrateurs: (
+ POSTE_ETAT_ADMINISTRATEUR, DOSSIER_ETAT_ADMINISTRATEUR,
+ POSTE_ETAT_DEMANDE_MODIF, DOSSIER_ETAT_DEMANDE_MODIF,
+ POSTE_ETAT_REGION_FINALISATION, DOSSIER_ETAT_REGION_FINALISATION,
+ ),
+ grp_directeurs_bureau: (
+ POSTE_ETAT_DIRECTEUR_BUREAU, DOSSIER_ETAT_DIRECTEUR_BUREAU
+ ),
+ grp_drh: (
+ POSTE_ETAT_DRH_CONTROLE, POSTE_ETAT_DRH_FINALISATION,
+ DOSSIER_ETAT_DRH_CONTROLE, DOSSIER_ETAT_DRH_FINALISATION,
+ POSTE_ETAT_DEMANDE_JUSTIF, DOSSIER_ETAT_DEMANDE_JUSTIF
+ ),
+ grp_drh2: (POSTE_ETAT_DRH_2, DOSSIER_ETAT_DRH_2),
+ grp_accior: (POSTE_ETAT_ACCIOR, DOSSIER_ETAT_ACCIOR),
+ grp_abf: (POSTE_ETAT_ABF, DOSSIER_ETAT_ABF),
+ grp_haute_direction: (
+ POSTE_ETAT_HAUTE_DIRECTION, DOSSIER_ETAT_HAUTE_DIRECTION
+ ),
}
-ETATS_EDITABLE = (POSTE_ETAT_BROUILLON, POSTE_ETAT_ADMINISTRATEUR,
- POSTE_ETAT_DRH_CONTROLE, POSTE_ETAT_DRH_2,
- POSTE_ETAT_DIRECTEUR_BUREAU,
- POSTE_ETAT_SERVICE_UTILISATEURS, POSTE_ETAT_DEMANDE_MODIF,
- POSTE_ETAT_DEMANDE_JUSTIF, DOSSIER_ETAT_BROUILLON,
- DOSSIER_ETAT_ADMINISTRATEUR, DOSSIER_ETAT_DRH_CONTROLE,
- DOSSIER_ETAT_DRH_2, DOSSIER_ETAT_DIRECTEUR_BUREAU,
- DOSSIER_ETAT_SERVICE_UTILISATEURS,
- DOSSIER_ETAT_DEMANDE_MODIF, DOSSIER_ETAT_DEMANDE_JUSTIF,
+ETATS_EDITABLE = (
+ POSTE_ETAT_BROUILLON, POSTE_ETAT_ADMINISTRATEUR,
+ POSTE_ETAT_DRH_CONTROLE, POSTE_ETAT_DRH_2, POSTE_ETAT_DIRECTEUR_BUREAU,
+ POSTE_ETAT_SERVICE_UTILISATEURS, POSTE_ETAT_DEMANDE_MODIF,
+ POSTE_ETAT_DEMANDE_JUSTIF, DOSSIER_ETAT_BROUILLON,
+ DOSSIER_ETAT_ADMINISTRATEUR, DOSSIER_ETAT_DRH_CONTROLE,
+ DOSSIER_ETAT_DRH_2, DOSSIER_ETAT_DIRECTEUR_BUREAU,
+ DOSSIER_ETAT_SERVICE_UTILISATEURS, DOSSIER_ETAT_DEMANDE_MODIF,
+ DOSSIER_ETAT_DEMANDE_JUSTIF,
)
-ETATS_VALIDE = (DOSSIER_ETAT_REGION_FINALISATION, DOSSIER_ETAT_DRH_FINALISATION,
- DOSSIER_ETAT_FINALISE)
+ETATS_VALIDE = (
+ DOSSIER_ETAT_REGION_FINALISATION, DOSSIER_ETAT_DRH_FINALISATION,
+ DOSSIER_ETAT_FINALISE
+)
from admin_tools.dashboard import modules, Dashboard, AppIndexDashboard
from django.utils.translation import ugettext_lazy as _
-
class CustomIndexDashboard(Dashboard):
"""
Custom index dashboard for SIGMA.
),
))
-
class CustomAppIndexDashboard(AppIndexDashboard):
"""
Custom app index dashboard for project.
"""
Décorateurs AUF
"""
-from django.contrib.auth.decorators import user_passes_test
-from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
-from permissions import is_employe, is_admin
from django.conf import settings
+from django.contrib import messages
from django.contrib.auth import REDIRECT_FIELD_NAME
+from django.contrib.auth.decorators import user_passes_test
+from django.core.urlresolvers import reverse
from django.utils.http import urlquote
-from django.contrib import messages
-# Décorateurs des fonctions dans views (pour tester permissions dans views)
-
-def admin_required(fn):
- def inner(request, *args, **kwargs):
- user = request.user
- if is_admin(user):
- return fn(request, *args, **kwargs)
- else :
- return redirect_interdiction(request)
- return inner
+from project.groups import grp_drh, grp_drh2, grp_correspondants_rh
+from project.groups import get_employe_from_user
+
def redirect_interdiction(request, msg=u"Vous n'avez pas accès à cette page"):
"""
tup = login_url, REDIRECT_FIELD_NAME, path
messages.add_message(request, messages.ERROR, "Votre compte ne permet pas d'accéder à cette partie de l'application.")
return HttpResponseRedirect('%s?%s=%s' % tup)
+
+def in_drh_or_admin(user):
+ """
+ Teste si un user Django fait parti du groupe DRH, DRH2 ou s'il est admin
+ """
+ groups = user.groups.all()
+ if user.is_superuser or \
+ grp_drh in groups or \
+ grp_drh2 in groups:
+ return True
+ else:
+ return False
+
+def drh_or_admin_required(fn):
+ """
+ Teste si un user Django fait parti du groupe DRH, DRH2 ou s'il est admin
+ """
+ def inner(request, *args, **kwargs):
+ user = request.user
+ if in_drh_or_admin(user):
+ return fn(request, *args, **kwargs)
+ msg = u"Votre compte ne permet pas d'accéder à " \
+ u"cette partie de l'application."
+ return redirect_interdiction(request, msg)
+ return inner
+
+def region_protected(model):
+ def wrapper(func):
+ def wrapped(request, id):
+ if request.user.is_superuser:
+ return func(request, id)
+ user_groups = request.user.groups.all()
+ if grp_drh in user_groups:
+ 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
+ })
+ qs = model.objects.filter(q)
+ if int(id) in [o.id for o in qs]:
+ return func(request, id)
+ return redirect_interdiction(request)
+ return wrapped
+ return wrapper
# -*- encoding: utf-8 -*-
from project.settings import *
+
DEBUG=True
TEMPLATE_DEBUG=DEBUG
--- /dev/null
+# -*- encoding: utf-8 -*-
+
+from django.contrib.auth.models import Group
+import auf.django.references.models as ref
+
+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 Exception, e:
+ return None
+ return grp
+
+CORRESPONDANT_RH = 'Correspondants RH'
+ADMINISTRATEURS ='Administrateurs'
+DIRECTEUR_DE_BUREAU = 'Directeurs de bureau'
+DRH_NIVEAU_1 = 'DRH'
+DRH_NIVEAU_2 = 'DRH-2'
+ACCIOR = 'ACCIOR'
+ABF = 'ABF'
+HAUTE_DIRECTION = 'Haute direction'
+SERVICE_UTILISATEURS = 'Service utilisateurs'
+
+# Groupes impliqués dans le Worflow
+grp_correspondants_rh = safe_create_groupe(name=CORRESPONDANT_RH)
+grp_administrateurs = safe_create_groupe(name=ADMINISTRATEURS)
+grp_directeurs_bureau = safe_create_groupe(name=DIRECTEUR_DE_BUREAU)
+grp_drh = safe_create_groupe(name=DRH_NIVEAU_1)
+grp_drh2 = safe_create_groupe(name=DRH_NIVEAU_2)
+grp_accior = safe_create_groupe(name=ACCIOR)
+grp_abf = safe_create_groupe(name=ABF)
+grp_haute_direction = safe_create_groupe(name=HAUTE_DIRECTION)
+grp_service_utilisateurs = safe_create_groupe(name=SERVICE_UTILISATEURS)
+
+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
+ # ajouter coordonnées via ref.Employe? (courriel, tel, etc.)
+ 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)
+ if employe.id == 12: # monique chéry gère les DAE des amériques
+ return False
+ return employe.implantation_id in (15, 19)
+
+def is_user_dans_region(user):
+ employe = get_employe_from_user(user)
+ return not is_user_dans_services_centraux(user)
+++ /dev/null
-# coding: utf-8
-
-"""
-Application servant à l'importation des données du système de RH PHP4.
-"""
-
-class DatabaseRouter(object):
-
- """
- Routeur qui associe les modèles de l'app pg_db à la BD pg_db.
- """
-
- def db_for_read(self, model, **hints):
- if model._meta.app_label == 'legacy':
- return 'legacy'
- return None
-
- db_for_write = db_for_read
-
+++ /dev/null
-# coding: utf-8
-
-from datetime import datetime, date, timedelta
-from decimal import Decimal
-
-from django.contrib.auth.models import User
-from django.core.management.base import BaseCommand
-from django.db import connection
-from django.db.models import Q, Max
-
-from auf.django.references import models as ref
-from project.legacy import models as legacy
-from project.rh import models as rh
-
-
-def clean_date(date):
- if date == '2003-06-31': # date inexistante (dossier 791-1)
- return '2003-06-30'
- elif date:
- return date
- else:
- return None
-
-
-class Command(BaseCommand):
- help = 'Importe les données du système RH legacy'
-
- def handle(self, *args, **options):
- self.stdout.write("Import de rh_classement...\n")
- sync_classement()
- self.stdout.write("Import de rh_employe...\n")
- sync_employe()
- self.stdout.write("Import de rh_familleemploi...\n")
- sync_familleemploi()
- self.stdout.write("Import de rh_typeposte...\n")
- sync_typeposte()
- self.stdout.write("Import de rh_service...\n")
- sync_service()
- self.stdout.write("Import de rh_poste...\n")
- sync_poste()
- self.stdout.write("Import de rh_organismebstg...\n")
- sync_organismebstg()
- self.stdout.write("Import de rh_statut...\n")
- sync_statut()
- self.stdout.write("Import de rh_tauxchange...\n")
- sync_tauxchange()
- self.stdout.write("Import de rh_valeurpoint...\n")
- sync_valeurpoint()
- self.stdout.write("Import de rh_typecontrat...\n")
- sync_typecontrat()
- self.stdout.write("Import de rh_typerevalorisation...\n")
- sync_typerevalorisation()
- self.stdout.write("Import de rh_typeremuneration...\n")
- sync_typeremuneration()
- self.stdout.write("Import de rh_dossier...\n")
- sync_dossier()
- self.stdout.write("Import de rh_ayantdroit...\n")
- sync_ayantdroit()
- self.stdout.write("Setup des devises dans rh.Poste...\n")
- sync_devises()
-
-
-def sync_classement():
- connection.cursor().execute('TRUNCATE rh_classement')
- for classement in legacy.Classement.objects.all():
- rh.Classement.objects.create(
- id=classement.id_classement,
- type=classement.type_classement,
- echelon=classement.echelon or 0,
- degre=classement.degre or 0,
- coefficient=classement.coefficient,
- commentaire=classement.commentaire,
- date_modification=classement.date_modif,
- )
-
-
-def sync_employe():
- cursor = connection.cursor()
- cursor.execute('TRUNCATE rh_employe')
- cursor.execute('TRUNCATE rh_employecommentaire')
- odette = User.objects.get(username='odette.tremblay')
- for fiche in legacy.Fiches.objects.extra():
- employe = rh.Employe.objects.create(
- id=fiche.no_employe,
- nom=fiche.nom,
- prenom=fiche.prenom,
- nationalite_id=fiche.nationalite,
- date_naissance=(fiche.date_naissance if fiche.date_naissance
- else None),
- genre=fiche.sexe.upper(),
- situation_famille=(None if fiche.situation_famille == '-1'
- else fiche.situation_famille),
- date_entree=fiche.date_entree,
- tel_domicile=fiche.tel_domicile,
- tel_cellulaire=fiche.tel_cellulaire,
- adresse=fiche.no_rue,
- ville=fiche.ville,
- province=fiche.etat_province,
- code_postal=fiche.code_postal_cedex,
- pays_id=fiche.pays_iso2 if fiche.pays_iso2 != '-1' else None,
- date_creation=fiche.date_ouverture,
- date_modification=fiche.date_maj,
- supprime=False,
- nb_postes=None, # meta
- )
- if fiche.remarque:
- rh.EmployeCommentaire.objects.create(
- employe=employe,
- texte=fiche.remarque,
- owner=odette
- )
-
-
-def sync_familleemploi():
- cursor = connection.cursor()
- cursor.execute('TRUNCATE rh_familleemploi')
- for famille in legacy.FamilleEmploi.objects.all():
- rh.CategorieEmploi.objects.create(
- id=famille.id_famille_emploi,
- nom=famille.famille_emploi,
- )
-
-
-def sync_typeposte():
- cursor = connection.cursor()
- cursor.execute('TRUNCATE rh_typeposte')
- for type in legacy.Postes.objects.all():
- rh.TypePoste.objects.create(
- id=type.id_poste,
- nom=type.titre_poste_m,
- nom_feminin=type.titre_poste_f,
- is_responsable=bool(int(type.poste_responsable)),
- famille_emploi_id=type.id_famille_emploi,
- date_modification=type.datemaj,
- )
-
-
-def sync_service():
- cursor = connection.cursor()
- cursor.execute('TRUNCATE rh_service')
-
- # Création des services à partir de la table de références
- for s in ref.Service.objects.all():
- rh.Service.objects.create(
- id=s.id,
- nom=s.nom,
- archive=not bool(s.actif),
- )
-
-
-def sync_poste():
- cursor = connection.cursor()
- cursor.execute('TRUNCATE rh_poste')
- for poste in legacy.ImplantationPostes.objects \
- .select_related('type_poste'):
-
- # Aller chercher certaines informations dans le dernier dossier
- # associé à ce poste
- dossiers = legacy.Dossiers.objects.filter(
- Q(poste_1=poste.id_implantation_postes) |
- Q(poste_2=poste.id_implantation_postes)
- ).order_by('-id_dossier')
- complement = ''
-
- if dossiers.count() == 0:
- service = None
- poste_du_responsable = None
- date_debut = None
- date_fin = None
-
- if dossiers.count() > 0:
-
- for d in dossiers:
- if d.ids_direction_service not in (None, ''):
- dossier = d
- break
-
- # Déterminer le service
- services = dossier.ids_direction_service
- service = int(services.split('|')[0]) if services else 1
- if poste.id_implantation_postes == dossier.poste_1:
- complement = dossier.complement_1
- else:
- complement = dossier.complement_2
- complement = ' ' + complement if complement else ''
-
- # Déterminer le poste du responsable
- try:
- responsable = dossier.responsable
- dossiers_du_responsable = responsable.dossiers \
- .order_by('-id_dossier')
- if dossiers_du_responsable.count() > 0:
- poste_du_responsable = dossiers_du_responsable[0].poste_1
- except:
- poste_du_responsable = None
-
- date_debut = clean_date(min(d.date_debut_mandat for d in dossiers))
- if '' in (d.date_fin_mandat for d in dossiers):
- date_fin = None
- else:
- date_fin = clean_date(max(d.date_fin_mandat for d in dossiers))
-
- # Créer le poste
- rh_poste = rh.Poste.objects.create(
- id=poste.id_implantation_postes,
- nom=poste.type_poste.titre_poste_m + complement,
- nom_feminin=poste.type_poste.titre_poste_f + complement,
- implantation_id=poste.id_implantation,
- type_poste_id=poste.type_poste_id,
- date_modification=poste.date_maj,
- service_id=service,
- supprime=False,
- responsable_id=poste_du_responsable,
- date_debut=date_debut,
- date_fin=date_fin,
- )
-
- if service is None and poste.actif in ('0', 0, False):
- rh_poste.date_fin = rh_poste.date_modification
- rh_poste.save()
-
-
-def sync_organismebstg():
- connection.cursor().execute('TRUNCATE rh_organismebstg')
- for organisme in legacy.OrganismesBstg.objects.all():
- rh.OrganismeBstg.objects.create(
- id=organisme.id_bstg,
- nom=organisme.organisme_nom,
- type=organisme.bstg_type,
- )
-
-
-def sync_statut():
- connection.cursor().execute('TRUNCATE rh_statut')
- for statut in legacy.Statut.objects.all():
- rh.Statut.objects.create(
- id=statut.id_statut,
- code=statut.statut_contractuel,
- nom=statut.description_statut_contractuel,
- )
-
-
-def sync_tauxchange():
- connection.cursor().execute('TRUNCATE rh_tauxchange')
- connection.cursor().execute('TRUNCATE rh_devise')
-
- # Certaines devises ont besoin d'un id spécifique (#2581)
- rh.Devise.objects.create(id=1, code='AMD', nom='Dram arménien')
- rh.Devise.objects.create(id=2, code='CAD', nom='Dollar canadien')
- rh.Devise.objects.create(id=3, code='CAN', nom='Dollar canadien')
- rh.Devise.objects.create(id=4, code='DZD', nom='Dinar algérien')
- rh.Devise.objects.create(id=5, code='EUR', nom='Euro')
- rh.Devise.objects.create(id=6, code='GNF', nom='Franc Guinéen')
- rh.Devise.objects.create(id=7, code='KMF', nom='Franc comorien')
- rh.Devise.objects.create(id=8, code='LBP', nom='Livre libanaise')
- rh.Devise.objects.create(id=9, code='MAD', nom='Dirham marocain')
- rh.Devise.objects.create(id=10, code='MGF', nom='Franc Malgache')
- rh.Devise.objects.create(id=11, code='MRO', nom='Ouguiya')
- rh.Devise.objects.create(id=12, code='MUR', nom='Roupie mauricienne')
- rh.Devise.objects.create(id=13, code='SYP', nom='Livre syrienne')
- rh.Devise.objects.create(id=14, code='TND', nom='Dinar tunisien')
- rh.Devise.objects.create(id=15, code='US ', nom='Dollar américain')
- rh.Devise.objects.create(id=16, code='USD', nom='Dollar américain')
- rh.Devise.objects.create(id=17, code='VUV', nom='Vatu')
- rh.Devise.objects.create(id=18, code='XAF', nom='Franc CFA')
- rh.Devise.objects.create(id=19, code='XOF', nom='Franc CFA')
-
- for taux in legacy.TauxChangeAnnuel.objects.exclude(taux_annuel=None):
-
- # Créer la devise
- devise, created = rh.Devise.objects.get_or_create(
- code=taux.code_devise
- )
- if created:
- devise.nom = taux.nom_devise
- devise.save()
-
- # Créer le taux de change
- rh.TauxChange.objects.get_or_create(
- devise=devise,
- annee=taux.annee,
- taux=taux.taux_annuel,
- )
-
-
-def sync_valeurpoint():
- connection.cursor().execute('TRUNCATE rh_valeurpoint')
- for vp in legacy.ValeurPoint.objects.all():
-
- # Trouver la devise associée à cette implantation
- annee = vp.date_actif[:4]
- try:
- taux = legacy.TauxChangeAnnuel.objects.get(
- annee=annee, id_implantation=vp.id_implantation
- )
- except:
- continue
- devise = rh.Devise.objects.get(code=taux.code_devise)
-
- rh.ValeurPoint.objects.create(
- id=vp.id_valeur_point,
- valeur=vp.valeur_point,
- implantation_id=vp.id_implantation,
- annee=vp.date_actif[:4],
- devise=devise
- )
-
-
-def sync_typecontrat():
- connection.cursor().execute('TRUNCATE rh_typecontrat')
- for type in legacy.TypeContrat.objects.all():
- rh.TypeContrat.objects.create(
- id=type.id_type_contrat,
- nom=type.nom_contrat,
- nom_long=type.description_contrat,
- )
-
-
-def sync_typerevalorisation():
- connection.cursor().execute('TRUNCATE rh_typerevalorisation')
- for type in legacy.TypeRevalorisation.objects.all():
- rh.TypeRevalorisation.objects.create(
- id=type.id_type_revalorisation,
- nom=type.type_revalorisation,
- )
-
-
-def sync_typeremuneration():
- connection.cursor().execute('TRUNCATE rh_typeremuneration')
- for type in legacy.TypeRemuneration.objects.all():
- rh.TypeRemuneration.objects.create(
- id=type.id_type_remuneration,
- nom=type.type_remuneration,
- type_paiement=type.type_paiement,
- nature_remuneration=type.nature_remuneration,
- )
-
-
-def sync_dossier():
- taux_cache = {}
-
- def get_taux(annee, devise):
- taux = taux_cache.get((annee, devise))
- if taux is not None:
- return taux
- taux = rh.TauxChange.objects.filter(annee__gte=annee) \
- .order_by('annee')[0].taux
- taux_cache[(annee, devise)] = taux
- return taux
-
- cursor = connection.cursor()
- cursor.execute('TRUNCATE rh_contrat')
- cursor.execute('TRUNCATE rh_dossier')
- cursor.execute('TRUNCATE rh_remuneration')
- cursor.execute('TRUNCATE rh_dossiercommentaire')
- cursor.execute('TRUNCATE rh_responsableimplantation')
- odette = User.objects.get(username='odette.tremblay')
- type_contrat_inconnu = rh.TypeContrat.objects.create(
- nom='Inconnu',
- nom_long='Inconnu',
- )
- dossiers = legacy.Dossiers.objects \
- .annotate(timestamp_modif=Max('historique__stamp')) \
- .order_by('no_dossier')
- for dossier in dossiers:
- date_modification = datetime.fromtimestamp(dossier.timestamp_modif) \
- if dossier.timestamp_modif else None
- dossier1 = rh.Dossier.objects.create(
- employe_id=dossier.employe_id,
- poste_id=dossier.poste_1,
- statut_id=dossier.id_statut,
- organisme_bstg_id=dossier.id_bstg,
- statut_residence=('expat' if dossier.id_local_expatrie == 1
- else 'local'),
- classement_id=dossier.id_classement,
- regime_travail=dossier.regime_travail,
- date_debut=clean_date(dossier.date_debut_mandat),
- date_fin=clean_date(dossier.date_fin_mandat),
- date_modification=date_modification,
- remplacement=False,
- supprime=False
- )
-
- # Commentaires
- if dossier.remarque:
- rh.DossierCommentaire.objects.create(
- dossier=dossier1,
- texte=dossier.remarque,
- owner=odette
- )
-
- # Responsables d'implantation
- today = date.today().isoformat()
- if not dossier.date_fin_mandat or dossier.date_fin_mandat >= today:
- if dossier.responsable_implantation_1:
- responsable, created = rh.ResponsableImplantation.objects \
- .get_or_create(
- implantation_id=dossier.id_implantation_1
- )
- responsable.employe_id = dossier.employe_id
- responsable.save()
- if dossier.responsable_implantation_2:
- responsable, created = rh.ResponsableImplantation.objects \
- .get_or_create(
- implantation_id=dossier.id_implantation_2
- )
- responsable.employe_id = dossier.employe_id
- responsable.save()
-
- # Contrats
- rh.Contrat.objects.create(
- dossier=dossier1,
- type_contrat_id=dossier.id_type_contrat or type_contrat_inconnu.id,
- date_debut=clean_date(dossier.date_debut_contrat),
- date_fin=clean_date(dossier.date_fin_contrat),
- supprime=False
- )
-
- # Rémunération
- remuns_precedentes = {}
- charges_precedentes = None
- pourcentage_charges = 0
- devise_charges = rh.Devise.objects.get(code='EUR')
- for remun in legacy.HistoRemuneration.objects \
- .filter(no_dossier=dossier.no_dossier) \
- .order_by('id_histo_remuneration'):
-
- # Calcul de la période
- date_debut = remun.date_effective
- if date_debut == '200-08-09':
- date_debut = '2000-08-09'
- elif date_debut == '2003-06-31':
- date_debut = '2003-06-30'
- date_debut = date(
- int(date_debut[:4]), int(date_debut[5:7]), int(date_debut[8:])
- )
- if remun.type_remuneration.type_paiement == 'Ponctuel':
- date_fin = date_debut
- else:
- date_fin = None
- remun_precedente = remuns_precedentes.get(
- remun.type_remuneration_id
- )
- if remun_precedente:
- if str(remun_precedente.date_debut) == str(date_debut):
- remun_precedente.delete()
- else:
- remun_precedente.date_fin = \
- date_debut - timedelta(days=1)
- remun_precedente.save()
-
- # Création de la ligne de rémunération
- if remun.type_remuneration.nature_remuneration != 'Charges' \
- and remun.montant != 0:
- devise, created = rh.Devise.objects.get_or_create(
- code=remun.code_devise
- )
-
- rh_remun = rh.Remuneration.objects.create(
- dossier=dossier1,
- type_id=remun.type_remuneration_id,
- type_revalorisation_id=remun.id_type_revalorisation,
- montant=remun.montant,
- devise=devise,
- supprime=False,
- date_debut=date_debut,
- date_fin=date_fin
- )
-
- # Se souvenir de ce type de rémunération
- if remun.type_remuneration.type_paiement == u'Régulier':
- remuns_precedentes[remun.type_remuneration_id] = rh_remun
-
- # Charges patronales
- if remun.type_remuneration.nature_remuneration == 'Charges':
- pourcentage_charges = remun.pourcentage
-
- if remun.type_remuneration.nature_remuneration == 'Traitement':
- devise_charges = rh.Devise.objects.get(code=remun.code_devise)
-
- if remun.type_remuneration.type_paiement == u'Régulier':
- charges = 0
- annee_charges = date_debut.year
- taux2 = get_taux(annee_charges, devise_charges)
- if pourcentage_charges:
- for remun_precedente in remuns_precedentes.values():
- montant = remun_precedente.montant
- devise = remun_precedente.devise
- if devise != devise_charges:
- taux1 = get_taux(annee_charges, devise)
- montant = (montant * Decimal(str(taux1)) /
- Decimal(str(taux2)))
- if remun_precedente.type.nature_remuneration == \
- 'Traitement':
- montant = (
- montant *
- remun_precedente.dossier.regime_travail / 100
- )
- montant = montant * pourcentage_charges / 100
- montant.quantize(remun_precedente.montant)
- charges += montant
- charges = charges * pourcentage_charges / 100
- if charges_precedentes:
- if charges_precedentes.date_debut == date_debut:
- charges_precedentes.delete()
- else:
- charges_precedentes.date_fin = date_debut - \
- timedelta(days=1)
- charges_precedentes.save()
- if charges > 0 and \
- (not charges_precedentes or
- charges_precedentes.montant != charges or
- charges_precedentes.date_debut == date_debut):
- charges_precedentes = rh.Remuneration.objects.create(
- dossier=dossier1,
- type_id=17,
- type_revalorisation_id=None,
- montant=Decimal(str(charges)),
- devise=devise_charges,
- supprime=False,
- date_debut=date_debut,
- commentaire=(u'Charges patronales: %s%%' %
- pourcentage_charges)
- )
-
- # Dossier différent pour le deuxième poste
- if dossier.poste_2:
- dossier2 = rh.Dossier.objects.create(
- employe_id=dossier.employe_id,
- poste_id=dossier.poste_2,
- statut_id=dossier.id_statut,
- organisme_bstg_id=dossier.id_bstg,
- statut_residence=('expat' if dossier.id_local_expatrie == 1
- else 'local'),
- classement_id=dossier.id_classement,
- regime_travail=dossier.regime_travail,
- date_debut=clean_date(dossier.date_debut_mandat),
- date_fin=clean_date(dossier.date_fin_mandat),
- remplacement=False,
- supprime=False
- )
- if dossier.remarque:
- rh.DossierCommentaire.objects.create(
- dossier=dossier2,
- texte=dossier.remarque,
- owner=odette
- )
- rh.Contrat.objects.create(
- dossier=dossier2,
- type_contrat_id=(dossier.id_type_contrat or
- type_contrat_inconnu.id),
- date_debut=clean_date(dossier.date_debut_contrat),
- date_fin=clean_date(dossier.date_fin_contrat),
- supprime=False
- )
-
-
-def sync_ayantdroit():
- connection.cursor().execute('TRUNCATE rh_ayantdroit')
- odette = User.objects.get(username='odette.tremblay')
- for ad in legacy.AyantDroit.objects.all():
- rh_ad = rh.AyantDroit.objects.create(
- id=ad.id_ayant_droit,
- nom=ad.nom_ayant_droit,
- prenom=ad.prenom_ayant_droit,
- employe_id=ad.no_employe,
- lien_parente=(None if ad.lien_parente == 'Autre'
- else ad.lien_parente),
- )
- if ad.commentaire_ayant_droit:
- rh.AyantDroitCommentaire.objects.create(
- ayant_droit=rh_ad,
- texte=ad.commentaire_ayant_droit,
- owner=odette
- )
-
-
-def sync_devises():
- for p in rh.Poste.objects.all():
- if p.implantation is not None:
- qs = rh.ValeurPoint.objects \
- .filter(implantation=p.implantation) \
- .order_by('-id')
- if qs.exists():
- point = qs[0]
- p.devise_min = point.devise
- p.devise_max = point.devise
- p.devise_comparaison = point.devise
- p.save()
+++ /dev/null
-from django.db import models
-
-class Classement(models.Model):
- id_classement = models.IntegerField(primary_key=True)
- type_classement = models.CharField(max_length=4)
- echelon = models.CharField(max_length=127)
- degre = models.CharField(max_length=32)
- commentaire = models.CharField(max_length=127)
- coefficient = models.FloatField()
- date_modif = models.CharField(max_length=10)
- actif = models.IntegerField()
- class Meta:
- db_table = u'classement'
- managed = False
-
-class Fiches(models.Model):
- no_employe = models.IntegerField(primary_key=True)
- nom = models.CharField(max_length=128)
- prenom = models.CharField(max_length=128)
- date_ouverture = models.CharField(max_length=10)
- situation_famille = models.CharField(max_length=2)
- nationalite = models.CharField(max_length=2)
- tel_domicile = models.CharField(max_length=20)
- tel_cellulaire = models.CharField(max_length=20)
- no_rue = models.CharField(max_length=128)
- ville = models.CharField(max_length=128)
- etat_province = models.CharField(max_length=128)
- code_postal_cedex = models.CharField(max_length=64)
- pays_iso2 = models.CharField(max_length=2)
- sexe = models.CharField(max_length=1)
- date_entree = models.CharField(max_length=10)
- remarque = models.TextField()
- date_maj = models.CharField(max_length=10)
- date_naissance = models.CharField(max_length=10)
- class Meta:
- db_table = u'fiches'
- managed = False
-
-class Dossiers(models.Model):
- id_dossier = models.IntegerField(primary_key=True)
- no_dossier = models.CharField(max_length=10, unique=True)
- employe = models.ForeignKey(Fiches, related_name='dossiers', db_column='no_employe')
- id_implantation_1 = models.SmallIntegerField()
- poste_1 = models.SmallIntegerField()
- complement_1 = models.CharField(max_length=128)
- id_implantation_2 = models.SmallIntegerField()
- poste_2 = models.SmallIntegerField()
- complement_2 = models.CharField(max_length=128)
- ids_direction_service = models.CharField(max_length=128)
- remplacement_de = models.IntegerField()
- responsable = models.ForeignKey(Fiches, related_name='+', db_column='responsable')
- id_local_expatrie = models.IntegerField()
- date_debut_mandat = models.CharField(max_length=10)
- date_fin_mandat = models.CharField(max_length=10)
- id_statut = models.IntegerField()
- id_bstg = models.IntegerField()
- id_classement = models.IntegerField()
- id_type_contrat = models.IntegerField()
- regime_travail = models.SmallIntegerField()
- date_debut_contrat = models.CharField(max_length=10)
- date_fin_contrat = models.CharField(max_length=10)
- remarque = models.TextField()
- responsable_implantation_1 = models.IntegerField()
- responsable_implantation_2 = models.IntegerField()
- class Meta:
- db_table = u'dossiers'
- managed = False
-
-class TypeRemuneration(models.Model):
- id_type_remuneration = models.IntegerField(primary_key=True)
- type_remuneration = models.CharField(max_length=127)
- type_paiement = models.CharField(max_length=127)
- nature_remuneration = models.CharField(max_length=127)
- actif = models.IntegerField()
- class Meta:
- db_table = u'type_remuneration'
- managed = False
-
-class HistoRemuneration(models.Model):
- id_histo_remuneration = models.IntegerField(primary_key=True)
- type_remuneration = models.ForeignKey(TypeRemuneration, db_column='id_type_remuneration',
- related_name='+')
- no_dossier = models.CharField(max_length=10)
- montant = models.DecimalField(max_digits=20, decimal_places=4)
- pourcentage = models.DecimalField(max_digits=20, decimal_places=4)
- date_effective = models.CharField(max_length=10)
- id_type_revalorisation = models.IntegerField()
- code_devise = models.CharField(max_length=3)
- usager = models.IntegerField()
- stamp = models.IntegerField()
- desactive = models.BooleanField()
- desactive_par = models.IntegerField()
- annule = models.BooleanField()
- annule_par = models.IntegerField()
- stamp_annule = models.IntegerField()
- stamp_desactive = models.IntegerField()
- class Meta:
- db_table = u'histo_remuneration'
- managed = False
-
-class HistoFiches(models.Model):
- id_histo = models.IntegerField(primary_key=True)
- fiche = models.ForeignKey(Fiches, db_column='no_employe', related_name='historique')
- nom = models.CharField(max_length=128)
- prenom = models.CharField(max_length=128)
- date_ouverture = models.CharField(max_length=10)
- situation_famille = models.CharField(max_length=2)
- nationalite = models.CharField(max_length=2)
- tel_domicile = models.CharField(max_length=20)
- tel_cellulaire = models.CharField(max_length=20)
- no_rue = models.CharField(max_length=128)
- ville = models.CharField(max_length=128)
- etat_province = models.CharField(max_length=128)
- code_postal_cedex = models.CharField(max_length=64)
- pays_iso2 = models.CharField(max_length=2)
- sexe = models.CharField(max_length=1)
- date_entree = models.CharField(max_length=10)
- remarque = models.TextField()
- date_maj = models.CharField(max_length=10)
- date_naissance = models.CharField(max_length=10)
- stamp = models.IntegerField()
- ip = models.CharField(max_length=15)
- usager = models.IntegerField()
- action = models.CharField(max_length=1)
- requete = models.TextField()
- class Meta:
- db_table = u'histo_fiches'
- managed = False
-
-class HistoDossiers(models.Model):
- id_histo = models.IntegerField(primary_key=True)
- dossier = models.ForeignKey(Dossiers, db_column='no_dossier',
- related_name='historique',
- to_field='no_dossier')
- no_employe = models.IntegerField()
- id_implantation_1 = models.SmallIntegerField()
- poste_1 = models.SmallIntegerField()
- complement_1 = models.CharField(max_length=128)
- id_implantation_2 = models.SmallIntegerField()
- poste_2 = models.SmallIntegerField()
- complement_2 = models.CharField(max_length=128)
- ids_direction_service = models.CharField(max_length=128)
- remplacement_de = models.IntegerField()
- responsable = models.IntegerField()
- id_local_expatrie = models.IntegerField()
- date_debut_mandat = models.CharField(max_length=10)
- date_fin_mandat = models.CharField(max_length=10)
- id_statut = models.IntegerField()
- id_bstg = models.IntegerField()
- id_classement = models.IntegerField()
- id_type_contrat = models.IntegerField()
- regime_travail = models.SmallIntegerField()
- date_debut_contrat = models.CharField(max_length=10)
- date_fin_contrat = models.CharField(max_length=10)
- remarque = models.TextField()
- stamp = models.IntegerField()
- ip = models.CharField(max_length=15)
- usager = models.IntegerField()
- action = models.CharField(max_length=1)
- requete = models.TextField()
- responsable_implantation_1 = models.IntegerField()
- responsable_implantation_2 = models.IntegerField()
- class Meta:
- db_table = u'histo_dossiers'
- managed = False
-
-class FamilleEmploi(models.Model):
- id_famille_emploi = models.SmallIntegerField(primary_key=True)
- famille_emploi = models.CharField(max_length=64)
- actif = models.IntegerField()
- class Meta:
- db_table = u'famille_emploi'
- managed = False
-
-class DirectionService(models.Model):
- id_direction_service = models.SmallIntegerField(primary_key=True)
- direction_service = models.CharField(max_length=256)
- actif = models.IntegerField()
- class Meta:
- db_table = u'direction_service'
- managed = False
-
-class Postes(models.Model):
- id_poste = models.SmallIntegerField(primary_key=True)
- id_famille_emploi = models.SmallIntegerField()
- titre_poste_m = models.CharField(max_length=128)
- titre_poste_f = models.CharField(max_length=128)
- datemaj = models.CharField(max_length=10)
- actif = models.CharField(max_length=1)
- poste_responsable = models.CharField(max_length=1)
- description = models.CharField(max_length=128)
- class Meta:
- db_table = u'postes'
- managed = False
-
-class ImplantationPostes(models.Model):
- id_implantation_postes = models.IntegerField(primary_key=True)
- id_implantation = models.SmallIntegerField()
- proportion = models.FloatField()
- date_maj = models.CharField(max_length=10)
- actif = models.TextField() # This field type is a guess.
- type_poste = models.ForeignKey(Postes, db_column='id_poste')
- class Meta:
- db_table = u'implantation_postes'
- managed = False
-
-class OrganismesBstg(models.Model):
- id_bstg = models.IntegerField(primary_key=True)
- organisme_nom = models.CharField(max_length=128)
- actif = models.IntegerField()
- bstg_type = models.CharField(max_length=3)
- class Meta:
- db_table = u'organismes_bstg'
- managed = False
-
-class TauxChangeAnnuel(models.Model):
- id_taux_change_annuel = models.IntegerField(primary_key=True)
- code_devise = models.CharField(max_length=3)
- nom_devise = models.CharField(max_length=32)
- id_implantation = models.SmallIntegerField()
- taux_annuel = models.DecimalField(max_digits=100, decimal_places=50)
- annee = models.CharField(max_length=4)
- class Meta:
- db_table = u'taux_change_annuel'
- managed = False
-
-class ValeurPoint(models.Model):
- id_valeur_point = models.IntegerField(primary_key=True)
- id_implantation = models.SmallIntegerField()
- valeur_point = models.DecimalField(max_digits=100, decimal_places=50)
- date_actif = models.CharField(max_length=10)
- class Meta:
- db_table = u'valeur_point'
- managed = False
-
-class TypeContrat(models.Model):
- id_type_contrat = models.IntegerField(primary_key=True)
- nom_contrat = models.CharField(max_length=127)
- categorie = models.CharField(max_length=1)
- description_contrat = models.CharField(max_length=127)
- actif_contrat = models.IntegerField()
- class Meta:
- db_table = u'type_contrat'
- managed = False
-
-class TypeRevalorisation(models.Model):
- id_type_revalorisation = models.IntegerField(primary_key=True)
- type_revalorisation = models.CharField(max_length=127)
- actif = models.IntegerField()
- class Meta:
- db_table = u'type_revalorisation'
- managed = False
-
-class Statut(models.Model):
- id_statut = models.IntegerField(primary_key=True)
- statut_contractuel = models.CharField(max_length=127)
- type_contrat = models.CharField(max_length=1)
- description_statut_contractuel = models.CharField(max_length=127)
- actif = models.IntegerField()
- class Meta:
- db_table = u'statut'
- managed = False
-
-class TypeRemuneration(models.Model):
- id_type_remuneration = models.IntegerField(primary_key=True)
- type_remuneration = models.CharField(max_length=127)
- type_paiement = models.CharField(max_length=127)
- nature_remuneration = models.CharField(max_length=127)
- actif = models.IntegerField()
- class Meta:
- db_table = u'type_remuneration'
- managed = False
-
-class AyantDroit(models.Model):
- id_ayant_droit = models.IntegerField(primary_key=True)
- no_employe = models.IntegerField()
- nom_ayant_droit = models.CharField(max_length=128)
- prenom_ayant_droit = models.CharField(max_length=128)
- commentaire_ayant_droit = models.CharField(max_length=512)
- lien_parente = models.CharField(max_length=10)
- actif = models.IntegerField()
- class Meta:
- db_table = u'ayant_droit'
- managed = False
-
+++ /dev/null
-# -*- encoding: utf-8 -*-
-
-import datamaster_modeles.models as ref
-import rh.models as rh
-from operator import itemgetter
-
-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)
- ref_employe = ref.Employe.objects.get(id=employe.id)
- employe.courriel = ref_employe.courriel
- employe.tel_pro_poste = ref_employe.telephone_poste
- employe.tel_pro_ip = ref_employe.telephone_ip
- 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 get_employe_from_id(id):
- """
- Retourne un employé AUF (rh.Employe) à partir de son id.
- """
- try:
- employe = rh.Employe.objects.get(id=id)
- employe.courriel = ref.Employe.objects.get(id=employe.id).courriel
- except:
- employe = rh.Employe.objects.none()
- return employe
-
-def safe_create_groupe(name=None, id=None):
- """
- 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:
- if name:
- grp, created = Group.objects.get_or_create(name=name)
- elif id :
- grp, created = Group.objects.get_or_create(id=id)
- except:
- return None
- return grp
-
from django.utils.translation import ugettext_lazy as _
from admin_tools.menu import items, Menu
-from project.rh.decorators import in_drh_or_admin
+
+from project.decorators import in_drh_or_admin
class CustomMenu(Menu):
"""
items.MenuItem('Organigramme par bureau', reverse('admin:rh_regionproxy_changelist')),
]
),
+ items.MenuItem('Requêtes',
+ children=[
+ items.MenuItem('Requêtes sauvegardées', reverse('admin:django_qbe_savedquery_changelist')),
+ items.MenuItem('Constructeur de requêtes', reverse('qbe_form')),
+ ]
+ ),
]
super(CustomMenu, self).init_with_context(context)
# -*- encoding: utf-8 -*-
-################################################################################
+############################################################################
#
# PATCH AJAX SELECT FIELD : pour gérer le fait que certaine FK ne sont pas
-# forcément mappé sur la PK du modèle, dans notre cas ici c'est le modèle
-# Pays qui dispose d'un pk sur son id mais les fk sont mappé sur le champs 'code'
+# forcément mappé sur la PK du modèle, dans notre cas ici c'est le modèle
+# Pays qui dispose d'un pk sur son id mais les fk sont mappé sur le champs
+# 'code'
#
-################################################################################
-from ajax_select import get_lookup
-from django.contrib.admin import site
-from django.db import models
+###########################################################################
+
+from django.conf import settings
+from django.core.urlresolvers import reverse
from django.http import HttpResponse
+from django.forms.util import flatatt
+from django.utils.safestring import mark_safe
+from django.template.loader import render_to_string
+
import ajax_select.views
+from ajax_select import get_lookup
+from ajax_select.fields import AutoCompleteSelectWidget
+
-def fk_ajax_lookup(request,channel):
- """ this view supplies results for both foreign keys and many to many fields """
+def fk_ajax_lookup(request, channel):
+ """
+ this view supplies results for both foreign keys and many to many fields
+ """
- # it should come in as GET unless global $.ajaxSetup({type:"POST"}) has been set
- # in which case we'll support POST
+ # it should come in as GET unless global $.ajaxSetup({type:"POST"}) has
+ # been set in which case we'll support POST
if request.method == "GET":
# we could also insist on an ajax request
if 'q' not in request.GET:
query = request.GET['q']
else:
if 'q' not in request.POST:
- return HttpResponse('') # suspicious
+ return HttpResponse('') # suspicious
query = request.POST['q']
-
+
lookup_channel = get_lookup(channel)
-
+
if query:
- instances = lookup_channel.get_query(query,request)
+ instances = lookup_channel.get_query(query, request)
else:
instances = []
results = []
for item in instances:
itemf = lookup_channel.format_item(item)
- itemf = itemf.replace("\n","").replace("|","¦")
+ itemf = itemf.replace("\n", "").replace("|", "¦")
resultf = lookup_channel.format_result(item)
- resultf = resultf.replace("\n","").replace("|","¦")
+ resultf = resultf.replace("\n", "").replace("|", "¦")
fk = getattr(lookup_channel, 'fk_key', None)
if fk is not None:
id = getattr(item, fk)
else:
id = item.pk
- results.append( "|".join((unicode(id),itemf,resultf)) )
+ results.append("|".join((unicode(id), itemf, resultf)))
return HttpResponse("\n".join(results))
-ajax_select.views.ajax_lookup = fk_ajax_lookup
-
-from ajax_select.fields import AutoCompleteSelectWidget
def value_from_datadict(self, data, files, name):
else:
return None
-AutoCompleteSelectWidget.value_from_datadict = value_from_datadict
-
-from django.conf import settings
-from django.core.urlresolvers import reverse
-from django.utils.safestring import mark_safe
-from django.forms.util import flatatt
-from django.template.loader import render_to_string
def patched_render(self, name, value, attrs=None):
"""
- prevention contre les choses supprimees
+ prevention contre les choses supprimees
"""
# precheck existence valeur
lookup = get_lookup(self.channel)
obj = objs[0]
except IndexError:
raise Exception("%s cannot find object:%s" % (lookup, value))
- current_result = mark_safe(lookup.format_item( obj ) )
+ current_result = mark_safe(lookup.format_item(obj))
else:
current_result = ''
context = {
'name': name,
- 'html_id' : self.html_id,
- 'lookup_url': reverse('ajax_lookup',kwargs={'channel':self.channel}),
+ 'html_id': self.html_id,
+ 'lookup_url': reverse(
+ 'ajax_lookup', kwargs={'channel': self.channel}
+ ),
'current_id': value,
'current_result': current_result,
'help_text': self.help_text,
'extra_attrs': mark_safe(flatatt(final_attrs)),
- 'func_slug': self.html_id.replace("-",""),
- 'add_link' : self.add_link,
- 'admin_media_prefix' : settings.ADMIN_MEDIA_PREFIX
+ 'func_slug': self.html_id.replace("-", ""),
+ 'add_link': self.add_link,
+ 'admin_media_prefix': settings.ADMIN_MEDIA_PREFIX
}
- return mark_safe(render_to_string(('autocompleteselect_%s.html' % self.channel, 'autocompleteselect.html'),context))
-
+ return mark_safe(render_to_string((
+ 'autocompleteselect_%s.html' % self.channel,
+ 'autocompleteselect.html'
+ ), context))
-AutoCompleteSelectWidget.render = patched_render
+def patch_ajax_selects():
+ ajax_select.views.ajax_lookup = fk_ajax_lookup
+ AutoCompleteSelectWidget.render = patched_render
+ AutoCompleteSelectWidget.value_from_datadict = value_from_datadict
+++ /dev/null
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
-
- # Adding model 'Employe'
- db.create_table('rh_v1_employe', (
- ('id', self.gf('django.db.models.fields.IntegerField')(primary_key=True)),
- ('nom', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('prenom', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('nationalite', self.gf('django.db.models.fields.related.ForeignKey')(related_name='nationalite', db_column='nationalite', to=orm['datamaster_modeles.Pays'])),
- ('date_naissance', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
- ('genre', self.gf('django.db.models.fields.CharField')(max_length=1, null=True, blank=True)),
- ('situation_famille', self.gf('django.db.models.fields.CharField')(max_length=1, null=True, blank=True)),
- ('date_entree', self.gf('django.db.models.fields.DateField')(null=True, blank=True)),
- ('tel_domicile', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
- ('tel_cellulaire', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
- ('adresse', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
- ('no_rue', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
- ('ville', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
- ('province', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
- ('code_postal', self.gf('django.db.models.fields.CharField')(max_length=255, null=True, blank=True)),
- ('pays', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='pays', null=True, db_column='pays', to=orm['datamaster_modeles.Pays'])),
- ('date_creation', self.gf('django.db.models.fields.DateField')(auto_now_add=True, blank=True)),
- ('date_maj', self.gf('django.db.models.fields.DateField')(auto_now=True, blank=True)),
- ('commentaire', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
- ))
- db.send_create_signal('rh_v1', ['Employe'])
-
- # Adding model 'Dossier'
- db.create_table('rh_v1_dossier', (
- ('id', self.gf('django.db.models.fields.IntegerField')(primary_key=True)),
- ('code', self.gf('django.db.models.fields.CharField')(unique=True, max_length=10)),
- ('employe', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.Employe'], db_column='employe')),
- ('poste1', self.gf('django.db.models.fields.related.ForeignKey')(related_name='poste1', db_column='poste1', to=orm['rh_v1.Poste'])),
- ('implantation1', self.gf('django.db.models.fields.related.ForeignKey')(related_name='implantation1', db_column='implantation1', to=orm['datamaster_modeles.Implantation'])),
- ('complement1', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
- ('responsable_implantation1', self.gf('django.db.models.fields.IntegerField')()),
- ('poste2', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='poste2', null=True, db_column='poste2', to=orm['rh_v1.Poste'])),
- ('implantation2', self.gf('django.db.models.fields.related.ForeignKey')(related_name='implantation2', db_column='implantation2', to=orm['datamaster_modeles.Implantation'])),
- ('complement2', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
- ('responsable_implantation2', self.gf('django.db.models.fields.IntegerField')()),
- ('service', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.Service'], db_column='service')),
- ('responsable', self.gf('django.db.models.fields.related.ForeignKey')(related_name='responsable', db_column='responsable', to=orm['rh_v1.Employe'])),
- ('remplacement_de', self.gf('django.db.models.fields.related.ForeignKey')(related_name='remplacement_de', db_column='remplacement_de', to=orm['rh_v1.Employe'])),
- ('type', self.gf('django.db.models.fields.CharField')(max_length=1)),
- ('statut', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.Statut'], db_column='statut')),
- ('organisme_bstg', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.OrganismeBstg'], db_column='organisme_bstg')),
- ('classement', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.Classement'], db_column='classement')),
- ('regime_travail', self.gf('django.db.models.fields.IntegerField')()),
- ('mandat_date_debut', self.gf('django.db.models.fields.DateField')()),
- ('mandat_date_fin', self.gf('django.db.models.fields.DateField')()),
- ('contrat_date_debut', self.gf('django.db.models.fields.DateField')()),
- ('contrat_date_fin', self.gf('django.db.models.fields.DateField')()),
- ('type_contrat', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.TypeContrat'], db_column='type_contrat')),
- ('date_creation', self.gf('django.db.models.fields.DateField')(auto_now_add=True, blank=True)),
- ('date_maj', self.gf('django.db.models.fields.DateField')(auto_now=True, blank=True)),
- ('commentaire', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
- ))
- db.send_create_signal('rh_v1', ['Dossier'])
-
- # Adding model 'AyantDroit'
- db.create_table('rh_v1_ayantdroit', (
- ('id', self.gf('django.db.models.fields.IntegerField')(primary_key=True)),
- ('nom', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('prenom', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('employe', self.gf('django.db.models.fields.related.ForeignKey')(related_name='employe', db_column='employe', to=orm['rh_v1.Employe'])),
- ('lien_parente', self.gf('django.db.models.fields.CharField')(max_length=10, null=True, blank=True)),
- ('commentaire', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
- ('actif', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ))
- db.send_create_signal('rh_v1', ['AyantDroit'])
-
- # Adding model 'Remuneration'
- db.create_table('rh_v1_remuneration', (
- ('id', self.gf('django.db.models.fields.IntegerField')(primary_key=True)),
- ('dossier', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.Dossier'], db_column='dossier')),
- ('type', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.TypeRemuneration'], db_column='type')),
- ('type_revalorisation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.TypeRevalorisation'], db_column='type_revalorisation')),
- ('montant', self.gf('django.db.models.fields.FloatField')()),
- ('devise', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.Devise'], to_field='code', db_column='devise')),
- ('date_effective', self.gf('django.db.models.fields.DateField')()),
- ('pourcentage', self.gf('django.db.models.fields.IntegerField')()),
- ('date_creation', self.gf('django.db.models.fields.DateField')(auto_now_add=True, blank=True)),
- ('user_creation', self.gf('django.db.models.fields.IntegerField')()),
- ('desactivation', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ('date_desactivation', self.gf('django.db.models.fields.DateField')()),
- ('user_desactivation', self.gf('django.db.models.fields.IntegerField')()),
- ('annulation', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ('date_annulation', self.gf('django.db.models.fields.DateField')()),
- ('user_annulation', self.gf('django.db.models.fields.IntegerField')()),
- ))
- db.send_create_signal('rh_v1', ['Remuneration'])
-
- # Adding model 'FamilleEmploi'
- db.create_table('rh_v1_familleemploi', (
- ('id', self.gf('django.db.models.fields.IntegerField')(primary_key=True)),
- ('nom', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('actif', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ))
- db.send_create_signal('rh_v1', ['FamilleEmploi'])
-
- # Adding model 'TypePoste'
- db.create_table('rh_v1_typeposte', (
- ('id', self.gf('django.db.models.fields.IntegerField')(primary_key=True)),
- ('nom', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('nom_feminin', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('description', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('is_responsable', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ('famille_emploi', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.FamilleEmploi'], db_column='famille_emploi')),
- ('date_modification', self.gf('django.db.models.fields.DateField')(auto_now=True, blank=True)),
- ('actif', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ))
- db.send_create_signal('rh_v1', ['TypePoste'])
-
- # Adding model 'TypeRemuneration'
- db.create_table('rh_v1_typeremuneration', (
- ('id', self.gf('django.db.models.fields.IntegerField')(primary_key=True)),
- ('nom', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('type_paiement', self.gf('django.db.models.fields.CharField')(max_length=30)),
- ('nature_remuneration', self.gf('django.db.models.fields.CharField')(max_length=30)),
- ('actif', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ))
- db.send_create_signal('rh_v1', ['TypeRemuneration'])
-
- # Adding model 'TypeRevalorisation'
- db.create_table('rh_v1_typerevalorisation', (
- ('id', self.gf('django.db.models.fields.IntegerField')(primary_key=True)),
- ('nom', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('actif', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ))
- db.send_create_signal('rh_v1', ['TypeRevalorisation'])
-
- # Adding model 'Poste'
- db.create_table('rh_v1_poste', (
- ('id', self.gf('django.db.models.fields.IntegerField')(primary_key=True)),
- ('implantation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['datamaster_modeles.Implantation'], db_column='implantation')),
- ('type_poste', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.TypePoste'], db_column='type_poste')),
- ('proportion', self.gf('django.db.models.fields.CharField')(max_length=10)),
- ('date_modification', self.gf('django.db.models.fields.DateField')(auto_now=True, blank=True)),
- ('actif', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ))
- db.send_create_signal('rh_v1', ['Poste'])
-
- # Adding model 'Service'
- db.create_table('rh_v1_service', (
- ('id', self.gf('django.db.models.fields.IntegerField')(primary_key=True)),
- ('nom', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('actif', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ))
- db.send_create_signal('rh_v1', ['Service'])
-
- # Adding model 'OrganismeBstg'
- db.create_table('rh_v1_organismebstg', (
- ('id', self.gf('django.db.models.fields.IntegerField')(primary_key=True)),
- ('nom', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('type', self.gf('django.db.models.fields.CharField')(max_length=10)),
- ('actif', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ))
- db.send_create_signal('rh_v1', ['OrganismeBstg'])
-
- # Adding model 'Statut'
- db.create_table('rh_v1_statut', (
- ('id', self.gf('django.db.models.fields.IntegerField')(primary_key=True)),
- ('code', self.gf('django.db.models.fields.CharField')(unique=True, max_length=25)),
- ('nom', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('type_contrat_categorie', self.gf('django.db.models.fields.CharField')(max_length=10)),
- ('actif', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ))
- db.send_create_signal('rh_v1', ['Statut'])
-
- # Adding model 'Classement'
- db.create_table('rh_v1_classement', (
- ('id', self.gf('django.db.models.fields.IntegerField')(primary_key=True)),
- ('type', self.gf('django.db.models.fields.CharField')(max_length=10)),
- ('echelon', self.gf('django.db.models.fields.IntegerField')()),
- ('degre', self.gf('django.db.models.fields.IntegerField')()),
- ('coefficient', self.gf('django.db.models.fields.FloatField')()),
- ('commentaire', self.gf('django.db.models.fields.TextField')(null=True, blank=True)),
- ('date_modification', self.gf('django.db.models.fields.DateField')(auto_now=True, blank=True)),
- ('actif', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ))
- db.send_create_signal('rh_v1', ['Classement'])
-
- # Adding model 'ValeurPoint'
- db.create_table('rh_v1_valeurpoint', (
- ('id', self.gf('django.db.models.fields.IntegerField')(primary_key=True)),
- ('valeur', self.gf('django.db.models.fields.FloatField')()),
- ('implantation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['datamaster_modeles.Implantation'], db_column='implantation')),
- ('annee', self.gf('django.db.models.fields.IntegerField')()),
- ))
- db.send_create_signal('rh_v1', ['ValeurPoint'])
-
- # Adding model 'TauxChange'
- db.create_table('rh_v1_tauxchange', (
- ('id', self.gf('django.db.models.fields.IntegerField')(primary_key=True)),
- ('devise', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.Devise'], to_field='code', db_column='devise')),
- ('annee', self.gf('django.db.models.fields.IntegerField')()),
- ('taux', self.gf('django.db.models.fields.FloatField')()),
- ('implantation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['datamaster_modeles.Implantation'], db_column='implantation')),
- ))
- db.send_create_signal('rh_v1', ['TauxChange'])
-
- # Adding model 'Devise'
- db.create_table('rh_v1_devise', (
- ('id', self.gf('django.db.models.fields.IntegerField')(primary_key=True)),
- ('code', self.gf('django.db.models.fields.CharField')(unique=True, max_length=10)),
- ('nom', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ))
- db.send_create_signal('rh_v1', ['Devise'])
-
- # Adding model 'TypeContrat'
- db.create_table('rh_v1_typecontrat', (
- ('id', self.gf('django.db.models.fields.IntegerField')(primary_key=True)),
- ('nom', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('nom_long', self.gf('django.db.models.fields.CharField')(max_length=255)),
- ('categorie', self.gf('django.db.models.fields.CharField')(max_length=10)),
- ('actif', self.gf('django.db.models.fields.BooleanField')(default=False)),
- ))
- db.send_create_signal('rh_v1', ['TypeContrat'])
-
-
- def backwards(self, orm):
-
- # Deleting model 'Employe'
- db.delete_table('rh_v1_employe')
-
- # Deleting model 'Dossier'
- db.delete_table('rh_v1_dossier')
-
- # Deleting model 'AyantDroit'
- db.delete_table('rh_v1_ayantdroit')
-
- # Deleting model 'Remuneration'
- db.delete_table('rh_v1_remuneration')
-
- # Deleting model 'FamilleEmploi'
- db.delete_table('rh_v1_familleemploi')
-
- # Deleting model 'TypePoste'
- db.delete_table('rh_v1_typeposte')
-
- # Deleting model 'TypeRemuneration'
- db.delete_table('rh_v1_typeremuneration')
-
- # Deleting model 'TypeRevalorisation'
- db.delete_table('rh_v1_typerevalorisation')
-
- # Deleting model 'Poste'
- db.delete_table('rh_v1_poste')
-
- # Deleting model 'Service'
- db.delete_table('rh_v1_service')
-
- # Deleting model 'OrganismeBstg'
- db.delete_table('rh_v1_organismebstg')
-
- # Deleting model 'Statut'
- db.delete_table('rh_v1_statut')
-
- # Deleting model 'Classement'
- db.delete_table('rh_v1_classement')
-
- # Deleting model 'ValeurPoint'
- db.delete_table('rh_v1_valeurpoint')
-
- # Deleting model 'TauxChange'
- db.delete_table('rh_v1_tauxchange')
-
- # Deleting model 'Devise'
- db.delete_table('rh_v1_devise')
-
- # Deleting model 'TypeContrat'
- db.delete_table('rh_v1_typecontrat')
-
-
- models = {
- 'datamaster_modeles.bureau': {
- 'Meta': {'object_name': 'Bureau', 'db_table': "u'ref_bureau'"},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'implantation'"}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Region']", 'db_column': "'region'"})
- },
- 'datamaster_modeles.implantation': {
- 'Meta': {'ordering': "('nom',)", 'object_name': 'Implantation', 'db_table': "u'ref_implantation'"},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'adresse_physique_bureau': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_code_postal': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
- 'adresse_physique_code_postal_avant_ville': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
- 'adresse_physique_no': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
- 'adresse_physique_pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'impl_adresse_physique'", 'db_column': "'adresse_physique_pays'", 'to': "orm['datamaster_modeles.Pays']"}),
- 'adresse_physique_precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_precision_avant': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_region': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_ville': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'adresse_postale_boite_postale': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_postale_bureau': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_postale_code_postal': ('django.db.models.fields.CharField', [], {'max_length': '20', 'blank': 'True'}),
- 'adresse_postale_code_postal_avant_ville': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
- 'adresse_postale_no': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
- 'adresse_postale_pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'impl_adresse_postale'", 'db_column': "'adresse_postale_pays'", 'to': "orm['datamaster_modeles.Pays']"}),
- 'adresse_postale_precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_postale_precision_avant': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_postale_region': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_postale_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_postale_ville': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'bureau_rattachement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'bureau_rattachement'"}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'code_meteo': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'commentaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'courriel': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
- 'courriel_interne': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
- 'date_extension': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_fermeture': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_inauguration': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_ouverture': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'fax': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'fax_interne': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'fuseau_horaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'hebergement_convention': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
- 'hebergement_convention_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'hebergement_etablissement': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'modif_date': ('django.db.models.fields.DateField', [], {}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Region']", 'db_column': "'region'"}),
- 'remarque': ('django.db.models.fields.TextField', [], {}),
- 'responsable_implantation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
- 'statut': ('django.db.models.fields.IntegerField', [], {}),
- 'telephone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'telephone_interne': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '255', 'blank': 'True'})
- },
- 'datamaster_modeles.pays': {
- 'Meta': {'ordering': "('nom',)", 'object_name': 'Pays', 'db_table': "u'ref_pays'"},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'code': ('django.db.models.fields.CharField', [], {'max_length': '2', 'primary_key': 'True'}),
- 'code_bureau': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Bureau']", 'to_field': "'code'", 'db_column': "'code_bureau'"}),
- 'code_iso3': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3', 'blank': 'True'}),
- 'developpement': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.IntegerField', [], {}),
- 'monnaie': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nord_sud': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Region']", 'db_column': "'region'"})
- },
- 'datamaster_modeles.region': {
- 'Meta': {'object_name': 'Region', 'db_table': "u'ref_region'"},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation_bureau': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'gere_region'", 'db_column': "'implantation_bureau'", 'to': "orm['datamaster_modeles.Implantation']"}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.ayantdroit': {
- 'Meta': {'object_name': 'AyantDroit'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'employe': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'employe'", 'db_column': "'employe'", 'to': "orm['rh_v1.Employe']"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'lien_parente': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'prenom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.classement': {
- 'Meta': {'object_name': 'Classement'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'coefficient': ('django.db.models.fields.FloatField', [], {}),
- 'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'degre': ('django.db.models.fields.IntegerField', [], {}),
- 'echelon': ('django.db.models.fields.IntegerField', [], {}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'type': ('django.db.models.fields.CharField', [], {'max_length': '10'})
- },
- 'rh_v1.devise': {
- 'Meta': {'object_name': 'Devise'},
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.dossier': {
- 'Meta': {'object_name': 'Dossier'},
- 'classement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Classement']", 'db_column': "'classement'"}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'}),
- 'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'complement1': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'complement2': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'contrat_date_debut': ('django.db.models.fields.DateField', [], {}),
- 'contrat_date_fin': ('django.db.models.fields.DateField', [], {}),
- 'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'date_maj': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'employe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Employe']", 'db_column': "'employe'"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation1': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'implantation1'", 'db_column': "'implantation1'", 'to': "orm['datamaster_modeles.Implantation']"}),
- 'implantation2': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'implantation2'", 'db_column': "'implantation2'", 'to': "orm['datamaster_modeles.Implantation']"}),
- 'mandat_date_debut': ('django.db.models.fields.DateField', [], {}),
- 'mandat_date_fin': ('django.db.models.fields.DateField', [], {}),
- 'organisme_bstg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.OrganismeBstg']", 'db_column': "'organisme_bstg'"}),
- 'poste1': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'poste1'", 'db_column': "'poste1'", 'to': "orm['rh_v1.Poste']"}),
- 'poste2': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'poste2'", 'null': 'True', 'db_column': "'poste2'", 'to': "orm['rh_v1.Poste']"}),
- 'regime_travail': ('django.db.models.fields.IntegerField', [], {}),
- 'remplacement_de': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'remplacement_de'", 'db_column': "'remplacement_de'", 'to': "orm['rh_v1.Employe']"}),
- 'responsable': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'responsable'", 'db_column': "'responsable'", 'to': "orm['rh_v1.Employe']"}),
- 'responsable_implantation1': ('django.db.models.fields.IntegerField', [], {}),
- 'responsable_implantation2': ('django.db.models.fields.IntegerField', [], {}),
- 'service': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Service']", 'db_column': "'service'"}),
- 'statut': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Statut']", 'db_column': "'statut'"}),
- 'type': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
- 'type_contrat': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypeContrat']", 'db_column': "'type_contrat'"})
- },
- 'rh_v1.employe': {
- 'Meta': {'object_name': 'Employe'},
- 'adresse': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'code_postal': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'date_entree': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_maj': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'date_naissance': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'genre': ('django.db.models.fields.CharField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nationalite': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'nationalite'", 'db_column': "'nationalite'", 'to': "orm['datamaster_modeles.Pays']"}),
- 'no_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pays': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'pays'", 'null': 'True', 'db_column': "'pays'", 'to': "orm['datamaster_modeles.Pays']"}),
- 'prenom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'province': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'situation_famille': ('django.db.models.fields.CharField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}),
- 'tel_cellulaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'tel_domicile': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'ville': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
- },
- 'rh_v1.familleemploi': {
- 'Meta': {'object_name': 'FamilleEmploi'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.organismebstg': {
- 'Meta': {'object_name': 'OrganismeBstg'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.CharField', [], {'max_length': '10'})
- },
- 'rh_v1.poste': {
- 'Meta': {'object_name': 'Poste'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'implantation'"}),
- 'proportion': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
- 'type_poste': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypePoste']", 'db_column': "'type_poste'"})
- },
- 'rh_v1.remuneration': {
- 'Meta': {'object_name': 'Remuneration'},
- 'annulation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'date_annulation': ('django.db.models.fields.DateField', [], {}),
- 'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'date_desactivation': ('django.db.models.fields.DateField', [], {}),
- 'date_effective': ('django.db.models.fields.DateField', [], {}),
- 'desactivation': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'devise': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Devise']", 'to_field': "'code'", 'db_column': "'devise'"}),
- 'dossier': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Dossier']", 'db_column': "'dossier'"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'montant': ('django.db.models.fields.FloatField', [], {}),
- 'pourcentage': ('django.db.models.fields.IntegerField', [], {}),
- 'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypeRemuneration']", 'db_column': "'type'"}),
- 'type_revalorisation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypeRevalorisation']", 'db_column': "'type_revalorisation'"}),
- 'user_annulation': ('django.db.models.fields.IntegerField', [], {}),
- 'user_creation': ('django.db.models.fields.IntegerField', [], {}),
- 'user_desactivation': ('django.db.models.fields.IntegerField', [], {})
- },
- 'rh_v1.service': {
- 'Meta': {'object_name': 'Service'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.statut': {
- 'Meta': {'object_name': 'Statut'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type_contrat_categorie': ('django.db.models.fields.CharField', [], {'max_length': '10'})
- },
- 'rh_v1.tauxchange': {
- 'Meta': {'object_name': 'TauxChange'},
- 'annee': ('django.db.models.fields.IntegerField', [], {}),
- 'devise': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Devise']", 'to_field': "'code'", 'db_column': "'devise'"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'implantation'"}),
- 'taux': ('django.db.models.fields.FloatField', [], {})
- },
- 'rh_v1.typecontrat': {
- 'Meta': {'object_name': 'TypeContrat'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'categorie': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.typeposte': {
- 'Meta': {'object_name': 'TypePoste'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'famille_emploi': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.FamilleEmploi']", 'db_column': "'famille_emploi'"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'is_responsable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nom_feminin': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.typeremuneration': {
- 'Meta': {'object_name': 'TypeRemuneration'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nature_remuneration': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type_paiement': ('django.db.models.fields.CharField', [], {'max_length': '30'})
- },
- 'rh_v1.typerevalorisation': {
- 'Meta': {'object_name': 'TypeRevalorisation'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.valeurpoint': {
- 'Meta': {'object_name': 'ValeurPoint'},
- 'annee': ('django.db.models.fields.IntegerField', [], {}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'implantation'"}),
- 'valeur': ('django.db.models.fields.FloatField', [], {})
- }
- }
-
- complete_apps = ['rh_v1']
+++ /dev/null
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
-
- # Changing field 'Employe.nationalite'
- db.alter_column('rh_v1_employe', 'nationalite', self.gf('django.db.models.fields.related.ForeignKey')(to_field='code', db_column='nationalite', to=orm['datamaster_modeles.Pays']))
-
- # Changing field 'Employe.pays'
- db.alter_column('rh_v1_employe', 'pays', self.gf('django.db.models.fields.related.ForeignKey')(db_column='pays', to_field='code', to=orm['datamaster_modeles.Pays'], null=True))
-
- # Changing field 'Remuneration.user_annulation'
- db.alter_column('rh_v1_remuneration', 'user_annulation', self.gf('django.db.models.fields.IntegerField')(null=True))
-
- # Changing field 'Remuneration.date_desactivation'
- db.alter_column('rh_v1_remuneration', 'date_desactivation', self.gf('django.db.models.fields.DateField')(null=True))
-
- # Changing field 'Remuneration.pourcentage'
- db.alter_column('rh_v1_remuneration', 'pourcentage', self.gf('django.db.models.fields.IntegerField')(null=True))
-
- # Changing field 'Remuneration.montant'
- db.alter_column('rh_v1_remuneration', 'montant', self.gf('django.db.models.fields.FloatField')(null=True))
-
- # Changing field 'Remuneration.user_creation'
- db.alter_column('rh_v1_remuneration', 'user_creation', self.gf('django.db.models.fields.IntegerField')(null=True))
-
- # Changing field 'Remuneration.user_desactivation'
- db.alter_column('rh_v1_remuneration', 'user_desactivation', self.gf('django.db.models.fields.IntegerField')(null=True))
-
- # Changing field 'Remuneration.annulation'
- db.alter_column('rh_v1_remuneration', 'annulation', self.gf('django.db.models.fields.NullBooleanField')(null=True))
-
- # Changing field 'Remuneration.devise'
- db.alter_column('rh_v1_remuneration', 'devise', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.Devise'], to_field='code', null=True, db_column='devise'))
-
- # Changing field 'Remuneration.date_effective'
- db.alter_column('rh_v1_remuneration', 'date_effective', self.gf('django.db.models.fields.DateField')(null=True))
-
- # Changing field 'Remuneration.type_revalorisation'
- db.alter_column('rh_v1_remuneration', 'type_revalorisation', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.TypeRevalorisation'], null=True, db_column='type_revalorisation'))
-
- # Changing field 'Remuneration.date_annulation'
- db.alter_column('rh_v1_remuneration', 'date_annulation', self.gf('django.db.models.fields.DateField')(null=True))
-
- # Changing field 'Remuneration.desactivation'
- db.alter_column('rh_v1_remuneration', 'desactivation', self.gf('django.db.models.fields.NullBooleanField')(null=True))
-
-
- def backwards(self, orm):
-
- # Changing field 'Employe.nationalite'
- db.alter_column('rh_v1_employe', 'nationalite', self.gf('django.db.models.fields.related.ForeignKey')(db_column='nationalite', to=orm['datamaster_modeles.Pays']))
-
- # Changing field 'Employe.pays'
- db.alter_column('rh_v1_employe', 'pays', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['datamaster_modeles.Pays'], db_column='pays'))
-
- # Changing field 'Remuneration.user_annulation'
- db.alter_column('rh_v1_remuneration', 'user_annulation', self.gf('django.db.models.fields.IntegerField')(default=False))
-
- # Changing field 'Remuneration.date_desactivation'
- db.alter_column('rh_v1_remuneration', 'date_desactivation', self.gf('django.db.models.fields.DateField')(default=datetime.date(2011, 4, 5)))
-
- # Changing field 'Remuneration.pourcentage'
- db.alter_column('rh_v1_remuneration', 'pourcentage', self.gf('django.db.models.fields.IntegerField')(default=0))
-
- # Changing field 'Remuneration.montant'
- db.alter_column('rh_v1_remuneration', 'montant', self.gf('django.db.models.fields.FloatField')(default=0))
-
- # Changing field 'Remuneration.user_creation'
- db.alter_column('rh_v1_remuneration', 'user_creation', self.gf('django.db.models.fields.IntegerField')(default=datetime.date(2011, 4, 5)))
-
- # Changing field 'Remuneration.user_desactivation'
- db.alter_column('rh_v1_remuneration', 'user_desactivation', self.gf('django.db.models.fields.IntegerField')(default=0))
-
- # Changing field 'Remuneration.annulation'
- db.alter_column('rh_v1_remuneration', 'annulation', self.gf('django.db.models.fields.BooleanField')())
-
- # Changing field 'Remuneration.devise'
- db.alter_column('rh_v1_remuneration', 'devise', self.gf('django.db.models.fields.related.ForeignKey')(default=0, to=orm['rh_v1.Devise'], to_field='code', db_column='devise'))
-
- # Changing field 'Remuneration.date_effective'
- db.alter_column('rh_v1_remuneration', 'date_effective', self.gf('django.db.models.fields.DateField')(default=datetime.date(2011, 4, 5)))
-
- # Changing field 'Remuneration.type_revalorisation'
- db.alter_column('rh_v1_remuneration', 'type_revalorisation', self.gf('django.db.models.fields.related.ForeignKey')(default=0, to=orm['rh_v1.TypeRevalorisation'], db_column='type_revalorisation'))
-
- # Changing field 'Remuneration.date_annulation'
- db.alter_column('rh_v1_remuneration', 'date_annulation', self.gf('django.db.models.fields.DateField')(default=datetime.date(2011, 4, 5)))
-
- # Changing field 'Remuneration.desactivation'
- db.alter_column('rh_v1_remuneration', 'desactivation', self.gf('django.db.models.fields.BooleanField')())
-
-
- models = {
- 'datamaster_modeles.bureau': {
- 'Meta': {'object_name': 'Bureau', 'db_table': "u'ref_bureau'"},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'implantation'"}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Region']", 'db_column': "'region'"})
- },
- 'datamaster_modeles.implantation': {
- 'Meta': {'object_name': 'Implantation', 'db_table': "u'ref_implantation'"},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'adresse_physique_bureau': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_code_postal': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
- 'adresse_physique_code_postal_avant_ville': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
- 'adresse_physique_no': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
- 'adresse_physique_pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'impl_adresse_physique'", 'to_field': "'code'", 'db_column': "'adresse_physique_pays'", 'to': "orm['datamaster_modeles.Pays']"}),
- 'adresse_physique_precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_precision_avant': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_region': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_ville': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'adresse_postale_boite_postale': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_bureau': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_code_postal': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_code_postal_avant_ville': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
- 'adresse_postale_no': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'impl_adresse_postale'", 'to_field': "'code'", 'db_column': "'adresse_postale_pays'", 'to': "orm['datamaster_modeles.Pays']"}),
- 'adresse_postale_precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_precision_avant': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_region': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_ville': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'bureau_rattachement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'bureau_rattachement'"}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'code_meteo': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'commentaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'courriel': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
- 'courriel_interne': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
- 'date_extension': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_fermeture': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_inauguration': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_ouverture': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'fax': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'fax_interne': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'fuseau_horaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'hebergement_convention': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
- 'hebergement_convention_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'hebergement_etablissement': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'modif_date': ('django.db.models.fields.DateField', [], {}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Region']", 'db_column': "'region'"}),
- 'remarque': ('django.db.models.fields.TextField', [], {}),
- 'responsable_implantation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
- 'statut': ('django.db.models.fields.IntegerField', [], {}),
- 'telephone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'telephone_interne': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '255', 'blank': 'True'})
- },
- 'datamaster_modeles.pays': {
- 'Meta': {'object_name': 'Pays', 'db_table': "u'ref_pays'"},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2'}),
- 'code_bureau': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Bureau']", 'to_field': "'code'", 'db_column': "'code_bureau'"}),
- 'code_iso3': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3', 'blank': 'True'}),
- 'developpement': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'monnaie': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nord_sud': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Region']", 'db_column': "'region'"})
- },
- 'datamaster_modeles.region': {
- 'Meta': {'object_name': 'Region', 'db_table': "u'ref_region'"},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation_bureau': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'gere_region'", 'db_column': "'implantation_bureau'", 'to': "orm['datamaster_modeles.Implantation']"}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.ayantdroit': {
- 'Meta': {'object_name': 'AyantDroit'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'employe': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'employe'", 'db_column': "'employe'", 'to': "orm['rh_v1.Employe']"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'lien_parente': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'prenom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.classement': {
- 'Meta': {'object_name': 'Classement'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'coefficient': ('django.db.models.fields.FloatField', [], {}),
- 'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'degre': ('django.db.models.fields.IntegerField', [], {}),
- 'echelon': ('django.db.models.fields.IntegerField', [], {}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'type': ('django.db.models.fields.CharField', [], {'max_length': '10'})
- },
- 'rh_v1.devise': {
- 'Meta': {'object_name': 'Devise'},
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.dossier': {
- 'Meta': {'object_name': 'Dossier'},
- 'classement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Classement']", 'db_column': "'classement'"}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'}),
- 'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'complement1': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'complement2': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'contrat_date_debut': ('django.db.models.fields.DateField', [], {}),
- 'contrat_date_fin': ('django.db.models.fields.DateField', [], {}),
- 'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'date_maj': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'employe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Employe']", 'db_column': "'employe'"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation1': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'implantation1'", 'db_column': "'implantation1'", 'to': "orm['datamaster_modeles.Implantation']"}),
- 'implantation2': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'implantation2'", 'db_column': "'implantation2'", 'to': "orm['datamaster_modeles.Implantation']"}),
- 'mandat_date_debut': ('django.db.models.fields.DateField', [], {}),
- 'mandat_date_fin': ('django.db.models.fields.DateField', [], {}),
- 'organisme_bstg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.OrganismeBstg']", 'db_column': "'organisme_bstg'"}),
- 'poste1': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'poste1'", 'db_column': "'poste1'", 'to': "orm['rh_v1.Poste']"}),
- 'poste2': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'poste2'", 'null': 'True', 'db_column': "'poste2'", 'to': "orm['rh_v1.Poste']"}),
- 'regime_travail': ('django.db.models.fields.IntegerField', [], {}),
- 'remplacement_de': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'remplacement_de'", 'db_column': "'remplacement_de'", 'to': "orm['rh_v1.Employe']"}),
- 'responsable': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'responsable'", 'db_column': "'responsable'", 'to': "orm['rh_v1.Employe']"}),
- 'responsable_implantation1': ('django.db.models.fields.IntegerField', [], {}),
- 'responsable_implantation2': ('django.db.models.fields.IntegerField', [], {}),
- 'service': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Service']", 'db_column': "'service'"}),
- 'statut': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Statut']", 'db_column': "'statut'"}),
- 'type': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
- 'type_contrat': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypeContrat']", 'db_column': "'type_contrat'"})
- },
- 'rh_v1.employe': {
- 'Meta': {'object_name': 'Employe'},
- 'adresse': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'code_postal': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'date_entree': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_maj': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'date_naissance': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'genre': ('django.db.models.fields.CharField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nationalite': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'nationalite'", 'to_field': "'code'", 'db_column': "'nationalite'", 'to': "orm['datamaster_modeles.Pays']"}),
- 'no_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'pays'", 'db_column': "'pays'", 'to_field': "'code'", 'to': "orm['datamaster_modeles.Pays']", 'blank': 'True', 'null': 'True'}),
- 'prenom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'province': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'situation_famille': ('django.db.models.fields.CharField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}),
- 'tel_cellulaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'tel_domicile': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'ville': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
- },
- 'rh_v1.familleemploi': {
- 'Meta': {'object_name': 'FamilleEmploi'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.organismebstg': {
- 'Meta': {'object_name': 'OrganismeBstg'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.CharField', [], {'max_length': '10'})
- },
- 'rh_v1.poste': {
- 'Meta': {'object_name': 'Poste'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'implantation'", 'to': "orm['datamaster_modeles.Implantation']"}),
- 'proportion': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
- 'type_poste': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypePoste']", 'db_column': "'type_poste'"})
- },
- 'rh_v1.remuneration': {
- 'Meta': {'object_name': 'Remuneration'},
- 'annulation': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
- 'date_annulation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_effective': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'desactivation': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
- 'devise': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Devise']", 'to_field': "'code'", 'null': 'True', 'db_column': "'devise'", 'blank': 'True'}),
- 'dossier': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Dossier']", 'db_column': "'dossier'"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'montant': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
- 'pourcentage': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
- 'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypeRemuneration']", 'db_column': "'type'"}),
- 'type_revalorisation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypeRevalorisation']", 'null': 'True', 'db_column': "'type_revalorisation'", 'blank': 'True'}),
- 'user_annulation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
- 'user_creation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
- 'user_desactivation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- },
- 'rh_v1.service': {
- 'Meta': {'object_name': 'Service'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.statut': {
- 'Meta': {'object_name': 'Statut'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type_contrat_categorie': ('django.db.models.fields.CharField', [], {'max_length': '10'})
- },
- 'rh_v1.tauxchange': {
- 'Meta': {'object_name': 'TauxChange'},
- 'annee': ('django.db.models.fields.IntegerField', [], {}),
- 'devise': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Devise']", 'to_field': "'code'", 'db_column': "'devise'"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'implantation'"}),
- 'taux': ('django.db.models.fields.FloatField', [], {})
- },
- 'rh_v1.typecontrat': {
- 'Meta': {'object_name': 'TypeContrat'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'categorie': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.typeposte': {
- 'Meta': {'object_name': 'TypePoste'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'famille_emploi': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.FamilleEmploi']", 'db_column': "'famille_emploi'"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'is_responsable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nom_feminin': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.typeremuneration': {
- 'Meta': {'object_name': 'TypeRemuneration'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nature_remuneration': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type_paiement': ('django.db.models.fields.CharField', [], {'max_length': '30'})
- },
- 'rh_v1.typerevalorisation': {
- 'Meta': {'object_name': 'TypeRevalorisation'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.valeurpoint': {
- 'Meta': {'object_name': 'ValeurPoint'},
- 'annee': ('django.db.models.fields.IntegerField', [], {}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'implantation'"}),
- 'valeur': ('django.db.models.fields.FloatField', [], {})
- }
- }
-
- complete_apps = ['rh_v1']
+++ /dev/null
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
-
- # Changing field 'TauxChange.devise'
- db.alter_column('rh_v1_tauxchange', 'devise', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.Devise'], db_column='devise'))
-
-
- def backwards(self, orm):
-
- # Changing field 'TauxChange.devise'
- db.alter_column('rh_v1_tauxchange', 'devise', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.Devise'], to_field='code', db_column='devise'))
-
-
- models = {
- 'datamaster_modeles.bureau': {
- 'Meta': {'object_name': 'Bureau', 'db_table': "u'ref_bureau'"},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'implantation'"}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Region']", 'db_column': "'region'"})
- },
- 'datamaster_modeles.implantation': {
- 'Meta': {'object_name': 'Implantation', 'db_table': "u'ref_implantation'"},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'adresse_physique_bureau': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_code_postal': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
- 'adresse_physique_code_postal_avant_ville': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
- 'adresse_physique_no': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
- 'adresse_physique_pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'impl_adresse_physique'", 'to_field': "'code'", 'db_column': "'adresse_physique_pays'", 'to': "orm['datamaster_modeles.Pays']"}),
- 'adresse_physique_precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_precision_avant': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_region': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_ville': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'adresse_postale_boite_postale': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_bureau': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_code_postal': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_code_postal_avant_ville': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
- 'adresse_postale_no': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'impl_adresse_postale'", 'to_field': "'code'", 'db_column': "'adresse_postale_pays'", 'to': "orm['datamaster_modeles.Pays']"}),
- 'adresse_postale_precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_precision_avant': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_region': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_ville': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'bureau_rattachement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'bureau_rattachement'"}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'code_meteo': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'commentaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'courriel': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
- 'courriel_interne': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
- 'date_extension': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_fermeture': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_inauguration': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_ouverture': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'fax': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'fax_interne': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'fuseau_horaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'hebergement_convention': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
- 'hebergement_convention_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'hebergement_etablissement': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'modif_date': ('django.db.models.fields.DateField', [], {}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Region']", 'db_column': "'region'"}),
- 'remarque': ('django.db.models.fields.TextField', [], {}),
- 'responsable_implantation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
- 'statut': ('django.db.models.fields.IntegerField', [], {}),
- 'telephone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'telephone_interne': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '255', 'blank': 'True'})
- },
- 'datamaster_modeles.pays': {
- 'Meta': {'object_name': 'Pays', 'db_table': "u'ref_pays'"},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2'}),
- 'code_bureau': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Bureau']", 'to_field': "'code'", 'db_column': "'code_bureau'"}),
- 'code_iso3': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3', 'blank': 'True'}),
- 'developpement': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'monnaie': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nord_sud': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Region']", 'db_column': "'region'"})
- },
- 'datamaster_modeles.region': {
- 'Meta': {'object_name': 'Region', 'db_table': "u'ref_region'"},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation_bureau': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'gere_region'", 'db_column': "'implantation_bureau'", 'to': "orm['datamaster_modeles.Implantation']"}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.ayantdroit': {
- 'Meta': {'object_name': 'AyantDroit'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'employe': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'employe'", 'db_column': "'employe'", 'to': "orm['rh_v1.Employe']"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'lien_parente': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'prenom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.classement': {
- 'Meta': {'object_name': 'Classement'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'coefficient': ('django.db.models.fields.FloatField', [], {}),
- 'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'degre': ('django.db.models.fields.IntegerField', [], {}),
- 'echelon': ('django.db.models.fields.IntegerField', [], {}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'type': ('django.db.models.fields.CharField', [], {'max_length': '10'})
- },
- 'rh_v1.devise': {
- 'Meta': {'object_name': 'Devise'},
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.dossier': {
- 'Meta': {'object_name': 'Dossier'},
- 'classement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Classement']", 'db_column': "'classement'"}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'}),
- 'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'complement1': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'complement2': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'contrat_date_debut': ('django.db.models.fields.DateField', [], {}),
- 'contrat_date_fin': ('django.db.models.fields.DateField', [], {}),
- 'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'date_maj': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'employe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Employe']", 'db_column': "'employe'"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation1': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'implantation1'", 'db_column': "'implantation1'", 'to': "orm['datamaster_modeles.Implantation']"}),
- 'implantation2': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'implantation2'", 'db_column': "'implantation2'", 'to': "orm['datamaster_modeles.Implantation']"}),
- 'mandat_date_debut': ('django.db.models.fields.DateField', [], {}),
- 'mandat_date_fin': ('django.db.models.fields.DateField', [], {}),
- 'organisme_bstg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.OrganismeBstg']", 'db_column': "'organisme_bstg'"}),
- 'poste1': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'poste1'", 'db_column': "'poste1'", 'to': "orm['rh_v1.Poste']"}),
- 'poste2': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'poste2'", 'null': 'True', 'db_column': "'poste2'", 'to': "orm['rh_v1.Poste']"}),
- 'regime_travail': ('django.db.models.fields.IntegerField', [], {}),
- 'remplacement_de': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'remplacement_de'", 'db_column': "'remplacement_de'", 'to': "orm['rh_v1.Employe']"}),
- 'responsable': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'responsable'", 'db_column': "'responsable'", 'to': "orm['rh_v1.Employe']"}),
- 'responsable_implantation1': ('django.db.models.fields.IntegerField', [], {}),
- 'responsable_implantation2': ('django.db.models.fields.IntegerField', [], {}),
- 'service': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Service']", 'db_column': "'service'"}),
- 'statut': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Statut']", 'db_column': "'statut'"}),
- 'type': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
- 'type_contrat': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypeContrat']", 'db_column': "'type_contrat'"})
- },
- 'rh_v1.employe': {
- 'Meta': {'object_name': 'Employe'},
- 'adresse': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'code_postal': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'date_entree': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_maj': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'date_naissance': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'genre': ('django.db.models.fields.CharField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nationalite': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'nationalite'", 'to_field': "'code'", 'db_column': "'nationalite'", 'to': "orm['datamaster_modeles.Pays']"}),
- 'no_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'pays'", 'db_column': "'pays'", 'to_field': "'code'", 'to': "orm['datamaster_modeles.Pays']", 'blank': 'True', 'null': 'True'}),
- 'prenom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'province': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'situation_famille': ('django.db.models.fields.CharField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}),
- 'tel_cellulaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'tel_domicile': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'ville': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
- },
- 'rh_v1.familleemploi': {
- 'Meta': {'object_name': 'FamilleEmploi'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.organismebstg': {
- 'Meta': {'object_name': 'OrganismeBstg'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.CharField', [], {'max_length': '10'})
- },
- 'rh_v1.poste': {
- 'Meta': {'object_name': 'Poste'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'implantation'", 'to': "orm['datamaster_modeles.Implantation']"}),
- 'proportion': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
- 'type_poste': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypePoste']", 'db_column': "'type_poste'"})
- },
- 'rh_v1.remuneration': {
- 'Meta': {'object_name': 'Remuneration'},
- 'annulation': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
- 'date_annulation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_effective': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'desactivation': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
- 'devise': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Devise']", 'to_field': "'code'", 'null': 'True', 'db_column': "'devise'", 'blank': 'True'}),
- 'dossier': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Dossier']", 'db_column': "'dossier'"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'montant': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
- 'pourcentage': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
- 'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypeRemuneration']", 'db_column': "'type'"}),
- 'type_revalorisation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypeRevalorisation']", 'null': 'True', 'db_column': "'type_revalorisation'", 'blank': 'True'}),
- 'user_annulation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
- 'user_creation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
- 'user_desactivation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- },
- 'rh_v1.service': {
- 'Meta': {'object_name': 'Service'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.statut': {
- 'Meta': {'object_name': 'Statut'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type_contrat_categorie': ('django.db.models.fields.CharField', [], {'max_length': '10'})
- },
- 'rh_v1.tauxchange': {
- 'Meta': {'object_name': 'TauxChange'},
- 'annee': ('django.db.models.fields.IntegerField', [], {}),
- 'devise': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Devise']", 'db_column': "'devise'"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'implantation'"}),
- 'taux': ('django.db.models.fields.FloatField', [], {})
- },
- 'rh_v1.typecontrat': {
- 'Meta': {'object_name': 'TypeContrat'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'categorie': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.typeposte': {
- 'Meta': {'object_name': 'TypePoste'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'famille_emploi': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.FamilleEmploi']", 'db_column': "'famille_emploi'"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'is_responsable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nom_feminin': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.typeremuneration': {
- 'Meta': {'object_name': 'TypeRemuneration'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nature_remuneration': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type_paiement': ('django.db.models.fields.CharField', [], {'max_length': '30'})
- },
- 'rh_v1.typerevalorisation': {
- 'Meta': {'object_name': 'TypeRevalorisation'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.valeurpoint': {
- 'Meta': {'object_name': 'ValeurPoint'},
- 'annee': ('django.db.models.fields.IntegerField', [], {}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'implantation'"}),
- 'valeur': ('django.db.models.fields.FloatField', [], {})
- }
- }
-
- complete_apps = ['rh_v1']
+++ /dev/null
-# encoding: utf-8
-import datetime
-from south.db import db
-from south.v2 import SchemaMigration
-from django.db import models
-
-class Migration(SchemaMigration):
-
- def forwards(self, orm):
-
- # Changing field 'Dossier.classement'
- db.alter_column('rh_v1_dossier', 'classement', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.Classement'], null=True, db_column='classement'))
-
- # Changing field 'Dossier.responsable'
- db.alter_column('rh_v1_dossier', 'responsable', self.gf('django.db.models.fields.related.ForeignKey')(null=True, db_column='responsable', to=orm['rh_v1.Employe']))
-
- # Changing field 'Dossier.type_contrat'
- db.alter_column('rh_v1_dossier', 'type_contrat', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.TypeContrat'], null=True, db_column='type_contrat'))
-
- # Changing field 'Dossier.organisme_bstg'
- db.alter_column('rh_v1_dossier', 'organisme_bstg', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.OrganismeBstg'], null=True, db_column='organisme_bstg'))
-
- # Changing field 'Dossier.service'
- db.alter_column('rh_v1_dossier', 'service', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.Service'], null=True, db_column='service'))
-
- # Changing field 'Dossier.implantation1'
- db.alter_column('rh_v1_dossier', 'implantation1', self.gf('django.db.models.fields.related.ForeignKey')(null=True, db_column='implantation1', to=orm['datamaster_modeles.Implantation']))
-
- # Changing field 'Dossier.implantation2'
- db.alter_column('rh_v1_dossier', 'implantation2', self.gf('django.db.models.fields.related.ForeignKey')(null=True, db_column='implantation2', to=orm['datamaster_modeles.Implantation']))
-
- # Changing field 'Dossier.statut'
- db.alter_column('rh_v1_dossier', 'statut', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['rh_v1.Statut'], null=True, db_column='statut'))
-
- # Changing field 'Dossier.remplacement_de'
- db.alter_column('rh_v1_dossier', 'remplacement_de', self.gf('django.db.models.fields.related.ForeignKey')(null=True, db_column='remplacement_de', to=orm['rh_v1.Employe']))
-
- # Changing field 'Dossier.mandat_date_fin'
- db.alter_column('rh_v1_dossier', 'mandat_date_fin', self.gf('django.db.models.fields.DateField')(null=True))
-
-
- def backwards(self, orm):
-
- # Changing field 'Dossier.classement'
- db.alter_column('rh_v1_dossier', 'classement', self.gf('django.db.models.fields.related.ForeignKey')(default=0, to=orm['rh_v1.Classement'], db_column='classement'))
-
- # Changing field 'Dossier.responsable'
- db.alter_column('rh_v1_dossier', 'responsable', self.gf('django.db.models.fields.related.ForeignKey')(default=0, db_column='responsable', to=orm['rh_v1.Employe']))
-
- # Changing field 'Dossier.type_contrat'
- db.alter_column('rh_v1_dossier', 'type_contrat', self.gf('django.db.models.fields.related.ForeignKey')(default=0, to=orm['rh_v1.TypeContrat'], db_column='type_contrat'))
-
- # Changing field 'Dossier.organisme_bstg'
- db.alter_column('rh_v1_dossier', 'organisme_bstg', self.gf('django.db.models.fields.related.ForeignKey')(default=0, to=orm['rh_v1.OrganismeBstg'], db_column='organisme_bstg'))
-
- # Changing field 'Dossier.service'
- db.alter_column('rh_v1_dossier', 'service', self.gf('django.db.models.fields.related.ForeignKey')(default=0, to=orm['rh_v1.Service'], db_column='service'))
-
- # Changing field 'Dossier.implantation1'
- db.alter_column('rh_v1_dossier', 'implantation1', self.gf('django.db.models.fields.related.ForeignKey')(default=0, db_column='implantation1', to=orm['datamaster_modeles.Implantation']))
-
- # Changing field 'Dossier.implantation2'
- db.alter_column('rh_v1_dossier', 'implantation2', self.gf('django.db.models.fields.related.ForeignKey')(default=0, db_column='implantation2', to=orm['datamaster_modeles.Implantation']))
-
- # Changing field 'Dossier.statut'
- db.alter_column('rh_v1_dossier', 'statut', self.gf('django.db.models.fields.related.ForeignKey')(default=0, to=orm['rh_v1.Statut'], db_column='statut'))
-
- # Changing field 'Dossier.remplacement_de'
- db.alter_column('rh_v1_dossier', 'remplacement_de', self.gf('django.db.models.fields.related.ForeignKey')(default=0, db_column='remplacement_de', to=orm['rh_v1.Employe']))
-
- # Changing field 'Dossier.mandat_date_fin'
- db.alter_column('rh_v1_dossier', 'mandat_date_fin', self.gf('django.db.models.fields.DateField')(default=0))
-
-
- models = {
- 'datamaster_modeles.bureau': {
- 'Meta': {'object_name': 'Bureau', 'db_table': "u'ref_bureau'"},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'implantation'"}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Region']", 'db_column': "'region'"})
- },
- 'datamaster_modeles.implantation': {
- 'Meta': {'object_name': 'Implantation', 'db_table': "u'ref_implantation'"},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'adresse_physique_bureau': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_code_postal': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
- 'adresse_physique_code_postal_avant_ville': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
- 'adresse_physique_no': ('django.db.models.fields.CharField', [], {'max_length': '30', 'blank': 'True'}),
- 'adresse_physique_pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'impl_adresse_physique'", 'to_field': "'code'", 'db_column': "'adresse_physique_pays'", 'to': "orm['datamaster_modeles.Pays']"}),
- 'adresse_physique_precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_precision_avant': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_region': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'adresse_physique_ville': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'adresse_postale_boite_postale': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_bureau': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_code_postal': ('django.db.models.fields.CharField', [], {'max_length': '20', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_code_postal_avant_ville': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
- 'adresse_postale_no': ('django.db.models.fields.CharField', [], {'max_length': '30', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'impl_adresse_postale'", 'to_field': "'code'", 'db_column': "'adresse_postale_pays'", 'to': "orm['datamaster_modeles.Pays']"}),
- 'adresse_postale_precision': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_precision_avant': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_region': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'adresse_postale_ville': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'bureau_rattachement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'bureau_rattachement'"}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'code_meteo': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'commentaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'courriel': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
- 'courriel_interne': ('django.db.models.fields.EmailField', [], {'max_length': '75', 'blank': 'True'}),
- 'date_extension': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_fermeture': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_inauguration': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_ouverture': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'fax': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'fax_interne': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'fuseau_horaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'hebergement_convention': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
- 'hebergement_convention_date': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'hebergement_etablissement': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'modif_date': ('django.db.models.fields.DateField', [], {}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nom_court': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Region']", 'db_column': "'region'"}),
- 'remarque': ('django.db.models.fields.TextField', [], {}),
- 'responsable_implantation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
- 'statut': ('django.db.models.fields.IntegerField', [], {}),
- 'telephone': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'telephone_interne': ('django.db.models.fields.CharField', [], {'max_length': '255', 'blank': 'True'}),
- 'type': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'url': ('django.db.models.fields.URLField', [], {'max_length': '255', 'blank': 'True'})
- },
- 'datamaster_modeles.pays': {
- 'Meta': {'object_name': 'Pays', 'db_table': "u'ref_pays'"},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '2'}),
- 'code_bureau': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Bureau']", 'to_field': "'code'", 'db_column': "'code_bureau'"}),
- 'code_iso3': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '3', 'blank': 'True'}),
- 'developpement': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'monnaie': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nord_sud': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'region': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Region']", 'db_column': "'region'"})
- },
- 'datamaster_modeles.region': {
- 'Meta': {'object_name': 'Region', 'db_table': "u'ref_region'"},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '255'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation_bureau': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'gere_region'", 'db_column': "'implantation_bureau'", 'to': "orm['datamaster_modeles.Implantation']"}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.ayantdroit': {
- 'Meta': {'object_name': 'AyantDroit'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'employe': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'employe'", 'db_column': "'employe'", 'to': "orm['rh_v1.Employe']"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'lien_parente': ('django.db.models.fields.CharField', [], {'max_length': '10', 'null': 'True', 'blank': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'prenom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.classement': {
- 'Meta': {'object_name': 'Classement'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'coefficient': ('django.db.models.fields.FloatField', [], {}),
- 'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'degre': ('django.db.models.fields.IntegerField', [], {}),
- 'echelon': ('django.db.models.fields.IntegerField', [], {}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'type': ('django.db.models.fields.CharField', [], {'max_length': '10'})
- },
- 'rh_v1.devise': {
- 'Meta': {'object_name': 'Devise'},
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.dossier': {
- 'Meta': {'object_name': 'Dossier'},
- 'classement': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Classement']", 'null': 'True', 'db_column': "'classement'", 'blank': 'True'}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '10'}),
- 'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'complement1': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'complement2': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'contrat_date_debut': ('django.db.models.fields.DateField', [], {}),
- 'contrat_date_fin': ('django.db.models.fields.DateField', [], {}),
- 'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'date_maj': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'employe': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Employe']", 'db_column': "'employe'"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation1': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'implantation1'", 'null': 'True', 'db_column': "'implantation1'", 'to': "orm['datamaster_modeles.Implantation']"}),
- 'implantation2': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'implantation2'", 'null': 'True', 'db_column': "'implantation2'", 'to': "orm['datamaster_modeles.Implantation']"}),
- 'mandat_date_debut': ('django.db.models.fields.DateField', [], {}),
- 'mandat_date_fin': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'organisme_bstg': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.OrganismeBstg']", 'null': 'True', 'db_column': "'organisme_bstg'", 'blank': 'True'}),
- 'poste1': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'poste1'", 'db_column': "'poste1'", 'to': "orm['rh_v1.Poste']"}),
- 'poste2': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'poste2'", 'null': 'True', 'db_column': "'poste2'", 'to': "orm['rh_v1.Poste']"}),
- 'regime_travail': ('django.db.models.fields.IntegerField', [], {}),
- 'remplacement_de': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'remplacement_de'", 'null': 'True', 'db_column': "'remplacement_de'", 'to': "orm['rh_v1.Employe']"}),
- 'responsable': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'responsable'", 'null': 'True', 'db_column': "'responsable'", 'to': "orm['rh_v1.Employe']"}),
- 'responsable_implantation1': ('django.db.models.fields.IntegerField', [], {}),
- 'responsable_implantation2': ('django.db.models.fields.IntegerField', [], {}),
- 'service': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Service']", 'null': 'True', 'db_column': "'service'", 'blank': 'True'}),
- 'statut': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Statut']", 'null': 'True', 'db_column': "'statut'", 'blank': 'True'}),
- 'type': ('django.db.models.fields.CharField', [], {'max_length': '1'}),
- 'type_contrat': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypeContrat']", 'null': 'True', 'db_column': "'type_contrat'", 'blank': 'True'})
- },
- 'rh_v1.employe': {
- 'Meta': {'object_name': 'Employe'},
- 'adresse': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'code_postal': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'commentaire': ('django.db.models.fields.TextField', [], {'null': 'True', 'blank': 'True'}),
- 'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'date_entree': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_maj': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'date_naissance': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'genre': ('django.db.models.fields.CharField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nationalite': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'nationalite'", 'to_field': "'code'", 'db_column': "'nationalite'", 'to': "orm['datamaster_modeles.Pays']"}),
- 'no_rue': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'pays': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'pays'", 'db_column': "'pays'", 'to_field': "'code'", 'to': "orm['datamaster_modeles.Pays']", 'blank': 'True', 'null': 'True'}),
- 'prenom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'province': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'situation_famille': ('django.db.models.fields.CharField', [], {'max_length': '1', 'null': 'True', 'blank': 'True'}),
- 'tel_cellulaire': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'tel_domicile': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'}),
- 'ville': ('django.db.models.fields.CharField', [], {'max_length': '255', 'null': 'True', 'blank': 'True'})
- },
- 'rh_v1.familleemploi': {
- 'Meta': {'object_name': 'FamilleEmploi'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.organismebstg': {
- 'Meta': {'object_name': 'OrganismeBstg'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type': ('django.db.models.fields.CharField', [], {'max_length': '10'})
- },
- 'rh_v1.poste': {
- 'Meta': {'object_name': 'Poste'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'db_column': "'implantation'", 'to': "orm['datamaster_modeles.Implantation']"}),
- 'proportion': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
- 'type_poste': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypePoste']", 'db_column': "'type_poste'"})
- },
- 'rh_v1.remuneration': {
- 'Meta': {'object_name': 'Remuneration'},
- 'annulation': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
- 'date_annulation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_creation': ('django.db.models.fields.DateField', [], {'auto_now_add': 'True', 'blank': 'True'}),
- 'date_desactivation': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'date_effective': ('django.db.models.fields.DateField', [], {'null': 'True', 'blank': 'True'}),
- 'desactivation': ('django.db.models.fields.NullBooleanField', [], {'null': 'True', 'blank': 'True'}),
- 'devise': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Devise']", 'to_field': "'code'", 'null': 'True', 'db_column': "'devise'", 'blank': 'True'}),
- 'dossier': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Dossier']", 'db_column': "'dossier'"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'montant': ('django.db.models.fields.FloatField', [], {'null': 'True', 'blank': 'True'}),
- 'pourcentage': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
- 'type': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypeRemuneration']", 'db_column': "'type'"}),
- 'type_revalorisation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.TypeRevalorisation']", 'null': 'True', 'db_column': "'type_revalorisation'", 'blank': 'True'}),
- 'user_annulation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
- 'user_creation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'}),
- 'user_desactivation': ('django.db.models.fields.IntegerField', [], {'null': 'True', 'blank': 'True'})
- },
- 'rh_v1.service': {
- 'Meta': {'object_name': 'Service'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.statut': {
- 'Meta': {'object_name': 'Statut'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'code': ('django.db.models.fields.CharField', [], {'unique': 'True', 'max_length': '25'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type_contrat_categorie': ('django.db.models.fields.CharField', [], {'max_length': '10'})
- },
- 'rh_v1.tauxchange': {
- 'Meta': {'object_name': 'TauxChange'},
- 'annee': ('django.db.models.fields.IntegerField', [], {}),
- 'devise': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.Devise']", 'db_column': "'devise'"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'implantation'"}),
- 'taux': ('django.db.models.fields.FloatField', [], {})
- },
- 'rh_v1.typecontrat': {
- 'Meta': {'object_name': 'TypeContrat'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'categorie': ('django.db.models.fields.CharField', [], {'max_length': '10'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nom_long': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.typeposte': {
- 'Meta': {'object_name': 'TypePoste'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'date_modification': ('django.db.models.fields.DateField', [], {'auto_now': 'True', 'blank': 'True'}),
- 'description': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'famille_emploi': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['rh_v1.FamilleEmploi']", 'db_column': "'famille_emploi'"}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'is_responsable': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'nom_feminin': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.typeremuneration': {
- 'Meta': {'object_name': 'TypeRemuneration'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nature_remuneration': ('django.db.models.fields.CharField', [], {'max_length': '30'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'}),
- 'type_paiement': ('django.db.models.fields.CharField', [], {'max_length': '30'})
- },
- 'rh_v1.typerevalorisation': {
- 'Meta': {'object_name': 'TypeRevalorisation'},
- 'actif': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'nom': ('django.db.models.fields.CharField', [], {'max_length': '255'})
- },
- 'rh_v1.valeurpoint': {
- 'Meta': {'object_name': 'ValeurPoint'},
- 'annee': ('django.db.models.fields.IntegerField', [], {}),
- 'id': ('django.db.models.fields.IntegerField', [], {'primary_key': 'True'}),
- 'implantation': ('django.db.models.fields.related.ForeignKey', [], {'to': "orm['datamaster_modeles.Implantation']", 'db_column': "'implantation'"}),
- 'valeur': ('django.db.models.fields.FloatField', [], {})
- }
- }
-
- complete_apps = ['rh_v1']
+++ /dev/null
-# -=- encoding: utf-8 -=-
-
-import datetime
-from django.db import models
-from datamaster_modeles.models import Pays, Implantation
-from dae.managers import SecurityManager
-
-GENRE_CHOICES = (
- ('m', 'Homme'),
- ('f', 'Femme'),
-)
-SITUATION_CHOICES = (
- ('C', 'Célibataire'),
- ('F', 'Fiancé'),
- ('M', 'Marié'),
-)
-
-class Employe(models.Model):
- # Identification
- id = models.IntegerField(primary_key=True)
- nom = models.CharField(max_length=255)
- prenom = models.CharField(max_length=255)
- nationalite = models.ForeignKey('datamaster_modeles.Pays', to_field='code',
- related_name='nationalite',
- db_column='nationalite')
- date_naissance = models.DateField(null=True, blank=True)
- # Infos personnelles
- genre = models.CharField(max_length=1, null=True, blank=True,
- choices=GENRE_CHOICES)
- situation_famille = models.CharField(max_length=1, null=True, blank=True,
- choices=SITUATION_CHOICES)
- date_entree = models.DateField(null=True, blank=True) #devrait pas être là
- # Coordonnées
- tel_domicile = models.CharField(max_length=255, null=True, blank=True)
- tel_cellulaire = models.CharField(max_length=255, null=True, blank=True)
- adresse = models.CharField(max_length=255, null=True, blank=True)
- no_rue = models.CharField(max_length=255, null=True, blank=True)
- ville = models.CharField(max_length=255, null=True, blank=True)
- province = models.CharField(max_length=255, null=True, blank=True)
- code_postal = models.CharField(max_length=255, null=True, blank=True)
- pays = models.ForeignKey('datamaster_modeles.Pays', to_field='code',
- null=True, blank=True,
- related_name='pays', db_column='pays')
- # Métas
- date_creation = models.DateField(auto_now_add=True)
- date_maj = models.DateField(auto_now=True)
- commentaire = models.TextField(null=True, blank=True)
-
- def __unicode__(self):
- return u'%s %s' % (self.prenom, self.nom)
-
-
-TYPE_DOSSIER_CHOICES = (
- ('2', 'Local'),
- ('1', 'Expatrié'),
-)
-
-class DossierManager(models.Manager):
- """
- Chargement de tous les objets FK existants sur chaque QuerySet.
- """
- prefixe_service = "poste1__service"
- prefixe_implantation = "poste1__implantation__region"
-
- def get_query_set(self):
- fkeys = (
- 'employe',
- 'poste1',
- 'implantation1',
- 'poste2',
- 'implantation2',
- 'service',
- 'responsable',
- 'remplacement_de',
- 'statut',
- 'organisme_bstg',
- 'classement',
- 'type_contrat',
- )
- return super(DossierManager, self).get_query_set().select_related(*fkeys).all()
-
-class Dossier(models.Model):
- # Identification
- id = models.IntegerField(primary_key=True)
- code = models.CharField(max_length=10, unique=True)
- employe = models.ForeignKey('Employe', db_column='employe')
- # Postes
- poste1 = models.ForeignKey('Poste', db_column='poste1',
- related_name='poste1')
- implantation1 = models.ForeignKey('datamaster_modeles.Implantation',
- db_column='implantation1',
- related_name='implantation1',
- blank=True, null=True)
- complement1 = models.TextField(null=True, blank=True)
- responsable_implantation1 = models.IntegerField()
- poste2 = models.ForeignKey('Poste', db_column='poste2',
- related_name='poste2',
- blank=True, null=True)
- implantation2 = models.ForeignKey('datamaster_modeles.Implantation',
- db_column='implantation2',
- related_name='implantation2',
- null=True, blank=True)
- complement2 = models.TextField(null=True, blank=True)
- responsable_implantation2 = models.IntegerField()
- # Relations
- service = models.ForeignKey('Service', db_column='service',
- blank=True, null=True)
- responsable = models.ForeignKey('Employe', db_column='responsable',
- related_name='responsable',
- blank=True, null=True)
- remplacement_de = models.ForeignKey('Employe', db_column='remplacement_de',
- related_name='remplacement_de',
- blank=True, null=True)
- type = models.CharField(max_length=1, choices=TYPE_DOSSIER_CHOICES)
- statut = models.ForeignKey('Statut', db_column='statut',
- blank=True, null=True)
- organisme_bstg = models.ForeignKey('OrganismeBstg',
- db_column='organisme_bstg',
- blank=True, null=True)
- # Rémunération
- classement = models.ForeignKey('Classement', db_column='classement',
- blank=True, null=True)
- regime_travail = models.IntegerField()
- # Mandat
- mandat_date_debut = models.DateField()
- mandat_date_fin = models.DateField(null=True, blank=True)
- # Contrat
- contrat_date_debut = models.DateField()
- contrat_date_fin = models.DateField()
- type_contrat = models.ForeignKey('TypeContrat', db_column='type_contrat',
- blank=True, null=True)
- # Meta
- date_creation = models.DateField(auto_now_add=True)
- date_maj = models.DateField(auto_now=True)
- commentaire = models.TextField(null=True, blank=True)
-
- # Managers
- objects = DossierManager()
-
- def __unicode__(self):
- return u'%s : %s %s' % (self.employe, self.poste1, self.complement1)
-
- def get_dernier_salaire_remun(self):
- remun = [r for r in self.remuneration_set.all().order_by('-id') if r.type_id == 1] # type salaire de base
- if len(remun) == 0:
- return None
- else:
- return remun[0]
-
- def get_salaire(self):
- remun = self.get_dernier_salaire_remun()
- if remun is not None:
- return int(remun.montant)
- else:
- return None
-
- def get_salaire_display(self):
- """
- Moyen rapide de récupérer le salaire correspodant à un dossier. Par contre,
- toutes les rémuérations n'ont pas de devise associées, c'est pourquoi on récupère
- les anciennes rémunérations pour rechercher si elle existait auparavant.
- """
- if self.dernier_salaire_remun() is not None:
- devise_code = self.dernier_salaire_remun().devise.code
- else:
- devise_code = '???'
- return "%s %s" % (self.get_salaire(), devise_code, )
-
- def get_salaire_euro_display(self):
- """
- Moyen rapide de récupérer le salaire correspodant à un dossier. Par contre,
- toutes les rémuérations n'ont pas de devise associées, c'est pourquoi on récupère
- les anciennes rémunérations pour rechercher si elle existait auparavant.
- La valeur est est affichée en Euros en se servant du taux actuel.
- """
- return "%s EUR" % (self.get_dernier_salaire_remun().en_euros())
-
-LIEN_PARENTE_CHOICES = (
- ('Conjoint', 'Conjoint'),
- ('Conjointe', 'Conjointe'),
- ('Fille', 'Fille'),
- ('Fils', 'Fils'),
-)
-
-class AyantDroit(models.Model):
- # Identification
- id = models.IntegerField(primary_key=True)
- nom = models.CharField(max_length=255)
- prenom = models.CharField(max_length=255)
- # Relation
- employe = models.ForeignKey('Employe', db_column='employe',
- related_name='employe')
- lien_parente = models.CharField(max_length=10, null=True, blank=True,
- choices=LIEN_PARENTE_CHOICES)
- # Méta
- commentaire = models.TextField(null=True, blank=True)
- actif = models.BooleanField()
-
-
-class Remuneration(models.Model):
- # Identification
- id = models.IntegerField(primary_key=True)
- dossier = models.ForeignKey('Dossier', db_column='dossier')
- type = models.ForeignKey('TypeRemuneration', db_column='type')
- type_revalorisation = models.ForeignKey('TypeRevalorisation',
- db_column='type_revalorisation',
- null=True, blank=True)
- montant = models.FloatField(null=True, blank=True)
- devise = models.ForeignKey('Devise', to_field='id', db_column='devise', null=True, blank=True)
- date_effective = models.DateField(null=True, blank=True)
- pourcentage = models.IntegerField(null=True, blank=True)
- # Méta
- date_creation = models.DateField(auto_now_add=True)
- user_creation = models.IntegerField(null=True, blank=True) #User ou employé
- desactivation = models.NullBooleanField(null=True, blank=True) #
- date_desactivation = models.DateField(null=True, blank=True)
- user_desactivation = models.IntegerField(null=True, blank=True) #User ou employé
- annulation = models.NullBooleanField(null=True, blank=True)
- date_annulation = models.DateField(null=True, blank=True)
- user_annulation = models.IntegerField(null=True, blank=True) #User ou employé
-
- def __unicode__(self):
- try:
- devise = self.devise.code
- except:
- devise = "???"
- return "%s %s (%s EUR - %s)" % (self.montant, devise, self.en_euros(), self.get_taux_historique(), )
-
- def get_taux_historique(self):
- """
- Retourne le taux en vigueur durant l'année considérée. Un taux de 0 est crée, si le taux de change
- n'existe pas.
- """
- taux = TauxChange.objects.filter(devise=self.devise, annee=self.date_creation.year)
- if len(taux) > 0:
- return taux[0]
- else:
- return None
-
- def en_euros(self):
- tauxchange = self.get_taux_historique()
- if tauxchange is not None:
- return int(self.montant * tauxchange.taux)
- else:
- return 0
-
-class FamilleEmploi(models.Model):
- # Identification
- id = models.IntegerField(primary_key=True)
- nom = models.CharField(max_length=255)
- # Méta
- actif = models.BooleanField()
-
-class TypePoste(models.Model):
- # Identification
- id = models.IntegerField(primary_key=True)
- nom = models.CharField(max_length=255)
- nom_feminin = models.CharField(max_length=255)
- description = models.CharField(max_length=255)
- is_responsable = models.BooleanField()
- famille_emploi = models.ForeignKey('FamilleEmploi',
- db_column='famille_emploi')
- # Méta
- date_modification = models.DateField(auto_now=True)
- actif = models.BooleanField()
-
- def __unicode__(self):
- return u'%s' % self.nom
-
- class Meta:
- ordering = ['nom']
-
-
-TYPE_PAIEMENT_CHOICES = (
- ('Régulier', 'Régulier'),
- ('Ponctuel', 'Ponctuel'),
-)
-
-NATURE_REMUNERATION_CHOICES = (
- ('Accessoire', 'Accessoire'),
- ('Charges', 'Charges'),
- ('Indemnité', 'Indemnité'),
- ('RAS', 'RAS'),
- ('Traitement', 'Traitement'),
-)
-
-class TypeRemuneration(models.Model):
- # Identification
- id = models.IntegerField(primary_key=True)
- nom = models.CharField(max_length=255)
- type_paiement = models.CharField(max_length=30,
- choices=TYPE_PAIEMENT_CHOICES)
- nature_remuneration = models.CharField(max_length=30,
- choices=NATURE_REMUNERATION_CHOICES)
- # Méta
- actif = models.BooleanField()
-
- def __unicode__(self):
- return u'%s' % self.nom
-
-
-class TypeRevalorisation(models.Model):
- # Identification
- id = models.IntegerField(primary_key=True)
- nom = models.CharField(max_length=255)
- # Méta
- actif = models.BooleanField()
-
-PROPORTION_CHOICES = (
- ('0.5', '0.5'),
- ('1', '1'),
-)
-
-class PosteManager(SecurityManager):
- """
- Chargement de tous les objets FK existants sur chaque QuerySet.
- """
- prefixe_implantation = "implantation__region"
-
- def get_query_set(self):
- fkeys = (
- 'implantation',
- 'type_poste',
- )
- return super(PosteManager, self).get_query_set().select_related(*fkeys).all()
-
-class Poste(models.Model):
- # Identification
- id = models.IntegerField(primary_key=True)
- implantation = models.ForeignKey('datamaster_modeles.Implantation',
- db_column='implantation', related_name='+')
- type_poste = models.ForeignKey('TypePoste', db_column='type_poste')
- proportion = models.CharField(max_length=10, choices=PROPORTION_CHOICES)
- #(sert à quoi?) renommer "regime_travail" ou autre? convertir data en % (data * 100; ex: 1 = 100%)
- # Méta
- date_modification = models.DateField(auto_now=True)
- actif = models.BooleanField()
-
- # Managers
- objects = PosteManager()
-
- def __unicode__(self):
- return u'%s - %s [%s]' % (self.implantation, self.type_poste.nom,
- self.id)
-
-
-class Service(models.Model):
- # Identification
- id = models.IntegerField(primary_key=True)
- nom = models.CharField(max_length=255)
- # Méta
- actif = models.BooleanField()
-
- def __unicode__(self):
- return u'%s' % self.nom
-
- class Meta:
- ordering = ['nom']
-
-
-TYPE_ORGANISME_CHOICES = (
- ('MAD', 'Mise à disposition'),
- ('DET', 'Détachement'),
-)
-
-class OrganismeBstg(models.Model):
- # Identification
- id = models.IntegerField(primary_key=True)
- nom = models.CharField(max_length=255)
- type = models.CharField(max_length=10, choices=TYPE_ORGANISME_CHOICES)
- # Méta
- actif = models.BooleanField()
-
- def __unicode__(self):
- return u'%s (%s)' % (self.nom, self.type)
-
- class Meta:
- ordering = ['type', 'nom']
-
-
-CONTRAT_CATEGORIE_CHOICES= (
- ('A', 'A'),
- ('C', 'C'),
-)
-class Statut(models.Model):
- # Identification
- id = models.IntegerField(primary_key=True)
- code = models.CharField(max_length=25, unique=True)
- nom = models.CharField(max_length=255)
- type_contrat_categorie = models.CharField(max_length=10,
- choices=CONTRAT_CATEGORIE_CHOICES)
- #CHOICES A, C (veut dire quoi?) voir TypeContrat.categorie
- # Méta
- actif = models.BooleanField()
-
- def __unicode__(self):
- return u'%s : %s' % (self.code, self.nom)
-
-TYPE_CLASSEMENT_CHOICES = (
- ('S', 'S'),
- ('T', 'T'),
-)
-
-class ClassementManager(models.Manager):
- """
- Ordonner les spcéfiquement les classements.
- """
- def get_query_set(self):
- qs = super(self.__class__, self).get_query_set()
- qs = qs.extra(select={'ponderation': 'FIND_IN_SET(type,"SO,HG,S,T,P,C,D")'})
- qs = qs.extra(order_by=('ponderation', ))
- return qs.all()
-
-
-class Classement(models.Model):
- # Identification
- id = models.IntegerField(primary_key=True)
- type = models.CharField(max_length=10, choices=TYPE_CLASSEMENT_CHOICES)
- echelon = models.IntegerField()
- degre = models.IntegerField()
- coefficient = models.FloatField()
- # Méta
- commentaire = models.TextField(null=True, blank=True)
- date_modification = models.DateField(auto_now=True)
- actif = models.BooleanField()
-
- # managers
- objects = ClassementManager()
-
- def __unicode__(self):
- return u'%s.%s.%s' % (self.type, self.echelon, self.degre )
-
- class Meta:
- ordering = ['type','echelon','degre','coefficient']
-
-class TauxChange(models.Model):
- # Identification
- id = models.IntegerField(primary_key=True)
- devise = models.ForeignKey('Devise', to_field='id', db_column='devise')
- annee = models.IntegerField()
- taux = models.FloatField()
- # Relations
- implantation = models.ForeignKey('datamaster_modeles.Implantation',
- db_column='implantation',
- related_name='taux_change')
-
- def __unicode__(self):
- return u"%s %s : %s" % (self.devise, self.annee, self.taux)
-
-class ValeurPointManager(models.Manager):
- """
- Manager qui travaille uniquement sur les valeurs du point de l'année en cours.
- """
- mois = datetime.datetime.now().month
- annee_courante = datetime.datetime.now().year
-
- # Pour le mois de janvier et décembre on mets les 2 années pour faire la transition
- if mois == 1:
- filtre_annee = (annee_courante-1, annee_courante)
- elif mois == 12:
- filtre_annee = (annee_courante, annee_courante+1)
- else:
- filtre_annee = (annee_courante,)
-
- def get_query_set(self):
- return super(ValeurPointManager, self).get_query_set().select_related('implantation').filter(annee__in=self.filtre_annee)
-
-
-class ValeurPoint(models.Model):
- # Identification
- id = models.IntegerField(primary_key=True)
- valeur = models.FloatField()
- implantation = models.ForeignKey('datamaster_modeles.Implantation',
- db_column='implantation',
- related_name='valeurs_point')
- # Méta
- annee = models.IntegerField()
-
- # Stockage de tous les taux de change pour optimiser la recherche de la devise associée
- annee_courante = datetime.datetime.now().year
- tauxchange = TauxChange.objects.select_related('devise').filter(annee=annee_courante)
-
- def get_tauxchange_courant(self):
- """
- Recherche le taux courant associé à la valeur d'un point.
- Tous les taux de l'année courante sont chargés, pour optimiser un affichage en liste.
- (On pourrait probablement améliorer le manager pour lui greffer le taux courant sous forme de JOIN)
- """
- for tauxchange in self.tauxchange:
- if tauxchange.implantation_id == self.implantation_id:
- return tauxchange
- return None
-
- def __unicode__(self):
- tx = self.get_tauxchange_courant()
- if tx:
- devise_code = tx.devise.code
- else:
- devise_code = "??"
- return u'%s %s (%s-%s)' % (self.valeur, devise_code, self.implantation.nom, self.annee)
-
- class Meta:
- ordering = ['valeur']
-
- objects = models.Manager()
- actuelles = ValeurPointManager()
-
-class DeviseManager(models.Manager):
- """
- On oublie le US et le CAN
- """
- def get_query_set(self):
- return super(DeviseManager, self).get_query_set().exclude(id__in=(3, 15))
-
-class Devise(models.Model):
-
- objects = DeviseManager()
-
- id = models.IntegerField(primary_key=True)
- code = models.CharField(max_length=10, unique=True)
- nom = models.CharField(max_length=255)
-
- def __unicode__(self):
- return u'%s - %s' % (self.code, self.nom)
-
-
-class TypeContrat(models.Model):
- # Identification
- id = models.IntegerField(primary_key=True)
- nom = models.CharField(max_length=255)
- nom_long = models.CharField(max_length=255) #description
- categorie = models.CharField(max_length=10,
- choices=CONTRAT_CATEGORIE_CHOICES)
- # Méta
- actif = models.BooleanField()
-
- def __unicode__(self):
- return u'%s' % (self.nom)
+++ /dev/null
-# -*- encoding: utf-8 -*-
-
-from django.contrib.auth.decorators import user_passes_test
-from django.contrib.auth.models import Group
-
-# Logique AUF des permissions
-
-def is_employe(user):
- return user.is_authenticated() and user.is_active and user.is_staff
-
-def is_admin(user):
- """
- Un admin est un employé qui est superuser
- """
- return is_employe(user) and user.is_superuser
# -*- encoding: utf-8 -*-
import textwrap
-from django.core.urlresolvers import reverse
-from django.http import HttpResponseRedirect
+
+from django.conf import settings
from django.contrib import admin
-from django.forms.models import BaseInlineFormSet
+from django.core.urlresolvers import reverse
from django.db.models import Avg
-from django.conf import settings
from django.shortcuts import render_to_response
from django.template import RequestContext
-from reversion.admin import VersionAdmin
-from datamaster_modeles.models import Region, Bureau
-from project.rh import models as rh
from auf.django.emploi.models import STATUT_CHOICES
+from django.forms.models import BaseInlineFormSet
+from django.http import HttpResponseRedirect
+from django.shortcuts import redirect
+from reversion.admin import VersionAdmin
+
+from auf.django.emploi.models import OffreEmploi, Candidat, CandidatPiece
+from auf.django.references.models import Region, Bureau
-from project.dae.utils import get_employe_from_user as get_emp
-from recrutement.models import *
-from recrutement.workflow import grp_drh_recrutement, grp_drh2_recrutement, \
- grp_directeurs_bureau_recrutement, \
- grp_administrateurs_recrutement, \
- grp_correspondants_rh_recrutement, \
- grp_haute_direction_recrutement
+from project.groups import get_employe_from_user as get_emp
+from project.rh import models as rh
-from recrutement.forms import *
+from project.recrutement.forms import OffreEmploiForm
+from project.recrutement.groups import \
+ grp_drh, grp_drh2, \
+ grp_directeurs_bureau, \
+ grp_administrateurs, \
+ grp_correspondants_rh, \
+ grp_haute_direction
+from project.recrutement.models import \
+ Evaluateur, CandidatEvaluation, \
+ ProxyOffreEmploi, ProxyCandidat, MesCandidatEvaluation, \
+ CourrielTemplate
+
### CONSTANTES
IMPLANTATIONS_CENTRALES = [15, 19]
+
+class BaseAdmin(admin.ModelAdmin):
+
+ class Media:
+ css = {'screen': ('css/admin_custom.css',)}
+
+
class OrderedChangeList(admin.views.main.ChangeList):
"""
Surcharge pour appliquer le order_by d'un annotate
qs = qs.order_by('-moyenne')
return qs
-class OffreEmploiAdmin(VersionAdmin):
+
+class OffreEmploiAdmin(BaseAdmin, VersionAdmin):
date_hierarchy = 'date_creation'
- list_display = ('nom', 'date_limite', 'region', 'statut',
- 'est_affiche', '_candidatsList', )
+ list_display = (
+ 'nom', 'date_limite', 'region', 'statut', 'est_affiche',
+ '_candidatsList'
+ )
exclude = ('actif', 'poste_nom', 'resume',)
list_filter = ('statut',)
actions = ['affecter_evaluateurs_offre_emploi', ]
return actions
### Affecter un évaluateurs à des offres d'emploi
- def affecter_evaluateurs_offre_emploi(modeladmin, obj, candidats):
+ def affecter_evaluateurs_offre_emploi(modeladmin, obj, candidats):
selected = obj.POST.getlist(admin.ACTION_CHECKBOX_NAME)
- return HttpResponseRedirect(reverse('affecter_evaluateurs_offre_emploi')+
- "?ids=%s" % (",".join(selected)))
- affecter_evaluateurs_offre_emploi.short_description = u'Affecter évaluateur(s)'
+ return HttpResponseRedirect(
+ reverse('affecter_evaluateurs_offre_emploi') +
+ "?ids=%s" % (",".join(selected))
+ )
+
+ affecter_evaluateurs_offre_emploi.short_description = \
+ u'Affecter évaluateur(s)'
### Afficher la liste des candidats pour l'offre d'emploi
- def _candidatsList(self, obj):
+ def _candidatsList(self, obj):
return "<a href='%s?offre_emploi__id__exact=%s'>Voir les candidats \
</a>" % (reverse('admin:recrutement_candidat_changelist'), obj.id)
- _candidatsList.allow_tags = True
+ _candidatsList.allow_tags = True
_candidatsList.short_description = "Afficher la liste des candidats"
### Formulaire
form = super(OffreEmploiAdmin, self).get_form(request, obj, **kwargs)
employe = get_emp(request.user)
user_groupes = request.user.groups.all()
-
-
+
# Region
- if form.declared_fields.has_key('region'):
+ if 'region' in form.declared_fields:
region_field = form.declared_fields['region']
else:
region_field = form.base_fields['region']
- if grp_drh_recrutement in user_groupes or \
- grp_drh2_recrutement in user_groupes or \
- grp_haute_direction_recrutement in user_groupes:
+ if grp_drh in user_groupes or \
+ grp_drh2 in user_groupes or \
+ grp_haute_direction in user_groupes:
region_field.queryset = Region.objects.all()
else:
region_field.queryset = Region.objects.\
filter(id=employe.implantation.region.id)
-
+
# Poste
- if form.declared_fields.has_key('poste'):
+ if 'poste' in form.declared_fields:
poste_field = form.declared_fields['poste']
else:
poste_field = form.base_fields['poste']
- if grp_drh_recrutement in user_groupes or \
- grp_drh2_recrutement in user_groupes or \
- grp_haute_direction_recrutement in user_groupes:
+ if grp_drh in user_groupes or \
+ grp_drh2 in user_groupes or \
+ grp_haute_direction in user_groupes:
poste_field.queryset = rh.Poste.objects.all()
else:
poste_field.queryset = rh.Poste.objects.\
filter(implantation__region=employe.implantation.region).\
exclude(implantation__in=IMPLANTATIONS_CENTRALES)
-
+
# Bureau
- if form.declared_fields.has_key('bureau'):
+ if 'bureau' in form.declared_fields:
bureau_field = form.declared_fields['bureau']
else:
bureau_field = form.base_fields['bureau']
- if grp_drh_recrutement in user_groupes or \
- grp_drh2_recrutement in user_groupes or \
- grp_haute_direction_recrutement in user_groupes:
+ if grp_drh in user_groupes or \
+ grp_drh2 in user_groupes or \
+ grp_haute_direction in user_groupes:
bureau_field.queryset = Bureau.objects.all()
else:
- bureau_field.queryset = Bureau.objects.\
- filter(region=employe.implantation.region)
-
+ bureau_field.queryset = \
+ Bureau.objects.filter(region=employe.implantation.region)
+
return form
-
+
### Queryset
+
def queryset(self, request):
- qs = self.model._default_manager.get_query_set().select_related('offre_emploi')
+ qs = self.model._default_manager.get_query_set() \
+ .select_related('offre_emploi')
user_groupes = request.user.groups.all()
- if grp_drh_recrutement in user_groupes or \
- grp_drh2_recrutement in user_groupes or \
- grp_haute_direction_recrutement in user_groupes:
+ if grp_drh in user_groupes or \
+ grp_drh2 in user_groupes or \
+ grp_haute_direction in user_groupes:
return qs
- if grp_directeurs_bureau_recrutement in user_groupes or \
- grp_correspondants_rh_recrutement in user_groupes or \
- grp_administrateurs_recrutement in user_groupes:
+ if grp_directeurs_bureau in user_groupes or \
+ grp_correspondants_rh in user_groupes or \
+ grp_administrateurs in user_groupes:
employe = get_emp(request.user)
return qs.filter(region=employe.implantation.region)
if Evaluateur.objects.filter(user=request.user).exists():
evaluateur = Evaluateur.objects.get(user=request.user)
- offre_ids = [e.candidat.offre_emploi_id for e in
- CandidatEvaluation.objects.select_related('candidat').filter(evaluateur=evaluateur)]
+ offre_ids = [
+ e.candidat.offre_emploi_id
+ for e in CandidatEvaluation.objects
+ .select_related('candidat')
+ .filter(evaluateur=evaluateur)
+ ]
return qs.filter(id__in=offre_ids)
return qs.none()
def has_add_permission(self, request):
user_groupes = request.user.groups.all()
if request.user.is_superuser is True or \
- grp_drh_recrutement in user_groupes or \
- grp_drh2_recrutement in user_groupes or \
- grp_directeurs_bureau_recrutement in user_groupes or \
- grp_administrateurs_recrutement in user_groupes or \
- grp_haute_direction_recrutement in user_groupes:
+ grp_drh in user_groupes or \
+ grp_drh2 in user_groupes or \
+ grp_directeurs_bureau in user_groupes or \
+ grp_administrateurs in user_groupes or \
+ grp_haute_direction in user_groupes:
return True
- return False
+ return False
def has_delete_permission(self, request, obj=None):
user_groupes = request.user.groups.all()
if request.user.is_superuser is True or \
- grp_drh_recrutement in user_groupes or \
- grp_drh2_recrutement in user_groupes or \
- grp_directeurs_bureau_recrutement in user_groupes or \
- grp_administrateurs_recrutement in user_groupes or \
- grp_haute_direction_recrutement in user_groupes:
+ grp_drh in user_groupes or \
+ grp_drh2 in user_groupes or \
+ grp_directeurs_bureau in user_groupes or \
+ grp_administrateurs in user_groupes or \
+ grp_haute_direction in user_groupes:
return True
- return False
+ return False
def has_change_permission(self, request, obj=None):
user_groupes = request.user.groups.all()
if request.user.is_superuser is True or \
- grp_drh_recrutement in user_groupes or \
- grp_drh2_recrutement in user_groupes or \
- grp_directeurs_bureau_recrutement in user_groupes or \
- grp_administrateurs_recrutement in user_groupes or \
- grp_haute_direction_recrutement in user_groupes:
+ grp_drh in user_groupes or \
+ grp_drh2 in user_groupes or \
+ grp_directeurs_bureau in user_groupes or \
+ grp_administrateurs in user_groupes or \
+ grp_haute_direction in user_groupes:
return True
- return False
+ return False
+
class ProxyOffreEmploiAdmin(OffreEmploiAdmin):
- list_display = ('nom', 'date_limite', 'region', 'statut',
- 'est_affiche')
- readonly_fields = ('description', 'bureau', 'duree_affectation',
- 'renumeration', 'debut_affectation', 'lieu_affectation',
- 'nom', 'resume', 'date_limite', 'region', 'poste')
+ list_display = (
+ 'nom', 'date_limite', 'region', 'statut', 'est_affiche'
+ )
+ readonly_fields = (
+ 'description', 'bureau', 'duree_affectation', 'renumeration',
+ 'debut_affectation', 'lieu_affectation', 'nom', 'resume',
+ 'date_limite', 'region', 'poste'
+ )
fieldsets = (
('Nom', {
- 'fields': ('nom', )
+ 'fields': ('nom',)
}),
('Description générale', {
- 'fields': ('description', 'date_limite', )
+ 'fields': ('description', 'date_limite',)
}),
('Coordonnées', {
'fields': ('lieu_affectation', 'bureau', 'region', 'poste',)
}),
('Autre', {
- 'fields': ('debut_affectation', 'duree_affectation',
- 'renumeration', )
+ 'fields': (
+ 'debut_affectation', 'duree_affectation', 'renumeration',
+ )
}),
- )
+ )
inlines = []
-
- ### Lieu de redirection après le change
+ ### Lieu de redirection après le change
def response_change(self, request, obj):
- return HttpResponseRedirect(reverse\
- ('admin:recrutement_proxyoffreemploi_changelist'))
+ return redirect('admin:recrutement_proxyoffreemploi_changelist')
### Formulaire
def get_form(self, request, obj=None, **kwargs):
def has_change_permission(self, request, obj=None):
user_groupes = request.user.groups.all()
if request.user.is_superuser is True or \
- grp_correspondants_rh_recrutement in user_groupes or \
- grp_drh_recrutement in user_groupes or \
- grp_drh2_recrutement in user_groupes or \
- grp_directeurs_bureau_recrutement in user_groupes or \
- grp_administrateurs_recrutement in user_groupes or \
- grp_haute_direction_recrutement in user_groupes:
+ grp_correspondants_rh in user_groupes or \
+ grp_drh in user_groupes or \
+ grp_drh2 in user_groupes or \
+ grp_directeurs_bureau in user_groupes or \
+ grp_administrateurs in user_groupes or \
+ grp_haute_direction in user_groupes:
return True
if obj is not None:
return False
+
class CandidatPieceInline(admin.TabularInline):
model = CandidatPiece
fields = ('candidat', 'nom', 'path',)
extra = 1
max_num = 3
+
class ReadOnlyCandidatPieceInline(CandidatPieceInline):
readonly_fields = ('candidat', 'nom', 'path', )
cand_delete = False
"""
def __init__(self, *args, **kwargs):
super(CandidatEvaluationInlineFormSet, self).__init__(*args, **kwargs)
- self.can_delete = False
+ self.can_delete = False
+
class CandidatEvaluationInline(admin.TabularInline):
model = CandidatEvaluation
extra = 0
formset = CandidatEvaluationInlineFormSet
- ### Fields readonly
+ ### Fields readonly
def get_readonly_fields(self, request, obj=None):
"""
Empêche la modification des évaluations
"""
if obj:
- return self.readonly_fields+('evaluateur', 'note', 'commentaire')
+ return self.readonly_fields + ('evaluateur', 'note', 'commentaire')
return self.readonly_fields
-class CandidatAdmin(VersionAdmin):
- search_fields = ('nom', 'prenom' )
+
+class CandidatAdmin(BaseAdmin, VersionAdmin):
+ search_fields = ('nom', 'prenom')
exclude = ('actif', )
list_editable = ('statut', )
list_display = ('_candidat', 'offre_emploi',
'fields': ('offre_emploi', )
}),
('Informations personnelles', {
- 'fields': ('prenom','nom','genre', 'nationalite',
- 'situation_famille', 'nombre_dependant',)
+ 'fields': (
+ 'prenom', 'nom', 'genre', 'nationalite',
+ 'situation_famille', 'nombre_dependant'
+ )
}),
('Coordonnées', {
- 'fields': ('telephone', 'email', 'adresse', 'ville',
- 'etat_province', 'code_postal', 'pays', )
+ 'fields': (
+ 'telephone', 'email', 'adresse', 'ville', 'etat_province',
+ 'code_postal', 'pays'
+ )
}),
('Informations professionnelles', {
- 'fields': ('niveau_diplome','employeur_actuel',
- 'poste_actuel', 'domaine_professionnel',)
- }),
+ 'fields': (
+ 'niveau_diplome', 'employeur_actuel', 'poste_actuel',
+ 'domaine_professionnel'
+ )
+ }),
('Traitement', {
'fields': ('statut', )
}),
actions = ['envoyer_courriel_candidats', 'changer_statut']
def _candidat(self, obj):
- txt = u"%s %s (%s)" % ( obj.nom.upper(), obj.prenom,
- obj.genre)
+ txt = u"%s %s (%s)" % (obj.nom.upper(), obj.prenom, obj.genre)
txt = textwrap.wrap(txt, 30)
return "<br/>".join(txt)
_candidat.short_description = "Candidat"
return actions
### Envoyer un courriel à des candidats
- def envoyer_courriel_candidats(modeladmin, obj, candidats):
+ def envoyer_courriel_candidats(modeladmin, obj, candidats):
selected = obj.POST.getlist(admin.ACTION_CHECKBOX_NAME)
- return HttpResponseRedirect(reverse('selectionner_template')+
- "?ids=%s" % (",".join(selected)))
+ return HttpResponseRedirect(
+ reverse('selectionner_template') + "?ids=%s" % (",".join(selected))
+ )
envoyer_courriel_candidats.short_description = u'Envoyer courriel'
### Changer le statut à des candidats
### Évaluer un candidat
def evaluer_candidat(self, obj):
- return "<a href='%s?candidat__id__exact=%s'>Évaluer le candidat</a>" % \
- (reverse('admin:recrutement_candidatevaluation_changelist'),
- obj.id)
- evaluer_candidat.allow_tags = True
+ return "<a href='%s?candidat__id__exact=%s'>" \
+ "Évaluer le candidat</a>" % (
+ reverse('admin:recrutement_candidatevaluation_changelist'),
+ obj.id
+ )
+ evaluer_candidat.allow_tags = True
evaluer_candidat.short_description = 'Évaluation'
### Afficher un candidat
items = [u"<li><a href='%s%s'>%s</li>" % \
(settings.OE_PRIVE_MEDIA_URL, pj.path, pj.get_nom_display()) \
for pj in obj.pieces_jointes()]
- html = "<a href='%s'>Voir le candidat</a>" % \
- (reverse('admin:recrutement_proxycandidat_change', args=(obj.id,)))
+ html = "<a href='%s'>Voir le candidat</a>" % (
+ reverse('admin:recrutement_proxycandidat_change', args=(obj.id,))
+ )
return "%s<ul>%s</ul>" % (html, "\n".join(items))
- afficher_candidat.allow_tags = True
+ afficher_candidat.allow_tags = True
afficher_candidat.short_description = u'Détails du candidat'
### Voir l'offre d'emploi
def voir_offre_emploi(self, obj):
- return "<a href='%s'>Voir l'offre d'emploi</a>" % \
- (reverse('admin:recrutement_proxyoffreemploi_change',
- args=(obj.offre_emploi.id,)))
+ return "<a href='%s'>Voir l'offre d'emploi</a>" % (reverse(
+ 'admin:recrutement_proxyoffreemploi_change',
+ args=(obj.offre_emploi.id,)
+ ))
voir_offre_emploi.allow_tags = True
voir_offre_emploi.short_description = "Afficher l'offre d'emploi"
notes = [evaluation.note for evaluation in evaluations \
if evaluation.note is not None]
-
+
if len(notes) > 0:
moyenne_votes = round(float(sum(notes)) / len(notes), 2)
else:
totales = len(evaluations)
faites = len(notes)
- if obj.statut == 'REC':
+ if obj.statut == 'REC':
if totales == faites:
color = "green"
elif faites > 0 and float(totales) / float(faites) >= 2:
else:
color = "black"
- return """<span style="color: %s;">%s (%s/%s)</span>""" % (color, moyenne_votes, faites, totales)
+ return """<span style="color: %s;">%s (%s/%s)</span>""" % (
+ color, moyenne_votes, faites, totales
+ )
calculer_moyenne.allow_tags = True
calculer_moyenne.short_description = "Moyenne"
calculer_moyenne.admin_order_field = ""
def has_add_permission(self, request):
user_groupes = request.user.groups.all()
if request.user.is_superuser is True or \
- grp_correspondants_rh_recrutement in user_groupes or \
- grp_drh_recrutement in user_groupes or \
- grp_drh2_recrutement in user_groupes or \
- grp_directeurs_bureau_recrutement in user_groupes or \
- grp_administrateurs_recrutement in user_groupes or \
- grp_haute_direction_recrutement in user_groupes:
+ grp_correspondants_rh in user_groupes or \
+ grp_drh in user_groupes or \
+ grp_drh2 in user_groupes or \
+ grp_directeurs_bureau in user_groupes or \
+ grp_administrateurs in user_groupes or \
+ grp_haute_direction in user_groupes:
return True
- return False
+ return False
def has_delete_permission(self, request, obj=None):
user_groupes = request.user.groups.all()
if request.user.is_superuser is True or \
- grp_correspondants_rh_recrutement in user_groupes or \
- grp_drh_recrutement in user_groupes or \
- grp_drh2_recrutement in user_groupes or \
- grp_directeurs_bureau_recrutement in user_groupes or \
- grp_administrateurs_recrutement in user_groupes or \
- grp_haute_direction_recrutement in user_groupes:
+ grp_correspondants_rh in user_groupes or \
+ grp_drh in user_groupes or \
+ grp_drh2 in user_groupes or \
+ grp_directeurs_bureau in user_groupes or \
+ grp_administrateurs in user_groupes or \
+ grp_haute_direction in user_groupes:
return True
- return False
+ return False
def has_change_permission(self, request, obj=None):
user_groupes = request.user.groups.all()
if request.user.is_superuser is True or \
- grp_correspondants_rh_recrutement in user_groupes or \
- grp_drh_recrutement in user_groupes or \
- grp_drh2_recrutement in user_groupes or \
- grp_directeurs_bureau_recrutement in user_groupes or \
- grp_administrateurs_recrutement in user_groupes or \
- grp_haute_direction_recrutement in user_groupes:
+ grp_correspondants_rh in user_groupes or \
+ grp_drh in user_groupes or \
+ grp_drh2 in user_groupes or \
+ grp_directeurs_bureau in user_groupes or \
+ grp_administrateurs in user_groupes or \
+ grp_haute_direction in user_groupes:
return True
return False
def queryset(self, request):
"""
- Spécifie un queryset limité, autrement Django exécute un
- select_related() sans paramètre, ce qui a pour effet de charger tous
- les objets FK, sans limite de profondeur. Dès qu'on arrive, dans les
- modèles de Region, il existe plusieurs boucles, ce qui conduit à la
+ Spécifie un queryset limité, autrement Django exécute un
+ select_related() sans paramètre, ce qui a pour effet de charger tous
+ les objets FK, sans limite de profondeur. Dès qu'on arrive, dans les
+ modèles de Region, il existe plusieurs boucles, ce qui conduit à la
génération d'une requête infinie.
-
"""
-
- qs = self.model._default_manager.get_query_set().select_related('offre_emploi').annotate(moyenne=Avg('evaluations__note'))
+ qs = self.model._default_manager.get_query_set() \
+ .select_related('offre_emploi') \
+ .annotate(moyenne=Avg('evaluations__note'))
user_groupes = request.user.groups.all()
- if grp_drh_recrutement in user_groupes or \
- grp_drh2_recrutement in user_groupes or \
- grp_haute_direction_recrutement in user_groupes:
+ if grp_drh in user_groupes or \
+ grp_drh2 in user_groupes or \
+ grp_haute_direction in user_groupes:
return qs
- if grp_directeurs_bureau_recrutement in user_groupes or \
- grp_correspondants_rh_recrutement in user_groupes or \
- grp_administrateurs_recrutement in user_groupes:
+ if grp_directeurs_bureau in user_groupes or \
+ grp_correspondants_rh in user_groupes or \
+ grp_administrateurs in user_groupes:
employe = get_emp(request.user)
return qs.filter(offre_emploi__region=employe.implantation.region)
candidat_ids = [e.candidat.id for e in
CandidatEvaluation.objects.filter(evaluateur=evaluateur)]
return qs.filter(id__in=candidat_ids)
- return qs.none()
+ return qs.none()
class ProxyCandidatAdmin(CandidatAdmin):
list_editable = ()
- readonly_fields = ('statut', 'offre_emploi', 'prenom', 'nom',
- 'genre', 'nationalite', 'situation_famille',
- 'nombre_dependant', 'telephone', 'email', 'adresse',
- 'ville', 'etat_province', 'code_postal', 'pays',
- 'niveau_diplome', 'employeur_actuel', 'poste_actuel',
- 'domaine_professionnel', 'pieces_jointes',)
+ readonly_fields = (
+ 'statut', 'offre_emploi', 'prenom', 'nom', 'genre', 'nationalite',
+ 'situation_famille', 'nombre_dependant', 'telephone', 'email',
+ 'adresse', 'ville', 'etat_province', 'code_postal', 'pays',
+ 'niveau_diplome', 'employeur_actuel', 'poste_actuel',
+ 'domaine_professionnel', 'pieces_jointes'
+ )
fieldsets = (
("Offre d'emploi", {
'fields': ('offre_emploi', )
}),
('Informations personnelles', {
- 'fields': ('prenom','nom','genre', 'nationalite',
- 'situation_famille', 'nombre_dependant',)
+ 'fields': (
+ 'prenom', 'nom', 'genre', 'nationalite', 'situation_famille',
+ 'nombre_dependant'
+ )
}),
('Coordonnées', {
- 'fields': ('telephone', 'email', 'adresse', 'ville',
- 'etat_province', 'code_postal', 'pays', )
+ 'fields': (
+ 'telephone', 'email', 'adresse', 'ville', 'etat_province',
+ 'code_postal', 'pays'
+ )
}),
('Informations professionnelles', {
- 'fields': ('niveau_diplome','employeur_actuel',
- 'poste_actuel', 'domaine_professionnel',)
- }),
+ 'fields': (
+ 'niveau_diplome', 'employeur_actuel', 'poste_actuel',
+ 'domaine_professionnel'
+ )
+ }),
)
inlines = (CandidatEvaluationInline, )
def has_change_permission(self, request, obj=None):
user_groupes = request.user.groups.all()
if request.user.is_superuser is True or \
- grp_correspondants_rh_recrutement in user_groupes or \
- grp_drh_recrutement in user_groupes or \
- grp_drh2_recrutement in user_groupes or \
- grp_directeurs_bureau_recrutement in user_groupes or \
- grp_administrateurs_recrutement in user_groupes or \
- grp_haute_direction_recrutement in user_groupes:
+ grp_correspondants_rh in user_groupes or \
+ grp_drh in user_groupes or \
+ grp_drh2 in user_groupes or \
+ grp_directeurs_bureau in user_groupes or \
+ grp_administrateurs in user_groupes or \
+ grp_haute_direction in user_groupes:
return True
if obj is not None:
def get_actions(self, request):
return None
+
class CandidatPieceAdmin(admin.ModelAdmin):
list_display = ('nom', 'candidat', )
### Queryset
def queryset(self, request):
"""
- Spécifie un queryset limité, autrement Django exécute un
- select_related() sans paramètre, ce qui a pour effet de charger tous
- les objets FK, sans limite de profondeur. Dès qu'on arrive, dans les
- modèles de Region, il existe plusieurs boucles, ce qui conduit à la
- génération d'une requête infinie.
- Affiche la liste de candidats que si le user connecté
- possède un Evaluateur
+ Spécifie un queryset limité, autrement Django exécute un
+ select_related() sans paramètre, ce qui a pour effet de charger tous
+ les objets FK, sans limite de profondeur. Dès qu'on arrive, dans les
+ modèles de Region, il existe plusieurs boucles, ce qui conduit à la
+ génération d'une requête infinie. Affiche la liste de candidats que
+ si le user connecté possède un Evaluateur
"""
qs = self.model._default_manager.get_query_set()
return qs.select_related('candidat')
-class EvaluateurAdmin(VersionAdmin):
+
+class EvaluateurAdmin(BaseAdmin, VersionAdmin):
fieldsets = (
("Utilisateur", {
'fields': ('user',)
def has_add_permission(self, request):
user_groupes = request.user.groups.all()
if request.user.is_superuser is True or \
- grp_drh_recrutement in user_groupes or \
- grp_drh2_recrutement in user_groupes or \
- grp_haute_direction_recrutement in user_groupes:
+ grp_drh in user_groupes or \
+ grp_drh2 in user_groupes or \
+ grp_haute_direction in user_groupes:
return True
- return False
+ return False
def has_delete_permission(self, request, obj=None):
user_groupes = request.user.groups.all()
if request.user.is_superuser is True or \
- grp_drh_recrutement in user_groupes or \
- grp_drh2_recrutement in user_groupes or \
- grp_haute_direction_recrutement in user_groupes:
+ grp_drh in user_groupes or \
+ grp_drh2 in user_groupes or \
+ grp_haute_direction in user_groupes:
return True
- return False
+ return False
def has_change_permission(self, request, obj=None):
user_groupes = request.user.groups.all()
if request.user.is_superuser is True or \
- grp_drh_recrutement in user_groupes or \
- grp_drh2_recrutement in user_groupes or \
- grp_haute_direction_recrutement in user_groupes:
+ grp_drh in user_groupes or \
+ grp_drh2 in user_groupes or \
+ grp_haute_direction in user_groupes:
return True
- return False
+ return False
+
-class CandidatEvaluationAdmin(admin.ModelAdmin):
- search_fields = ('candidat__nom', 'candidat__prenom' )
- list_display = ('_candidat', '_statut', '_offre_emploi', 'evaluateur', '_note',
- '_commentaire', )
+class CandidatEvaluationAdmin(BaseAdmin):
+ search_fields = ('candidat__nom', 'candidat__prenom')
+ list_display = (
+ '_candidat', '_statut', '_offre_emploi', 'evaluateur', '_note',
+ '_commentaire'
+ )
readonly_fields = ('candidat', 'evaluateur')
list_filter = ('candidat__statut', 'candidat__offre_emploi',)
fieldsets = (
('Évaluation du candidat', {
- 'fields': ('candidat', 'evaluateur', 'note', 'commentaire', )
+ 'fields': ('candidat', 'evaluateur', 'note', 'commentaire', )
}),
)
"""
page = self.model.__name__.lower()
redirect_url = 'admin:recrutement_%s_change' % page
-
+
if obj.note is None:
label = "Candidat non évalué"
else:
label = obj.note
if self.evaluateur == obj.evaluateur:
- return "<a href='%s'>%s</a>" % (reverse(redirect_url, args=(obj.id,)), label)
+ return "<a href='%s'>%s</a>" % (
+ reverse(redirect_url, args=(obj.id,)), label
+ )
else:
return label
_note.allow_tags = True
- _note.short_description = "Note"
- _note.admin_order_field = 'note'
+ _note.short_description = "Note"
+ _note.admin_order_field = 'note'
def _statut(self, obj):
return obj.candidat.get_statut_display()
_statut.order_field = 'candidat__statut'
_statut.short_description = 'Statut'
-
### Lien en lecture seule vers le candidat
def _candidat(self, obj):
return "<a href='%s'>%s</a>" \
- % (reverse('admin:recrutement_proxycandidat_change',
+ % (reverse('admin:recrutement_proxycandidat_change',
args=(obj.candidat.id,)), obj.candidat)
- _candidat.allow_tags = True
+ _candidat.allow_tags = True
_candidat.short_description = 'Candidat'
### Afficher commentaire
return "Aucun"
return obj.commentaire
_commentaire.allow_tags = True
- _commentaire.short_description = "Commentaire"
+ _commentaire.short_description = "Commentaire"
### Afficher offre d'emploi
def _offre_emploi(self, obj):
return "<a href='%s'>%s</a>" % \
- (reverse('admin:recrutement_proxyoffreemploi_change',
+ (reverse('admin:recrutement_proxyoffreemploi_change',
args=(obj.candidat.offre_emploi.id,)), obj.candidat.offre_emploi)
_offre_emploi.allow_tags = True
_offre_emploi.short_description = "Voir offre d'emploi"
-
+
def has_add_permission(self, request):
return False
user_groupes = request.user.groups.all()
if request.user.is_superuser or \
- grp_drh_recrutement in user_groupes or \
- grp_drh2_recrutement in user_groupes or \
- grp_correspondants_rh_recrutement in user_groupes or \
- grp_directeurs_bureau_recrutement in user_groupes or \
- grp_administrateurs_recrutement in user_groupes or \
- grp_haute_direction_recrutement in user_groupes:
+ grp_drh in user_groupes or \
+ grp_drh2 in user_groupes or \
+ grp_correspondants_rh in user_groupes or \
+ grp_directeurs_bureau in user_groupes or \
+ grp_administrateurs in user_groupes or \
+ grp_haute_direction in user_groupes:
is_recrutement = True
else:
is_recrutement = False
def queryset(self, request):
"""
- Afficher uniquement les évaluations de l'évaluateur, sauf si
+ Afficher uniquement les évaluations de l'évaluateur, sauf si
l'utilisateur est dans les groupes suivants.
"""
- qs = self.model._default_manager.get_query_set().select_related('offre_emploi')
+ qs = self.model._default_manager.get_query_set() \
+ .select_related('offre_emploi')
user_groupes = request.user.groups.all()
- if grp_drh_recrutement in user_groupes or \
- grp_drh2_recrutement in user_groupes or \
- grp_correspondants_rh_recrutement in user_groupes or \
- grp_directeurs_bureau_recrutement in user_groupes or \
- grp_administrateurs_recrutement in user_groupes or \
- grp_haute_direction_recrutement in user_groupes:
+ if grp_drh in user_groupes or \
+ grp_drh2 in user_groupes or \
+ grp_correspondants_rh in user_groupes or \
+ grp_directeurs_bureau in user_groupes or \
+ grp_administrateurs in user_groupes or \
+ grp_haute_direction in user_groupes:
return qs
- evaluateur = Evaluateur.objects.get(user=request.user)
+ evaluateur = Evaluateur.objects.get(user=request.user)
candidats_evaluations = \
CandidatEvaluation.objects.filter(evaluateur=evaluateur,
candidat__statut__in=('REC', ))
return False
def queryset(self, request):
- qs = self.model._default_manager.get_query_set().select_related('offre_emploi')
- evaluateur = Evaluateur.objects.get(user=request.user)
+ qs = self.model._default_manager.get_query_set() \
+ .select_related('offre_emploi')
+ evaluateur = Evaluateur.objects.get(user=request.user)
candidats_evaluations = \
CandidatEvaluation.objects.filter(evaluateur=evaluateur,
candidat__statut__in=('REC', ))
return qs.filter(id__in=candidats_evaluations_ids)
-class CourrielTemplateAdmin(VersionAdmin):
+class CourrielTemplateAdmin(BaseAdmin, VersionAdmin):
### Actions à afficher
def get_actions(self, request):
actions = super(CourrielTemplateAdmin, self).get_actions(request)
# -*- encoding: utf-8 -*
-from django.core import serializers
+
from datetime import date
+
+from django.contrib import messages
+from django.core import serializers
from django.http import HttpResponse
-from django.template import RequestContext, Template
from django.shortcuts import render_to_response, redirect, get_object_or_404
+from django.template import RequestContext, Template
from django.utils import simplejson
-from django.contrib import messages
-import datamaster_modeles.models as ref
-from auf.django.emploi import models as emploi
from auf.django.emploi import forms as emploiForms
+from auf.django.emploi import models as emploi
+
from project.recrutement.models import Evaluateur, CandidatEvaluation, \
CourrielTemplate
from project.recrutement.views import send_templated_email
-STATUS_OK = 200
+STATUS_OK = 200
STATUS_ERROR = 400
STATUS_ERROR_NOT_FOUND = 404
STATUS_ERROR_PERMISSIONS = 403
+++ /dev/null
-# -*- 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)}
-
from django import forms
from django.forms import ModelForm
-from recrutement import models as recr
+
from auf.django.emploi import forms as emploi
-################################################################################
+from project.recrutement import models as recr
+
+########################################################################
# EVALUATION
-################################################################################
+########################################################################
class CandidatEvaluationForm(ModelForm):
def __init__(self, *args, **kwargs):
self.candidat = kwargs.pop('candidat')
candidat_evaluation.save()
-################################################################################
+########################################################################
# OFFRE EMPLOI
-################################################################################
+########################################################################
class CandidatPieceForm(emploi.CandidatPieceForm):
pass
pass
class OffreEmploiForm(ModelForm):
- #poste = ModelChoiceField(queryset=rh.Poste.objects.all())
-
- #class Meta:
- # model = recr.OffreEmploi
-
- #def __init__(self, *args, **kwargs):
- # super(OffreEmploiForm, self).__init__(*args, **kwargs)
- #
- #def save(self, *args, **kwargs):
- # kwargs2 = kwargs.copy()
- # kwargs2['commit'] = False
- # offre = super(OffreEmploiForm, self).save(*args, **kwargs2)
- # offre.poste = self.cleaned_data.get("poste").id
- # offre.poste_nom = self.cleaned_data.get("poste").nom
- # if 'commit' not in kwargs or kwargs['commit']:
- # offre.save()
- # return offre
-
def clean(self):
cleaned_data = self.cleaned_data
date_limite = cleaned_data.get("date_limite")
supérieure à la date d'affection.")
return cleaned_data
-################################################################################
+########################################################################
# TEMPLATE COURRIEL
-################################################################################
+########################################################################
class CandidatCourrielTemplateForm(ModelForm):
def get_template(self):
return self.data['template']
--- /dev/null
+# -*- encoding: utf-8 -*-
+
+from project.groups import safe_create_groupe
+from project.groups import grp_correspondants_rh, \
+ grp_drh, \
+ grp_drh2, \
+ grp_directeurs_bureau, \
+ grp_administrateurs, \
+ grp_haute_direction
+
+EVALUATEURS = 'Évaluateurs'
+grp_evaluateurs = safe_create_groupe(name=EVALUATEURS)
+
+recrutement_groupes = (
+ grp_evaluateurs,
+ grp_correspondants_rh,
+ grp_drh,
+ grp_drh2,
+ grp_directeurs_bureau,
+ grp_administrateurs,
+ grp_haute_direction,
+)
# -=- encoding: utf-8 -=-
from django.contrib.auth.models import User
-from tinymce import models as tinymce_models
from django.db import models
from django.db.models.signals import pre_save, pre_delete
from django.dispatch import receiver
-
+from tinymce import models as tinymce_models
from south.modelsinspector import add_introspection_rules
add_introspection_rules([], ["^tinymce.models.HTMLField"])
from auf.django.emploi import models as emploi
-from recrutement.workflow import grp_evaluateurs_recrutement
+
+from project.recrutement.groups import grp_evaluateurs
### CONSTANTES
#NOTES
automatiquement remplacés par les informations de \
chaque candidat."
+
# Abstracts
class Metadata(models.Model):
- """Méta-données AUF.
+ """
+ Méta-données AUF.
Metadata.actif = flag remplaçant la suppression.
actif == False : objet réputé supprimé.
"""
actif = models.BooleanField(default=True)
date_creation = models.DateField(auto_now_add=True, )
-
+
class Meta:
abstract = True
+
class Candidat(emploi.Candidat):
class Meta:
proxy = True
moyenne_votes = "Non disponible"
return moyenne_votes
-class OffreEmploi(emploi.OffreEmploi):
- class Meta:
- proxy = True
-
-
-class CandidatPiece(emploi.CandidatPiece):
- class Meta:
- proxy = True
class OffreEmploiManager(models.Manager):
def get_query_set(self):
return super(OffreEmploiManager, self).get_query_set().\
select_related(*fkeys).all()
+
class ProxyOffreEmploi(emploi.OffreEmploi):
class Meta:
proxy = True
def __unicode__(self):
return '%s [%s] - View' % (self.nom, self.id)
+
class ProxyCandidat(emploi.Candidat):
class Meta:
proxy = True
def __unicode__(self):
return '%s %s [%s]' % (self.prenom, self.nom, self.id)
+
class Evaluateur(models.Model):
user = models.ForeignKey(User, unique=True, verbose_name=u"Évaluateur")
def __unicode__(self):
return '%s %s' % (self.user.first_name, self.user.last_name)
+
# Synchro des objets évaluateurs pour mettre les users Django dans le groupe
# évaluateurs, afin d'y mettre des permissions
@receiver(pre_save, sender=Evaluateur)
def sync_add_groupe_evaluateur(sender, **kwargs):
instance = kwargs['instance']
- if grp_evaluateurs_recrutement not in instance.user.groups.all():
- instance.user.groups.add(grp_evaluateurs_recrutement)
+ if grp_evaluateurs not in instance.user.groups.all():
+ instance.user.groups.add(grp_evaluateurs)
instance.user.save()
+
@receiver(pre_delete, sender=Evaluateur)
def sync_delete_groupe_evaluateur(sender, **kwargs):
instance = kwargs['instance']
- instance.user.groups.remove(grp_evaluateurs_recrutement)
+ instance.user.groups.remove(grp_evaluateurs)
instance.user.save()
class CandidatEvaluation(models.Model):
- candidat = models.ForeignKey(emploi.Candidat, db_column='candidat',
- related_name='evaluations',)
- evaluateur = models.ForeignKey(Evaluateur, db_column='evaluateur',
- related_name='+', verbose_name=u'Évaluateur')
+ candidat = models.ForeignKey(emploi.Candidat, db_column='candidat',
+ related_name='evaluations',)
+ evaluateur = models.ForeignKey(Evaluateur, db_column='evaluateur',
+ related_name='+', verbose_name=u'Évaluateur')
note = models.IntegerField(choices=NOTES, blank=True, null=True)
commentaire = models.TextField(null=True, blank=True, default='Aucun')
- date = models.DateField(auto_now_add=True,)
+ date = models.DateField(auto_now_add=True,)
class Meta:
verbose_name = u'évaluation du candidat'
return u"non disponible"
return u"%s %s" % (self.note, self.commentaire,)
+
class MesCandidatEvaluation(CandidatEvaluation):
class Meta:
('REF', 'Refusé'),
)
-class CourrielTemplate(models.Model):
- nom_modele = models.CharField(max_length=100, verbose_name=u'Nom du modèle',)
- sujet = models.CharField(max_length=100, verbose_name=u'Sujet du courriel')
- plain_text = models.TextField(verbose_name=u'Texte',
- help_text=HELP_TEXT_TAGS_ACCEPTES, )
+class CourrielTemplate(models.Model):
+ nom_modele = models.CharField(u'nom du modèle', max_length=100)
+ sujet = models.CharField(u'sujet du courriel', max_length=100)
+ plain_text = models.TextField(u'texte', help_text=HELP_TEXT_TAGS_ACCEPTES)
def __unicode__(self):
- return u'%s' % self.nom_modele
+ return self.nom_modele
class Meta:
- ordering = ['nom_modele',]
+ ordering = ('nom_modele',)
verbose_name = "Modèle de courriel"
verbose_name_plural = "Modèles de courriel"
+
class CandidatCourriel(models.Model):
- candidats = models.ManyToManyField(Candidat, verbose_name=u"Candidats", )
- template = models.ForeignKey(CourrielTemplate, db_column='template',
- related_name='+', verbose_name=u"Modèle de courriel", )
- sujet = models.CharField(max_length=255, blank=True,
- help_text=HELP_TEXT_TAGS_ACCEPTES, )
- plain_text = models.TextField(verbose_name=u'Texte', blank=True,
- help_text=HELP_TEXT_TAGS_ACCEPTES, )
- html = tinymce_models.HTMLField(verbose_name=u'Texte en HTML', null=True,
- blank=True, help_text=HELP_TEXT_TAGS_ACCEPTES, )
+ candidats = models.ManyToManyField(Candidat, verbose_name=u"Candidats")
+ template = models.ForeignKey(
+ CourrielTemplate, db_column='template', related_name='+',
+ verbose_name=u"Modèle de courriel"
+ )
+ sujet = models.CharField(
+ max_length=255, blank=True, help_text=HELP_TEXT_TAGS_ACCEPTES
+ )
+ plain_text = models.TextField(
+ u'texte', blank=True, help_text=HELP_TEXT_TAGS_ACCEPTES
+ )
+ html = tinymce_models.HTMLField(
+ verbose_name=u'texte en HTML', null=True, blank=True,
+ help_text=HELP_TEXT_TAGS_ACCEPTES
+ )
def __unicode__(self):
- return '%s' % (self.titre)
+ return self.titre
class Meta:
verbose_name = u"modèle de courriel"
+++ /dev/null
-# -*- encoding: utf-8 -*-
-from django.contrib.auth.models import Group
-
-from recrutement.workflow import recrutement_groupes
-
-def user_in_recrutement_groupes(user):
- """
- Teste si un user Django fait parti des groupes prédéfinis de recrutement.
- """
- if user.is_superuser:
- return True
- for g in user.groups.all():
- if g in recrutement_groupes:
- return True
- return False
+++ /dev/null
-"""
-This file demonstrates two different styles of tests (one doctest and one
-unittest). These will both pass when you run "manage.py test".
-
-Replace these with more appropriate tests for your application.
-"""
-
-from django.test import TestCase
-
-class SimpleTest(TestCase):
- def test_basic_addition(self):
- """
- Tests that 1 + 1 always equals 2.
- """
- self.failUnlessEqual(1 + 1, 2)
-
-__test__ = {"doctest": """
-Another way to test that 1 + 1 is equal to 2.
-
->>> 1 + 1 == 2
-True
-"""}
-
# -*- encoding: utf-8 -*
from django.conf.urls.defaults import patterns, url
+
from auf.django.emploi import settings
-urlpatterns = patterns('recrutement.views',
+urlpatterns = patterns('project.recrutement.views',
url(r'^$', 'index', name='recrutement_index'),
-
- (r'^prive/(?P<path>.*)$', 'mediaserve', {'document_root': settings.OE_PRIVE_MEDIA_ROOT}),
-
- url(r'^affecter_evaluateurs_offre_emploi/$',
- 'affecter_evaluateurs_offre_emploi',
+ url(r'^prive/(?P<path>.*)$', 'mediaserve',
+ {'document_root': settings.OE_PRIVE_MEDIA_ROOT}),
+ url(r'^affecter_evaluateurs_offre_emploi/$',
+ 'affecter_evaluateurs_offre_emploi',
name='affecter_evaluateurs_offre_emploi'),
-
- url(r'^envoyer_courriel_candidats/$',
- 'envoyer_courriel_candidats',
+ url(r'^envoyer_courriel_candidats/$', 'envoyer_courriel_candidats',
name='envoyer_courriel_candidats'),
-
- url(r'^selectionner_template/$',
- 'selectionner_template',
+ url(r'^selectionner_template/$', 'selectionner_template',
name='selectionner_template'),
-
- url(r'candidat_pdf/$', 'candidat_pdf',
- name='candidat_pdf'),
+ url(r'candidat_pdf/$', 'candidat_pdf', name='candidat_pdf'),
)
# -*- encoding: utf-8 -*-
-from django.core.urlresolvers import reverse
from django.contrib import messages
-from django.views.static import serve
-from django.http import HttpResponseRedirect
-from django.shortcuts import render_to_response, redirect
-from django.template import Context, RequestContext, Template
from django.core.mail import EmailMultiAlternatives
+from django.core.urlresolvers import reverse
+from django.http import HttpResponseRedirect
+from django.shortcuts import render, redirect
+from django.template import Context, Template
+from django.views.static import serve
-from forms import *
-from models import *
-from recrutement.workflow import recrutement_groupes
+from auf.django.emploi import models as emploi
-################################################################################
-# MEDIA PRIVE
-################################################################################
+from project.decorators import redirect_interdiction
+
+from project.recrutement import forms
+from project.recrutement import models
+from project.recrutement.groups import recrutement_groupes
+
+# MEDIA PRIVE
def mediaserve(request, path, document_root=None, show_indexes=False):
"""
Sécuriser l'accès aux fichiers uploadés
return serve(request, path, document_root, show_indexes)
+
def index(request):
- return render_to_response('recrutement/index.html', {},
- RequestContext(request))
+ c = {}
+ return render(request, 'recrutement/index.html', c)
+
def selectionner_template(request):
candidat_ids = request.GET.get('ids')
if request.method == "POST":
- form = CandidatCourrielTemplateForm(request.POST)
+ form = forms.CandidatCourrielTemplateForm(request.POST)
if form.is_valid():
form.save()
courriel_template_id = form.get_template()
-
- return HttpResponseRedirect(reverse('envoyer_courriel_candidats')+
- "?ids_cand=%s&id_temp=%s" % (candidat_ids, courriel_template_id))
+
+ return HttpResponseRedirect(
+ reverse('envoyer_courriel_candidats') +
+ "?ids_cand=%s&id_temp=%s" %
+ (candidat_ids, courriel_template_id)
+ )
else:
- form = CandidatCourrielTemplateForm()
+ form = forms.CandidatCourrielTemplateForm()
+
+ c = {
+ 'form': form,
+ }
+ return render(request, "recrutement/selectionner_template.html", c)
- c = {'form' : form}
- return render_to_response("recrutement/selectionner_template.html",
- Context(c), context_instance = RequestContext(request))
def envoyer_courriel_candidats(request):
candidat_ids = request.GET.get('ids_cand').split(',')
- candidats = Candidat.objects.filter(id__in=candidat_ids)
+ candidats = models.Candidat.objects.filter(id__in=candidat_ids)
template_id = request.GET.get('id_temp')
- template = CourrielTemplate.objects.get(id=template_id)
+ template = models.CourrielTemplate.objects.get(id=template_id)
if request.method == "POST":
- form = CandidatCourrielForm(request.POST, instance=template,
- candidats=candidats, template=template)
+ form = forms.CandidatCourrielForm(
+ request.POST, instance=template, candidats=candidats,
+ template=template
+ )
if form.is_valid():
form.save()
- courriel_template = CourrielTemplate()
+ courriel_template = models.CourrielTemplate()
courriel_template.nom_modele = template.nom_modele
courriel_template.sujet = form.data['sujet']
courriel_template.plain_text = form.data['plain_text']
- for cand in candidats:
+ for cand in candidats:
send_templated_email(cand, courriel_template)
- messages.add_message(request, messages.SUCCESS,
- "Le email a été envoyé aux candidats.")
+ messages.add_message(
+ request, messages.SUCCESS,
+ "Le email a été envoyé aux candidats."
+ )
return redirect("admin:recrutement_candidat_changelist")
else:
- form = CandidatCourrielForm(candidats=candidats, template=template,
- initial={'sujet': template.sujet,
- 'plain_text': template.plain_text,})
+ form = forms.CandidatCourrielForm(
+ candidats=candidats, template=template,
+ initial={
+ 'sujet': template.sujet,
+ 'plain_text': template.plain_text
+ }
+ )
+ c = {
+ 'form': form,
+ }
+ return render(request, "recrutement/envoyer_courriel_candidats.html", c)
- c = {'form' : form}
- return render_to_response("recrutement/envoyer_courriel_candidats.html",
- Context(c), context_instance = RequestContext(request))
def affecter_evaluateurs_offre_emploi(request):
offre_emploi_ids = request.GET.get('ids').split(',')
- offres_emploi = OffreEmploi.objects.filter(id__in=offre_emploi_ids)
+ offres_emploi = emploi.OffreEmploi.objects.filter(id__in=offre_emploi_ids)
if request.method == "POST":
- form = EvaluateurForm(request.POST, offres_emploi=offres_emploi)
+ form = forms.EvaluateurForm(request.POST, offres_emploi=offres_emploi)
if form.is_valid():
form.save()
- messages.add_message(request, messages.SUCCESS,
- "Les évaluateurs ont été affectés aux offres d'emploi.")
+ messages.add_message(
+ request, messages.SUCCESS,
+ "Les évaluateurs ont été affectés aux offres d'emploi."
+ )
return redirect("admin:recrutement_proxyoffreemploi_changelist")
else:
- form = EvaluateurForm(offres_emploi=offres_emploi)
+ form = forms.EvaluateurForm(offres_emploi=offres_emploi)
+ c = {
+ 'form': form,
+ }
+ return render(request, "recrutement/affecter_evaluateurs.html", c)
- c = {'form' : form}
- return render_to_response("recrutement/affecter_evaluateurs.html",
- Context(c), context_instance = RequestContext(request))
def send_templated_email(candidat, template):
from django.conf import settings
# Sujet
sujet_template = Template(template.sujet)
- dict_sujet = {"offre_emploi": candidat.offre_emploi.nom,}
+ dict_sujet = {"offre_emploi": candidat.offre_emploi.nom}
sujet = Context(dict_sujet)
# Plain text
texte_template = Template(template.plain_text)
- dict_texte = {"nom_candidat": candidat.nom,
- "prenom_candidat": candidat.prenom,
- "offre_emploi": candidat.offre_emploi.nom,
- "genre_candidat": "Monsieur" if candidat.genre == "M" \
- else "Madame",
- }
+ dict_texte = {
+ "nom_candidat": candidat.nom,
+ "prenom_candidat": candidat.prenom,
+ "offre_emploi": candidat.offre_emploi.nom,
+ "genre_candidat": "Monsieur" if candidat.genre == "M" else "Madame",
+ }
texte = Context(dict_texte)
if getattr(settings, 'MAILING_ACTIF', False):
- dst_emails = [candidat.email, ]
+ dst_emails = [candidat.email]
else:
- dst_emails = ['developpeurs@ca.auf.org', ]
- msg = EmailMultiAlternatives(sujet_template.render(sujet),
- texte_template.render(texte),
- 'recrutement@auf.org',
- dst_emails,
- )
+ dst_emails = ['developpeurs@ca.auf.org']
+ msg = EmailMultiAlternatives(
+ sujet_template.render(sujet), texte_template.render(texte),
+ 'recrutement@auf.org', dst_emails
+ )
msg.send()
def candidat_pdf(request):
candidat_id = request.GET.get('id')
- candidat = Candidat.objects.get(id=candidat_id)
-
- return render_to_response("recrutement/candidat_pdf.html",
- Context({'candidat' : candidat}), context_instance = RequestContext(request))
+ candidat = models.Candidat.objects.get(id=candidat_id)
+ c = {
+ 'candidat': candidat,
+ }
+ return render(request, "recrutement/candidat_pdf.html", c)
+++ /dev/null
-# -*- encoding: utf-8 -*-
-
-from rh.groups import safe_create_groupe
-from rh.groups import CORRESPONDANT_RH, DRH_NIVEAU_1, DRH_NIVEAU_2, \
- DIRECTEUR_DE_BUREAU, ADMINISTRATEURS, HAUTE_DIRECTION
-
-grp_evaluateurs_recrutement = safe_create_groupe(name='Évaluateurs')
-grp_correspondants_rh_recrutement = safe_create_groupe(name=CORRESPONDANT_RH)
-grp_drh_recrutement = safe_create_groupe(name=DRH_NIVEAU_1)
-grp_drh2_recrutement = safe_create_groupe(name=DRH_NIVEAU_2)
-grp_directeurs_bureau_recrutement = \
- safe_create_groupe(name=DIRECTEUR_DE_BUREAU)
-grp_administrateurs_recrutement = safe_create_groupe(name=ADMINISTRATEURS)
-grp_haute_direction_recrutement = safe_create_groupe(name=HAUTE_DIRECTION)
-
-recrutement_groupes = (
- grp_evaluateurs_recrutement,
- grp_correspondants_rh_recrutement,
- grp_drh_recrutement,
- grp_drh2_recrutement,
- grp_directeurs_bureau_recrutement,
- grp_administrateurs_recrutement,
- grp_haute_direction_recrutement,
-)
# -*- encoding: utf-8 -*-
import datetime
-
-from ajax_select import make_ajax_form
-from auf.django.metadata.admin import \
- AUFMetadataAdminMixin, AUFMetadataInlineAdminMixin, \
- AUF_METADATA_READONLY_FIELDS
+
from django.core.urlresolvers import reverse
from django.contrib import admin
from django.conf import settings
-from django.db.models import Q
+from django.db.models import Q, Count
from django.template.defaultfilters import date
+from ajax_select import make_ajax_form
+
+from auf.django.metadata.admin import \
+ AUFMetadataAdminMixin, AUFMetadataInlineAdminMixin, \
+ AUF_METADATA_READONLY_FIELDS
import auf.django.references.models as ref
-import models as rh
-from forms import \
+
+from project.decorators import in_drh_or_admin
+from project.groups import grp_correspondants_rh
+from project.groups import get_employe_from_user
+
+import project.rh.models as rh
+from project.rh.forms import \
ContratForm, AyantDroitForm, EmployeAdminForm, AjaxSelect, DossierForm
-from dae.utils import get_employe_from_user
-from change_list import ChangeList
-from groups import grp_correspondants_rh
-from decorators import in_drh_or_admin
+from project.rh.change_list import ChangeList
+
+
+class BaseAdmin(admin.ModelAdmin):
+
+ class Media:
+ css = {'screen': ('css/admin_custom.css',)}
class ArchiveMixin(object):
class ServiceProxy(rh.Service):
""" Proxy utilisé pour les organigrammes opar service """
+
class Meta:
proxy = True
verbose_name = u"Organigramme par services"
model = rh.PosteComparaison
-class ClassementAdmin(AUFMetadataAdminMixin, admin.ModelAdmin):
+class ClassementAdmin(AUFMetadataAdminMixin, BaseAdmin):
list_display = ('_classement', '_date_modification', 'user_modification', )
fieldsets = AUFMetadataAdminMixin.fieldsets + (
(None, {
_date_modification.admin_order_field = 'date_modification'
-class CommentaireAdmin(admin.ModelAdmin):
- pass
-
-
-class DeviseAdmin(AUFMetadataAdminMixin, admin.ModelAdmin, ArchiveMixin):
+class DeviseAdmin(AUFMetadataAdminMixin, BaseAdmin, ArchiveMixin):
list_display = (
'code',
'nom',
_date_modification.admin_order_field = 'date_modification'
-class DossierAdmin(DateRangeMixin, AUFMetadataAdminMixin, \
- ProtectRegionMixin,