from django.contrib import admin from polymorphic.admin import ( PolymorphicChildModelAdmin, PolymorphicChildModelFilter, ) from outbo.apps.core.admin import PolymorphicParentModelAdmin from outbo.apps.organizations.models import ( Organization, AgencyOrganization, ClientOrganization, SupplierOrganization, Brand, Category, ) class _OrganizationChildAdmin(PolymorphicChildModelAdmin): base_model = Organization @admin.register(AgencyOrganization) class AgencyOrganizationAdmin(_OrganizationChildAdmin): base_model = AgencyOrganization @admin.register(ClientOrganization) class ClientOrganizationAdmin(_OrganizationChildAdmin): base_model = ClientOrganization search_fields = ["name"] @admin.register(SupplierOrganization) class SupplierOrganizationAdmin(_OrganizationChildAdmin): base_model = SupplierOrganization search_fields = ["name"] @admin.register(Organization) class OrganizationAdmin(PolymorphicParentModelAdmin): base_model = Organization child_models = (AgencyOrganization, ClientOrganization, SupplierOrganization) list_filter = (PolymorphicChildModelFilter,) search_fields = ["name"] @admin.register(Brand) class BrandAdmin(admin.ModelAdmin): autocomplete_fields = ["client", "suppliers", "categories"] @admin.register(Category) class CategoryAdmin(admin.ModelAdmin): search_fields = ["name"] # NOTE: https://stackoverflow.com/questions/9879687/adding-a-manytomanywidget-to-the-reverse-of-a-manytomanyfield-in-the-django-admi/13189954