eviltnan/freeturn

View on GitHub
crm/wagtail_admin/company.py

Summary

Maintainability
A
0 mins
Test Coverage
A
96%
from instance_selector.registry import registry
from instance_selector.selectors import ModelAdminInstanceSelector
from wagtail.contrib.modeladmin.mixins import ThumbnailMixin
from wagtail.contrib.modeladmin.options import ModelAdmin
from wagtail.contrib.modeladmin.views import CreateView

from crm.models import Company, City


class CreateCompanyView(CreateView):
    def get_initial(self):
        initial = super().get_initial()
        initial['location'] = City.most_popular()
        return initial


class CompanyAdmin(ThumbnailMixin, ModelAdmin):
    model = Company
    menu_label = 'Companies'  # ditch this to use verbose_name_plural from model
    menu_icon = 'fa-building'  # change as required
    menu_order = 200  # will put in 3rd place (000 being 1st, 100 2nd)
    add_to_settings_menu = False  # or True to add your model to the Settings sub-menu
    exclude_from_explorer = False  # or True to exclude pages of this type from Wagtail's explorer view
    list_display = ('admin_thumb', 'name', 'location')
    list_filter = ('location', )
    search_fields = ('name',)
    thumb_image_field_name = 'logo'
    thumb_default = '/static/img/default_company.png'
    create_view_class = CreateCompanyView


class CompanySelector(ModelAdminInstanceSelector):
    model_admin = CompanyAdmin()

    def get_instance_display_image_url(self, instance):
        if instance and instance.logo:
            return instance.logo.file.url


registry.register_instance_selector(Company, CompanySelector())