admin.py 2.0 KB

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