admin.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. from django.contrib import admin
  2. from .models import (
  3. Document, Cost, Good, CostUse, GoodUse, Service, ServiceUse)
  4. @admin.register(Document)
  5. class DocumentAdmin(admin.ModelAdmin):
  6. list_display = ('name', 'date', 'type')
  7. class GoodUseInline(admin.TabularInline):
  8. model = GoodUse
  9. extra = 1
  10. class CostUseInline(admin.TabularInline):
  11. model = CostUse
  12. extra = 1
  13. class ServiceUseInline(admin.TabularInline):
  14. model = ServiceUse
  15. extra = 1
  16. fk_name = 'service'
  17. class DirectDocumentFilter(admin.SimpleListFilter):
  18. title = 'Document'
  19. parameter_name = 'document'
  20. def queryset(self, request, queryset):
  21. document = self.value()
  22. if not document:
  23. return queryset
  24. else:
  25. return queryset.filter(document=document)
  26. def lookups(self, request, model_admin):
  27. for i in Document.objects.all():
  28. yield i.pk, str(i)
  29. @admin.register(Cost)
  30. class CostAdmin(admin.ModelAdmin):
  31. list_display = ('__str__', 'price', 'document')
  32. list_filter = [DirectDocumentFilter]
  33. @admin.register(Good)
  34. class GoodAdmin(admin.ModelAdmin):
  35. list_display = (
  36. '__str__', 'price', 'document',
  37. 'provisioning_duration', 'monthly_provision')
  38. list_filter = [DirectDocumentFilter]
  39. @admin.register(Service)
  40. class ServiceAdmin(admin.ModelAdmin):
  41. list_display = ('name', 'subscriptions_count', 'document')
  42. inlines = (CostUseInline, GoodUseInline, ServiceUseInline)
  43. list_filter = [DirectDocumentFilter]
  44. fieldsets = (
  45. (None, {
  46. 'fields': (
  47. ('name', 'document'), 'description', 'subscriptions_count'),
  48. }),
  49. ('Ré-utilisabilité', {
  50. 'fields': ('reusable',)
  51. })
  52. )