from project.dae.workflow import POSTE_ETATS_BOUTONS, POSTE_ETAT_FINALISE
+def filtered_archived_fields_form_factory(*fields):
+ """
+ Retourne un model form
+ """
+ class FilterArchivedFields(object):
+ def __init__(self, *a, **kw):
+ super(FilterArchivedFields, self).__init__(*a, **kw)
+ for f in fields:
+ self.fields[f].queryset = (
+ self.fields[f]._queryset.filter(archive=False)
+ )
+ return FilterArchivedFields
+
+
class BaseInlineFormSetWithInitial(BaseInlineFormSet):
"""
Cette classe permet de fournir l'option initial aux inlineformsets.
)
-class DossierComparaisonForm(forms.ModelForm):
+class DossierComparaisonForm(
+ filtered_archived_fields_form_factory(
+ 'classement',
+ ),
+ forms.ModelForm):
recherche = AutoCompleteSelectField('dossiers', required=False)
poste = forms.CharField(
)
-class PosteComparaisonForm(forms.ModelForm):
+class PosteComparaisonForm(
+ filtered_archived_fields_form_factory('classement'),
+ forms.ModelForm):
recherche = AutoCompleteSelectField('dae_postes', required=False)
)
-class PosteForm(forms.ModelForm):
+class PosteForm(filtered_archived_fields_form_factory(
+ 'classement_min',
+ 'classement_max',),
+ forms.ModelForm):
""" Formulaire des postes. """
# On ne propose que les services actifs
self.fields['employe'].choices = _employe_choices(self, request)
-class DossierForm(forms.ModelForm):
+class DossierForm(
+ filtered_archived_fields_form_factory(
+ 'classement',
+ 'classement_anterieur',
+ 'classement_titulaire_anterieur',
+ ),
+ forms.ModelForm):
""" Formulaire des dossiers. """
class Meta:
exclude = ('etat', 'employe', 'poste', 'date_debut',)
if isinstance(self.choices, QuerySet) and value:
display = self.choices.get(id=value)
elif value:
- display = dict(self.choices)[value]
+ display = dict(self.choices)[int(value)]
else:
display = ''
return mark_safe(
class ClassementHistoriqueForm(forms.ModelForm):
- def __init__(self, *a, **kw):
- super(ClassementHistoriqueForm, self).__init__(*a, **kw)
- self.fields['classement'].queryset = rh.Classement.avec_archives.all()
class Meta:
model = rh.RHDossierClassementRecord
archive = models.BooleanField(u'archivé', default=False)
objects = ArchivableManager()
- avec_archives = models.Manager()
class Meta:
abstract = True
)
NATURE_REMUNERATION_CHOICES = (
- (u'Traitement', u'Traitement'),
- (u'Indemnité', u'Indemnité autre'),
+ (u'Traitement', u'Traitements'),
+ (u'Indemnité', u'Indemnités autres'),
(u'Charges', u'Charges patronales'),
- (u'Accessoire', u'Accessoire'),
+ (u'Accessoire', u'Accessoires'),
(u'RAS', u'Rémunération autre source'),
)
)
-class ClassementManager(ArchivableManager):
+class ClassementManager(models.Manager):
"""
Ordonner les spcéfiquement les classements.
"""
def get_query_set(self):
- qs = super(self.__class__, self).get_query_set()
+ qs = super(ClassementManager, self).get_query_set()
qs = qs.extra(select={
'ponderation': 'FIND_IN_SET(type,"SO,HG,S,T,P,C,D")'
})
return qs.all()
+class ClassementArchivableManager(ClassementManager,
+ ArchivableManager):
+ pass
+
+
class Classement_(Archivable):
"""
Éléments de classement de la
salaire de base = coefficient * valeur du point de l'Implantation du Poste
"""
objects = ClassementManager()
+ sans_archives = ClassementArchivableManager()
# Identification
type = models.CharField(max_length=10, choices=TYPE_CLASSEMENT_CHOICES)