admin.py 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  1. # -*- coding: utf-8 -*-
  2. from django.contrib import admin
  3. from polymorphic.admin import PolymorphicParentModelAdmin, PolymorphicChildModelAdmin
  4. from coin.configuration.models import Configuration
  5. from coin.configuration.forms import ConfigurationForm
  6. """
  7. Implementation note : When creating child admin class, you have to inherit
  8. ConfigurationAdminFormMixin. This make use of ConfigurationForm form that
  9. filter offersubscription select input to avoid selecting wrong subscription.
  10. """
  11. class ParentConfigurationAdmin(PolymorphicParentModelAdmin):
  12. base_model = Configuration
  13. polymorphic_list = True
  14. list_display = ('model_name','configuration_type_name', 'offersubscription', 'offer_subscription_member')
  15. def offer_subscription_member(self, config):
  16. return config.offersubscription.member
  17. offer_subscription_member.short_description = 'Membre'
  18. def get_child_models(self):
  19. """
  20. Renvoi la liste des modèles enfants de Configuration
  21. ex :((VPNConfiguration, VPNConfigurationAdmin),
  22. (ADSLConfiguration, ADSLConfigurationAdmin))
  23. """
  24. return (tuple((x.base_model, x) for x in PolymorphicChildModelAdmin.__subclasses__()))
  25. class ConfigurationAdminFormMixin(object):
  26. form = ConfigurationForm
  27. admin.site.register(Configuration, ParentConfigurationAdmin)