pulseapi/profiles/admin.py (85 lines of code) (raw):

from django.contrib import admin from django.utils.html import format_html from pulseapi.profiles.forms import ProfileAdminForm from pulseapi.utility.get_admin_url import get_admin_url from .models import ( ProfileType, ProgramType, ProgramYear, UserProfile, UserBookmarks, ) class UserProfileAdmin(admin.ModelAdmin): """ Show the profile-associated user. """ form = ProfileAdminForm fields = ( 'created_at', 'is_active', 'user_account', 'name', 'custom_name', 'is_group', 'location', 'user_bio', 'bookmark_count', 'thumbnail', 'thumbnail_image_tag', 'issues', 'twitter', 'linkedin', 'github', 'website', 'enable_extended_information', 'profile_type', 'program_type', 'program_year', 'affiliation', 'user_bio_long', ) readonly_fields = ( 'created_at', 'user_account', 'name', 'thumbnail_image_tag', 'bookmark_count', ) list_select_related = ('profile_type', 'program_year', 'program_type', 'related_user') list_display = ( 'name', 'is_active', 'profile_type', 'program_type', 'program_year', 'user_account', 'enable_extended_information', ) list_filter = ( 'profile_type', 'program_type', 'program_year', 'enable_extended_information', ) search_fields = ( 'custom_name', 'related_user__name', 'related_user__email', ) def name(self, instance): return instance.name or '-' name.short_description = 'Name that will show' def user_account(self, instance): user = instance.user html = '<a href="{url}">{account}</a>'.format( url=get_admin_url(user), account=user.email ) if user else 'Orphan profile' return format_html(html) def bookmark_count(self, instance): """ Show the total number of bookmarks for this Entry """ return instance.bookmarks_from.count() class UserBookmarksAdmin(admin.ModelAdmin): """ ... """ fields = ('entry', 'profile', 'timestamp', ) readonly_fields = ('entry', 'profile', 'timestamp', ) admin.site.register(UserProfile, UserProfileAdmin) admin.site.register(UserBookmarks, UserBookmarksAdmin) admin.site.register(ProfileType) admin.site.register(ProgramType) admin.site.register(ProgramYear)