Why Gemfury? Push, build, and install  RubyGems npm packages Python packages Maven artifacts PHP packages Go Modules Debian packages RPM packages NuGet packages

Repository URL to install this package:

Details    
django-branding / branding / admin.py
Size: Mime:
from django.contrib import admin
from import_export.admin import ImportExportModelAdmin

from branding.resources import PolicyResource
from .models import Brand, Policy, FeatureAccess


class BrandAdmin(admin.ModelAdmin):
    list_display = ('name', 'provided_sources')
    search_fields = ('name',)
    filter_horizontal = ('sources',)

    def provided_sources(self, obj):
        return ", ".join(source.name for source in obj.sources.all())


class PolicyAdmin(ImportExportModelAdmin):
    resource_class = PolicyResource
    list_display = ('number', 'description', 'backends')
    list_filter = ('booking_backends',)
    search_fields = ('number', 'description')
    filter_horizontal = ('booking_backends',)

    def backends(self, obj):
        return ", ".join(source.name for source in obj.booking_backends.all())


class FeatureAccessAdmin(admin.ModelAdmin):
    list_display = ('keyword', 'policy_list', 'brands_list')
    list_filter = ('policies', 'brands')
    fields = ("keyword", "policies", "brands")
    filter_horizontal = ('policies', 'brands')
    search_fields = ('keyword', 'policies__number', 'policies__description', 'brands__name')

    def policy_list(self, obj):
        count = obj.policies.count()
        if count > 10:
            return "{} policies".format(count)
        return ", ".join(str(policy) for policy in obj.policies.all())

    def brands_list(self, obj):
        return ", ".join(str(brand) for brand in obj.brands.all())


admin.site.register(Brand, BrandAdmin)
admin.site.register(Policy, PolicyAdmin)
admin.site.register(FeatureAccess, FeatureAccessAdmin)