self.children.append(modules.AppList(
_(u'Inter-systèmes'),
models=(
- 'project.rh.models.ResponsableImplantation',
+ 'project.rh.models.ResponsableImplantationProxy',
),
))
# -*- encoding: utf-8 -*-
import datetime
-
+
from django.core.urlresolvers import reverse
from django.contrib import admin
from django.conf import settings
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 project.rh.forms import ContratForm, AyantDroitForm, EmployeAdminForm, \
+ AjaxSelect, DossierForm, ResponsableInlineForm
+
from project.rh.change_list import ChangeList
model = rh.ResponsableImplantation
extra = 0
fk_name = "implantation"
+ form = ResponsableInlineForm
class ResponsableImplantationAdmin(BaseAdmin):
actions = None
+ fields = ('nom', )
+ inlines = (ResponsableInline, )
list_filter = ('region', 'statut', )
list_display = ('_region', '_nom', 'statut', '_responsable', )
+ list_display_links = ('_nom',)
readonly_fields = ('nom', )
- fields = ('nom', )
- inlines = (ResponsableInline, )
+ search_fields = (
+ 'nom',
+ 'responsable__employe__id',
+ 'responsable__employe__nom',
+ 'responsable__employe__prenom',
+ )
+ ordering = ('nom',)
def _region(self, obj):
return obj.region.code
return u"<span %s>Pas de responsable</span>" % css
_responsable.allow_tags = True
_responsable.short_description = u"Responsable"
+ _responsable.admin_order_field = 'responsable__employe__nom'
def has_add_permission(self, request=None):
return False
from django import forms
from ajax_select.fields import AutoCompleteSelectField
-from project.rh.models import Dossier, Contrat, AyantDroit, Employe
+from project.rh.models import Dossier, Contrat, AyantDroit, Employe, \
+ ResponsableImplantation
class AjaxSelect(object):
self.fields['date_naissance'].widget = forms.widgets.DateInput()
+class ResponsableInlineForm(forms.ModelForm):
+ employes_actifs = Employe.objects.actifs()
+ employe = forms.ModelChoiceField(queryset=employes_actifs)
+
+ class Meta:
+ model = ResponsableImplantation
# -*- encoding: utf-8 -*-
import datetime
+from datetime import date
from django.db import models
from django.db.models import Q
-from auf.django.metadata.managers import NoDeleteManager
+from auf.django.metadata.managers import NoDeleteManager, NoDeleteQuerySet
from project.groups import get_employe_from_user
from project.groups import grp_administrateurs, \
return super(DossierManager, self).ma_region_ou_service(user)
+class EmployeQuerySet(NoDeleteQuerySet):
+ def actifs(self, date_min=None, date_max=None, annee=None):
+ qs = self
+ if annee:
+ janvier = date(annee, 1, 1)
+ decembre = date(annee, 12, 31)
+ date_min = max(janvier, date_min) if date_min else janvier
+ date_max = min(decembre, date_max) if date_max else decembre
+ if not date_min and not date_max:
+ date_min = date_max = date.today()
+ if date_min:
+ qs = qs.filter(
+ Q(rh_dossiers__date_fin__gte=date_min) | Q(rh_dossiers__date_fin=None)
+ )
+ if date_max:
+ qs = qs.filter(
+ Q(rh_dossiers__date_debut__lte=date_max) | Q(rh_dossiers__date_debut=None)
+ )
+ return qs
+
+class EmployeManager(NoDeleteManager):
+ def get_query_set(self):
+ return EmployeQuerySet(self.model) \
+ .filter(supprime=False)
+
+ def actifs(self, *args, **kwargs):
+ return self.get_query_set().actifs(*args, **kwargs)
+
class PosteComparaisonManager(SecurityManager):
use_for_related_fields = True
prefixe_implantation = "implantation__region"
RechercheTemporelle, KEY_STATUT, STATUT_ACTIF, STATUT_INACTIF, \
STATUT_FUTUR
from project.rh.managers import \
- PosteManager, DossierManager, DossierComparaisonManager, \
+ PosteManager, DossierManager, EmployeManager, \
+ DossierComparaisonManager, \
PosteComparaisonManager, DeviseManager, ServiceManager, \
TypeRemunerationManager
from project.rh.validators import validate_date_passee
Cette classe aurait pu avantageusement s'appeler Personne car la notion
d'employé n'a pas de sens si aucun Dossier n'existe pour une personne.
"""
+
+ objects = EmployeManager()
+
# Identification
nom = models.CharField(max_length=255)
prenom = models.CharField(u"prénom", max_length=255)
class ResponsableImplantationProxy(ref.Implantation):
+ def save(self):
+ pass
+
class Meta:
proxy = True
verbose_name = u"Responsable d'implantation"