Browse Source

petites améliorations admin

Élie Bouttier 8 years ago
parent
commit
e99b4c0b30
3 changed files with 24 additions and 5 deletions
  1. 19 1
      adhesions/admin.py
  2. 5 1
      services/admin.py
  3. 0 3
      services/models.py

+ 19 - 1
adhesions/admin.py

@@ -36,9 +36,27 @@ class ProfileInlineDjango(admin.StackedInline):
         return False
 
 
+class UserIsAdherentFilter(admin.SimpleListFilter):
+    title = 'status adhérent'
+    parameter_name = 'adherent'
+
+    def lookups(self, request, model_admin):
+        return (
+            ('1', 'Oui'),
+            ('0', 'Non'),
+        )
+
+    def queryset(self, request, queryset):
+        adhesion_list = Adhesion.objects.values_list('adherent_id')
+        if self.value() == '0':
+            return queryset.exclude(pk__in=adhesion_list)
+        if self.value() == '1':
+            return queryset.filter(pk__in=adhesion_list)
+
+
 class UserAdmin(AuthUserAdmin):
     list_display = AuthUserAdmin.list_display + ('adherent_id',)
-    list_filter = (AuthUserAdmin.list_filter[2],) # actif
+    list_filter = (AuthUserAdmin.list_filter[2], UserIsAdherentFilter) # [2] = actif
     inlines = (ProfileInlineDjango, AdhesionInline,)
 
     def adherent_id(self, user):

+ 5 - 1
services/admin.py

@@ -81,6 +81,7 @@ class AllocationInline(admin.TabularInline):
     fields = ('id', 'service', 'resource', 'route', 'start', 'end')
     raw_id_fields = ('service', 'resource',)
     verbose_name_plural = 'Allocations'
+    show_change_link = True
 
     def get_max_num(self, request, obj=None, **kwargs):
         existing = obj.allocations.count() if obj else 0
@@ -102,12 +103,15 @@ ends_resource.short_description = 'Terminer les allocations sélectionnées'
 ### ModelAdmin
 
 class ServiceAdmin(admin.ModelAdmin):
-    list_display = ('id', 'adhesion', 'service_type', 'label', 'active')
+    list_display = ('id', 'adhesion_link', 'service_type', 'label', 'active')
     list_filter = ('active', ServiceTypeFilter,)
     inlines = (AllocationInline,)
     search_fields = ('id', 'service_type__name', 'label')
     raw_id_fields = ('adhesion',)
 
+    adhesion_link = get_foreignkey_link_func('adhesion')
+    adhesion_link.short_description = 'Numéro d’adhésion'
+
     def get_actions(self, request):
         actions = super().get_actions(request)
         if 'delete_selected' in actions:

+ 0 - 3
services/models.py

@@ -135,8 +135,5 @@ class ResourceAllocation(models.Model):
         verbose_name_plural = 'allocations'
         ordering = ['-start']
 
-    def get_absolute_url(self):
-        return reverse('ip-detail', kwargs={'pk': self.resource.pk})
-
     def __str__(self):
         return str(self.resource)