admin.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. from django.contrib import admin
  2. from polymorphic.admin import PolymorphicChildModelAdmin
  3. from coin.offers.models import Offer, OfferSubscription
  4. from coin.offers.offersubscription_filter import\
  5. OfferSubscriptionTerminationFilter,\
  6. OfferSubscriptionCommitmentFilter
  7. from coin.resources.models import IPSubnet
  8. import autocomplete_light
  9. class IPSubnetInline(admin.TabularInline):
  10. model = IPSubnet
  11. extra = 0
  12. class OfferAdmin(admin.ModelAdmin):
  13. list_display = ('configuration_type', 'name', 'billing_period', 'period_fees',
  14. 'initial_fees')
  15. list_display_links = ('name',)
  16. list_filter = ('configuration_type',)
  17. search_fields = ['name']
  18. # def get_readonly_fields(self, request, obj=None):
  19. # if obj:
  20. # return ['backend',]
  21. # else:
  22. # return []
  23. class OfferSubscriptionAdmin(admin.ModelAdmin):
  24. list_display = ('member', 'offer', 'subscription_date', 'commitment',
  25. 'resign_date')
  26. list_display_links = ('member','offer')
  27. list_filter = ( OfferSubscriptionTerminationFilter,
  28. OfferSubscriptionCommitmentFilter,
  29. 'member', 'offer')
  30. search_fields = ['member__first_name', 'member__last_name', 'member__email']
  31. fields = (
  32. 'member',
  33. 'offer',
  34. 'subscription_date',
  35. 'commitment',
  36. 'resign_date'
  37. )
  38. form = autocomplete_light.modelform_factory(OfferSubscription)
  39. inlines = [ IPSubnetInline ]
  40. def get_inline_instances(self, request, obj=None):
  41. """
  42. Si en edition, alors affiche en inline le formulaire de la configuration
  43. """
  44. ipsubnet_inline = [IPSubnetInline(self.model, self.admin_site)]
  45. if obj is not None:
  46. for item in PolymorphicChildModelAdmin.__subclasses__():
  47. if (item.base_model.__name__ == obj.offer.configuration_type):
  48. return [item.inline(self.model, self.admin_site)] + ipsubnet_inline
  49. return ipsubnet_inline
  50. admin.site.register(Offer, OfferAdmin)
  51. admin.site.register(OfferSubscription, OfferSubscriptionAdmin)