diff --git a/organizations/admin.py b/organizations/admin.py index 06784818..08395eb9 100644 --- a/organizations/admin.py +++ b/organizations/admin.py @@ -25,29 +25,27 @@ from django.contrib import admin +from .base_admin import (BaseOwnerInline, + BaseOrganizationAdmin, + BaseOrganizationUserAdmin, + BaseOrganizationOwnerAdmin) from .models import Organization, OrganizationUser, OrganizationOwner -class OwnerInline(admin.StackedInline): +class OwnerInline(BaseOwnerInline): model = OrganizationOwner - raw_id_fields = ('organization_user',) -class OrganizationAdmin(admin.ModelAdmin): +class OrganizationAdmin(BaseOrganizationAdmin): inlines = [OwnerInline] - list_display = ['name', 'is_active'] - prepopulated_fields = {"slug": ("name",)} - search_fields = ['name'] - list_filter = ('is_active',) -class OrganizationUserAdmin(admin.ModelAdmin): - list_display = ['user', 'organization', 'is_admin'] - raw_id_fields = ('user', 'organization') +class OrganizationUserAdmin(BaseOrganizationUserAdmin): + pass -class OrganizationOwnerAdmin(admin.ModelAdmin): - raw_id_fields = ('organization_user', 'organization') +class OrganizationOwnerAdmin(BaseOrganizationOwnerAdmin): + pass admin.site.register(Organization, OrganizationAdmin) diff --git a/organizations/base_admin.py b/organizations/base_admin.py new file mode 100644 index 00000000..368395b1 --- /dev/null +++ b/organizations/base_admin.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2012-2015, Ben Lopatin and contributors +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without +# modification, are permitted provided that the following conditions are met: +# +# Redistributions of source code must retain the above copyright notice, this +# list of conditions and the following disclaimer. Redistributions in binary +# form must reproduce the above copyright notice, this list of conditions and the +# following disclaimer in the documentation and/or other materials provided with +# the distribution +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +from django.contrib import admin + + +class BaseOwnerInline(admin.StackedInline): + raw_id_fields = ('organization_user',) + + +class BaseOrganizationAdmin(admin.ModelAdmin): + list_display = ['name', 'is_active'] + prepopulated_fields = {"slug": ("name",)} + search_fields = ['name'] + list_filter = ('is_active',) + + +class BaseOrganizationUserAdmin(admin.ModelAdmin): + list_display = ['user', 'organization', 'is_admin'] + raw_id_fields = ('user', 'organization') + + +class BaseOrganizationOwnerAdmin(admin.ModelAdmin): + raw_id_fields = ('organization_user', 'organization')