Loading hardware_provisioning/admin.py +29 −1 Original line number Diff line number Diff line Loading @@ -114,6 +114,34 @@ class AddLoanInline(admin.StackedInline): return False class BorrowerFilter(admin.SimpleListFilter): title = 'détenteur actuel' parameter_name = 'user' def _filter_loans(self, items_queryset, user_pk=None): qs = Loan.objects.running().filter(item__in=items_queryset) if user_pk is not None: qs.filter(user=user_pk) return qs def lookups(self, request, model_admin): # Get relevant (and authorized) users only relevant_items = model_admin.get_queryset(request) users = set() for loan in self._filter_loans(relevant_items): users.add((loan.user.pk, loan.user)) return users def queryset(self, request, queryset): if self.value(): loans_qs = self._filter_loans(queryset).filter( user__pk=self.value(), ) return queryset.filter(loans__in=loans_qs) else: return queryset @admin.register(Item) class ItemAdmin(admin.ModelAdmin): list_display = ( Loading @@ -125,7 +153,7 @@ class ItemAdmin(admin.ModelAdmin): ) list_filter = ( AvailabilityFilter, 'type', 'storage', 'buy_date', OwnerFilter) 'buy_date', BorrowerFilter, OwnerFilter) search_fields = ( 'designation', 'mac_address', 'serial', 'owner__email', 'owner__nickname', Loading Loading
hardware_provisioning/admin.py +29 −1 Original line number Diff line number Diff line Loading @@ -114,6 +114,34 @@ class AddLoanInline(admin.StackedInline): return False class BorrowerFilter(admin.SimpleListFilter): title = 'détenteur actuel' parameter_name = 'user' def _filter_loans(self, items_queryset, user_pk=None): qs = Loan.objects.running().filter(item__in=items_queryset) if user_pk is not None: qs.filter(user=user_pk) return qs def lookups(self, request, model_admin): # Get relevant (and authorized) users only relevant_items = model_admin.get_queryset(request) users = set() for loan in self._filter_loans(relevant_items): users.add((loan.user.pk, loan.user)) return users def queryset(self, request, queryset): if self.value(): loans_qs = self._filter_loans(queryset).filter( user__pk=self.value(), ) return queryset.filter(loans__in=loans_qs) else: return queryset @admin.register(Item) class ItemAdmin(admin.ModelAdmin): list_display = ( Loading @@ -125,7 +153,7 @@ class ItemAdmin(admin.ModelAdmin): ) list_filter = ( AvailabilityFilter, 'type', 'storage', 'buy_date', OwnerFilter) 'buy_date', BorrowerFilter, OwnerFilter) search_fields = ( 'designation', 'mac_address', 'serial', 'owner__email', 'owner__nickname', Loading