eo_redmine: ajout d'un filtre par contrat (#83270)

This commit is contained in:
Pierre Ducroquet 2023-11-09 11:29:40 +01:00
parent 955cfeaa15
commit cfcf6c378f
1 changed files with 34 additions and 1 deletions

View File

@ -220,6 +220,39 @@ show_client.short_description = 'Client'
show_client.admin_order_field = 'client'
class MyContratsFilter(admin.SimpleListFilter):
title = 'CPF'
parameter_name = 'cpf'
def __init__(self, request, params, model, model_admin):
super().__init__(request, params, model, model_admin)
self.request = request
def value(self):
from eo_gestion.eo_redmine.models import Project
value = super().value()
default_value = 'all'
user = self.request.user
if user and user.project_set.exists():
default_value = 'True'
return value if value in ('True', 'all') else default_value
def choices(self, changelist):
choices = list(super().choices(changelist))
return choices[1:] # don't include automatic "All"
def lookups(self, request, model_admin):
return [('all', 'tous'), ('True', 'mes clients')]
def queryset(self, request, queryset):
if self.value() == 'True':
return queryset.filter(client__project__cpfs=request.user)
else:
return queryset
class ContratAdmin(LookupAllowed, admin.ModelAdmin):
form = forms.ContratForm
inlines = [
@ -234,7 +267,7 @@ class ContratAdmin(LookupAllowed, admin.ModelAdmin):
'creator',
'tag_list',
]
list_filter = ['tags', 'client']
list_filter = ['tags', MyContratsFilter, 'client']
list_select_related = True
save_on_top = True
search_fields = ['intitule', 'client__nom', 'tags__name']