eo_redmine: ajout d'un filtre par contrat (#83270)
This commit is contained in:
parent
955cfeaa15
commit
cfcf6c378f
|
@ -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']
|
||||
|
|
Loading…
Reference in New Issue