X-Git-Url: http://git.auf.org/?p=auf_rh_dae.git;a=blobdiff_plain;f=project%2Frh%2Flib.py;h=e832a89988692283cd107c7670b80b33d1d0bb7a;hp=1d7098ba67c239a86a9f744afefb8ceac046fe03;hb=aff1a4c621002e358c68b575e641a7bec1223d86;hpb=4944936725bf4625d988af303b43fb4ba3f780a9 diff --git a/project/rh/lib.py b/project/rh/lib.py index 1d7098b..e832a89 100644 --- a/project/rh/lib.py +++ b/project/rh/lib.py @@ -3,8 +3,40 @@ from django.db import models from django.contrib import admin from django.conf import settings +from django.db.models import Q from auf.django.metadata.admin import AUFMetadataAdminMixin, AUFMetadataInlineAdminMixin, AUF_METADATA_READONLY_FIELDS from project.rh import models as rh +from forms import DossierForm, ContratForm +from dae.utils import get_employe_from_user + + +class ProtectRegionMixin(object): + + def queryset(self, request): + qs = super(ProtectRegionMixin, self).queryset(request) + + if request.user.is_superuser: + return qs + + employe = get_employe_from_user(request.user) + + q = Q(**{self.model.prefix_implantation: employe.implantation.region}) + qs = qs.filter(q).distinct() + return qs + + def has_change_permission(self, request, obj=None): + if request.user.is_superuser: + return True + + if obj: + employe = get_employe_from_user(request.user) + if employe.implantation.region in obj.get_regions(): + return True + else: + return False + + return True + # Inlines @@ -25,6 +57,7 @@ class AyantDroitCommentaireInline(AUFMetadataInlineAdminMixin, admin.TabularInli class ContratInline(AUFMetadataInlineAdminMixin, admin.TabularInline): + form = ContratForm model = models.Model # à remplacer dans admin.py extra = 1 @@ -42,6 +75,7 @@ class DossierCommentaireInline(AUFMetadataInlineAdminMixin, admin.TabularInline) class DossierPieceInline(admin.TabularInline): model = models.Model # à remplacer dans admin.py + extra = 4 class EmployeInline(admin.TabularInline): @@ -55,6 +89,7 @@ class EmployeCommentaireInline(AUFMetadataInlineAdminMixin, admin.TabularInline) class EmployePieceInline(admin.TabularInline): model = models.Model # à remplacer dans admin.py + extra = 4 class EvenementInline(AUFMetadataInlineAdminMixin, admin.TabularInline): @@ -96,7 +131,7 @@ class TypePosteInline(AUFMetadataInlineAdminMixin, admin.TabularInline): # Admins -class AyantDroitAdmin(AUFMetadataAdminMixin, admin.ModelAdmin): +class AyantDroitAdmin(AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin): """ L'ajout d'un nouvel ayantdroit se fait dans l'admin de l'employé. """ @@ -149,24 +184,32 @@ class CommentaireAdmin(admin.ModelAdmin): pass -class ContratAdmin(AUFMetadataAdminMixin, admin.ModelAdmin): - alphabet_filter = 'dossier__employe__nom' - search_fields = ('dossier__employe__nom', 'dossier__employe__prenom', 'dossier__poste__nom', 'dossier__poste__nom_feminin', ) - list_display = ('id', 'dossier', '_poste', ) - fieldsets = AUFMetadataAdminMixin.fieldsets + ( - (None, { - 'fields': ('dossier', 'type_contrat', 'date_debut', 'date_fin', ) - }), - ) - - def lookup_allowed(self, key, value): - if key in ('dossier__employe__nom__istartswith', ): - return True - - def _poste(self, obj): - return obj.dossier.poste - _poste.short_description = "Poste" - +#class ContratAdmin(AUFMetadataAdminMixin, admin.ModelAdmin): +# form = ContratForm +# alphabet_filter = 'dossier__employe__nom' +# search_fields = ('dossier__employe__nom', 'dossier__employe__prenom', 'dossier__poste__nom', 'dossier__poste__nom_feminin', ) +# list_display = ('id', '_employe', '_poste', 'date_debut', 'date_fin', '_implantation', ) +# fieldsets = AUFMetadataAdminMixin.fieldsets + ( +# (None, { +# 'fields': ('dossier', 'type_contrat', 'date_debut', 'date_fin', ) +# }), +# ) +# +# def lookup_allowed(self, key, value): +# if key in ('dossier__employe__nom__istartswith', ): +# return True +# +# def _employe(self, obj): +# return unicode(obj.dossier.employe) +# _employe.short_description = "Employé" +# +# def _poste(self, obj): +# return obj.dossier.poste.nom +# _poste.short_description = "Poste" +# +# def _implantation(self, obj): +# return obj.dossier.poste.implantation +# _poste.short_description = "Implantation" class DeviseAdmin(AUFMetadataAdminMixin, admin.ModelAdmin): fieldsets = AUFMetadataAdminMixin.fieldsets + ( @@ -176,7 +219,8 @@ class DeviseAdmin(AUFMetadataAdminMixin, admin.ModelAdmin): ) -class DossierAdmin(AUFMetadataAdminMixin, admin.ModelAdmin,): +class DossierAdmin(AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin,): + form = DossierForm alphabet_filter = 'employe__nom' search_fields = ('employe__nom', 'employe__prenom', 'poste__nom', 'poste__nom_feminin') list_display = ('_employe', '_poste', 'date_debut', 'date_fin', '_actif') @@ -239,7 +283,7 @@ class DossierCommentaireAdmin(admin.ModelAdmin): pass -class EmployeAdmin(AUFMetadataAdminMixin, admin.ModelAdmin): +class EmployeAdmin(AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin): alphabet_filter = 'nom' search_fields = ('id', 'nom', 'prenom', 'nom_affichage', 'actif', ) list_filter = ('actif', ) @@ -294,7 +338,7 @@ class FamilleEmploiAdmin(AUFMetadataAdminMixin, admin.ModelAdmin): ) -class OrganismeBstgAdmin(AUFMetadataAdminMixin, admin.ModelAdmin): +class OrganismeBstgAdmin(AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin): search_fields = ('nom', ) list_display = ('nom', 'type', 'pays', ) inlines = (DossierROInline,) @@ -305,7 +349,7 @@ class OrganismeBstgAdmin(AUFMetadataAdminMixin, admin.ModelAdmin): ) -class PosteAdmin(AUFMetadataAdminMixin, admin.ModelAdmin): +class PosteAdmin(AUFMetadataAdminMixin, ProtectRegionMixin, admin.ModelAdmin): alphabet_filter = 'nom' search_fields = ('nom', 'implantation__code', 'implantation__nom', 'implantation__region__code', 'implantation__region__nom', ) list_display = ('nom', 'implantation', 'service', 'type_poste', 'date_debut', 'date_fin', ) @@ -354,6 +398,7 @@ class PosteAdmin(AUFMetadataAdminMixin, admin.ModelAdmin): instance.save() formset.save_m2m() + class PosteCommentaireAdmin(admin.ModelAdmin): pass