Browse Source

utilisation de list_display_links

Élie Bouttier 8 years ago
parent
commit
f42ede901c
1 changed files with 5 additions and 23 deletions
  1. 5 23
      services/admin.py

+ 5 - 23
services/admin.py

@@ -52,18 +52,6 @@ class AllocationStatusFilter(admin.SimpleListFilter):
             return queryset.filter(active_filter)
 
 
-### Helpers
-
-def get_foreignkey_link_func(field):
-    def foreignkey_link(self, instance):
-        obj = getattr(instance, field)
-        url = reverse('admin:%s_%s_change' % (obj._meta.app_label,  
-                                                obj._meta.model_name),
-                        args=(obj.pk,))
-        return format_html(u'<a href="{}">{}</a>', url, str(obj))
-    return foreignkey_link
-
-
 ### Inlines
 
 class ResourceAllocationInlineFormSet(BaseInlineFormSet):
@@ -114,7 +102,9 @@ ends_resource.short_description = 'Terminer les allocations sélectionnées'
 ### ModelAdmin
 
 class ServiceAdmin(admin.ModelAdmin):
-    list_display = ('id', 'get_adhesion_link', 'get_adherent_link', 'service_type', 'label', 'active')
+    list_display = ('id', 'adhesion', 'get_adherent_link', 'service_type', 'label', 'active')
+    list_display_links = ('adhesion',)
+    list_select_related = ('adhesion',) # to reduce database requests
     list_filter = (
         'active',
         ('service_type', admin.RelatedOnlyFieldListFilter),
@@ -123,9 +113,6 @@ class ServiceAdmin(admin.ModelAdmin):
     search_fields = ('id', 'service_type__name', 'label', 'adhesion__id',)
     raw_id_fields = ('adhesion',)
 
-    get_adhesion_link = get_foreignkey_link_func('adhesion')
-    get_adhesion_link.short_description = 'Numéro d’adhésion'
-
     get_adherent_link = lambda self, service: service.adhesion.get_adherent_link()
     get_adherent_link.short_description = Adhesion.get_adherent_link.short_description
 
@@ -186,18 +173,13 @@ class RouteAdmin(admin.ModelAdmin):
 
 
 class ResourceAllocationAdmin(admin.ModelAdmin):
-    list_display = ('id', 'resource_link', 'service_link', 'start', 'end',)
+    list_display = ('id', 'resource', 'service', 'start', 'end',)
+    list_display_links = ('resource', 'service',)
     list_filter = (AllocationStatusFilter,)
     #actions = (ends_resource,)
     raw_id_fields = ('resource', 'service',)
     search_fields = ('resource__ip', 'service__id', 'service__service_type__name', 'service__label')
 
-    resource_link = get_foreignkey_link_func('resource')
-    resource_link.short_description = 'Ressource'
-
-    service_link = get_foreignkey_link_func('service')
-    service_link.short_description = 'Service'
-
     def get_actions(self, request):
         actions = super().get_actions(request)
         if 'delete_selected' in actions: