From 0b0545bd2bd10f5d49df557346a9ff423ce46b2c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Olivier=20Larchev=C3=AAque?= Date: Fri, 20 Jan 2012 15:35:21 -0500 Subject: [PATCH] boostup --- project/development.py | 6 +++--- project/rh/catalogues.py | 32 ++++++++++++++++++++++++++++++++ project/rh/lib.py | 13 +++++++------ project/rh/managers.py | 31 ++++++++++++++++--------------- project/rh/models.py | 10 ++++++++-- project/settings.py | 2 ++ 6 files changed, 68 insertions(+), 26 deletions(-) diff --git a/project/development.py b/project/development.py index 7db0eec..abacc3b 100644 --- a/project/development.py +++ b/project/development.py @@ -5,9 +5,9 @@ DEBUG=True TEMPLATE_DEBUG=DEBUG # Décommentez ces lignes pour activer la debugtoolbar -INTERNAL_IPS = ('127.0.0.1',) -INSTALLED_APPS += ('debug_toolbar',) -MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',) +#INTERNAL_IPS = ('127.0.0.1',) +#INSTALLED_APPS += ('debug_toolbar',) +#MIDDLEWARE_CLASSES += ('debug_toolbar.middleware.DebugToolbarMiddleware',) AUTH_PASSWORD_REQUIRED = False EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend' diff --git a/project/rh/catalogues.py b/project/rh/catalogues.py index 79d6e66..2fc3c8e 100644 --- a/project/rh/catalogues.py +++ b/project/rh/catalogues.py @@ -83,3 +83,35 @@ class ValeurPoint(object): def get_objects(self, ids): return rh.ValeurPoint.objects.filter(id__in=ids) + +class Employe(object): + + def get_query(self,q,request): + f = Q(nom__icontains=q) | Q(prenom__icontains=q) | Q(nom_affichage__icontains=q) + employes = rh.Employe.objects.filter(f) + return employes + + def format_result(self, employe): + return unicode(employe) + + def format_item(self, employe): + return self.format_result(employe) + + def get_objects(self, ids): + return rh.Employe.objects.filter(id__in=ids) + +class Dossier(object): + + def get_query(self,q,request): + f = Q(poste__nom=q) | Q(poste__type_poste__nom=q) | Q(employe__nom__icontains=q) | Q(employe__prenom__icontains=q) | Q(employe__nom_affichage__icontains=q) + dossiers = rh.Dossier.objects.filter(f) + return dossiers + + def format_result(self, dossier): + return unicode(dossier) + + def format_item(self, dossier): + return self.format_result(dossier) + + def get_objects(self, ids): + return rh.Dossier.objects.filter(id__in=ids) diff --git a/project/rh/lib.py b/project/rh/lib.py index a97f28d..72d0e92 100644 --- a/project/rh/lib.py +++ b/project/rh/lib.py @@ -12,7 +12,7 @@ from django.db.models import Q from ajax_select import make_ajax_form from auf.django.metadata.admin import AUFMetadataAdminMixin, AUFMetadataInlineAdminMixin, AUF_METADATA_READONLY_FIELDS from project.rh import models as rh -from forms import DossierForm, ContratForm, AyantDroitForm, EmployeAdminForm, AjaxSelect +from forms import ContratForm, AyantDroitForm, EmployeAdminForm, AjaxSelect from dae.utils import get_employe_from_user @@ -258,8 +258,7 @@ class DeviseAdmin(AUFMetadataAdminMixin, admin.ModelAdmin): ) -class DossierAdmin(AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin,): - form = DossierForm +class DossierAdmin(AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin, AjaxSelect): alphabet_filter = 'employe__nom' search_fields = ('employe__nom', 'employe__prenom', 'poste__nom', 'poste__nom_feminin') list_display = ('_id', '_employe', '_actif', '_poste', 'date_debut', 'date_fin', 'date_modification') @@ -283,9 +282,11 @@ class DossierAdmin(AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin,) 'fields': (('date_debut', 'date_fin'), ) }), ) - - class Media: - js = ('js/dossier.js',) + form = make_ajax_form(rh.Dossier, { + 'employe' : 'employes', + 'poste' : 'postes', + 'remplacement_de' : 'dossiers', + }) def lookup_allowed(self, key, value): if key in ( diff --git a/project/rh/managers.py b/project/rh/managers.py index def6658..d092a3f 100644 --- a/project/rh/managers.py +++ b/project/rh/managers.py @@ -81,21 +81,21 @@ class PosteManager(SecurityManager): def ma_region_ou_service(self, user): return super(PosteManager, self).ma_region_ou_service(user).filter(actif=True) - #def get_query_set(self): - # fkeys = ( - # 'id_rh', - # 'responsable', - # 'implantation', - # 'implantation.bureau_rattachement', - # 'type_poste', - # 'service', - # 'classement_min', - # 'classement_max', - # 'valeur_point_min', - # 'valeur_point_max', - # ) - # return super(PosteManager, self).get_query_set() \ - # .select_related(*fkeys).all() + def get_query_set(self): + fkeys = ( + #'id_rh', + #'responsable', + #'implantation', + #'implantation.bureau_rattachement', + 'type_poste', + #'service', + #'classement_min', + #'classement_max', + #'valeur_point_min', + #'valeur_point_max', + ) + return super(PosteManager, self).get_query_set() \ + .select_related(*fkeys).all() class DossierManager(SecurityManager): @@ -105,6 +105,7 @@ class DossierManager(SecurityManager): def get_query_set(self): fkeys = ( 'poste', + 'employe', ) return super(DossierManager, self).get_query_set() \ .select_related(*fkeys).all() diff --git a/project/rh/models.py b/project/rh/models.py index 1d0a78f..140a7e2 100644 --- a/project/rh/models.py +++ b/project/rh/models.py @@ -565,6 +565,7 @@ class Dossier_(AUFMetadata): # Recrutement remplacement = models.BooleanField(default=False) remplacement_de = models.ForeignKey('self', related_name='+', + help_text=u"Taper le nom de l'employé", null=True, blank=True) statut_residence = models.CharField(max_length=10, default='local', verbose_name = u"Statut", null=True, @@ -632,8 +633,13 @@ class Dossier_(AUFMetadata): class Dossier(Dossier_): __doc__ = Dossier_.__doc__ - poste = models.ForeignKey('%s.Poste' % app_context(), db_column='poste', related_name='%(app_label)s_dossiers') - employe = models.ForeignKey('Employe', db_column='employe', + poste = models.ForeignKey('%s.Poste' % app_context(), + db_column='poste', + related_name='%(app_label)s_dossiers', + help_text=u"Taper le nom du poste ou du type de poste", + ) + employe = models.ForeignKey('Employe', db_column='employe', + help_text=u"Taper le nom de l'employé", related_name='%(app_label)s_dossiers', verbose_name=u"Employé") diff --git a/project/settings.py b/project/settings.py index 947f3a3..82c876b 100644 --- a/project/settings.py +++ b/project/settings.py @@ -126,6 +126,8 @@ AJAX_LOOKUP_CHANNELS = { 'typepostes' : ('rh.catalogues', 'TypePoste'), 'postes' : ('rh.catalogues', 'Poste'), 'valeurpoints' : ('rh.catalogues', 'ValeurPoint'), + 'employes' : ('rh.catalogues', 'Employe'), + 'dossiers' : ('rh.catalogues', 'Dossier'), } AJAX_SELECT_BOOTSTRAP = True AJAX_SELECT_INLINES = 'inline' -- 1.7.10.4