AjaxSelect, DossierForm, ResponsableInlineForm
from project.rh.change_list import ChangeList
+def listing_par_defaut(model, request):
+ """
+ Teste si la requete provient de la même page.
+ """
+ if not 'HTTP_REFERER' in request.META.keys():
+ return False
+ referer = request.META['HTTP_REFERER']
+ referer = "/".join(referer.split('/')[3:])
+ referer = "/%s" % referer.split('?')[0]
+ change_list_view = 'admin:%s_%s_changelist' % (
+ model._meta.app_label,
+ model.__name__.lower(),)
+ return referer != reverse(change_list_view)
class BaseAdmin(admin.ModelAdmin):
prefixe_recherche_temporelle = ""
def get_changelist(self, request, **kwargs):
- if 'HTTP_REFERER' in request.META.keys():
- referer = request.META['HTTP_REFERER']
- referer = "/".join(referer.split('/')[3:])
- referer = "/%s" % referer.split('?')[0]
- change_list_view = 'admin:%s_%s_changelist' % (
- self.model._meta.app_label,
- self.model.__name__.lower(),)
- if referer != reverse(change_list_view):
- params = request.GET.copy()
- params.update({'statut': 'Actif'})
- request.GET = params
+ """
+ On filtre par défaut sur les items 'actifs'.
+ Le changelist plug le filtrage temporel.
+ """
+ if listing_par_defaut(self.model, request):
+ params = request.GET.copy()
+ params.update({'statut': 'Actif'})
+ request.GET = params
return ChangeList
class ProtectRegionMixin(object):
+ def changelist_view(self, request, extra_context=None):
+ """
+ On filtre par défaut sur la ZA du user connecté
+ """
+ if listing_par_defaut(self.model, request):
+ if user_gere_obj_de_sa_region(request.user):
+ params = request.GET.copy()
+ employe = groups.get_employe_from_user(request.user)
+ za = employe.implantation.zone_administrative.code
+ prefix_za = "%s__code__exact" % self.model.prefix_implantation
+ params.update({prefix_za: za})
+ request.GET = params
+ return super(ProtectRegionMixin, self).changelist_view(request, extra_context)
+
def queryset(self, request):
qs = super(ProtectRegionMixin, self).queryset(request)