port to new django, AI automated
This commit is contained in:
@@ -1,32 +1,128 @@
|
||||
from django.contrib import admin
|
||||
from django.contrib.auth.admin import UserAdmin
|
||||
from django.contrib.auth.admin import UserAdmin as BaseUserAdmin
|
||||
from django.contrib.auth.models import User
|
||||
from django.utils.translation import ugettext as _
|
||||
from musicians.models import Musician
|
||||
# from eventplanner.admin import EventParticipationInline
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
from .models import Musician
|
||||
|
||||
|
||||
# Define an inline admin descriptor for Musician model
|
||||
# which acts a bit like a singleton
|
||||
class MusicianInline(admin.StackedInline):
|
||||
"""Inline admin for Musician model attached to User."""
|
||||
|
||||
model = Musician
|
||||
can_delete = False
|
||||
verbose_name_plural = _('musicians')
|
||||
verbose_name = _('musician')
|
||||
verbose_name_plural = _("musician profile")
|
||||
verbose_name = _("musician profile")
|
||||
|
||||
fieldsets = (
|
||||
(
|
||||
_("Images"),
|
||||
{
|
||||
"fields": ("image", "small_image"),
|
||||
"classes": ("collapse",),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Contact"),
|
||||
{
|
||||
"fields": ("phone_home", "phone_mobile", "phone_work"),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Address"),
|
||||
{
|
||||
"fields": ("street", "city", "zip_code"),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Details"),
|
||||
{
|
||||
"fields": ("instrument", "birthday", "position", "public_description"),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
# Define a new User admin
|
||||
class UserAdmin(UserAdmin):
|
||||
class CustomUserAdmin(BaseUserAdmin):
|
||||
"""Extended User admin with Musician inline."""
|
||||
|
||||
inlines = (MusicianInline,)
|
||||
list_display = (
|
||||
"username",
|
||||
"email",
|
||||
"first_name",
|
||||
"last_name",
|
||||
"is_staff",
|
||||
"get_instrument",
|
||||
)
|
||||
list_select_related = ("musician",)
|
||||
|
||||
@admin.display(description=_("Instrument"))
|
||||
def get_instrument(self, obj):
|
||||
try:
|
||||
return obj.musician.get_instrument_display()
|
||||
except Musician.DoesNotExist:
|
||||
return "-"
|
||||
|
||||
|
||||
@admin.register(Musician)
|
||||
class MusicianAdmin(admin.ModelAdmin):
|
||||
readonly_fields = ('user',)
|
||||
# inlines = ( EventParticipationInline, )
|
||||
model = Musician
|
||||
"""Admin configuration for Musician model."""
|
||||
|
||||
list_display = (
|
||||
"user",
|
||||
"instrument",
|
||||
"phone_mobile",
|
||||
"city",
|
||||
"position",
|
||||
)
|
||||
list_filter = ("instrument",)
|
||||
search_fields = (
|
||||
"user__username",
|
||||
"user__first_name",
|
||||
"user__last_name",
|
||||
"city",
|
||||
"phone_mobile",
|
||||
)
|
||||
readonly_fields = ("user",)
|
||||
ordering = ("position", "user__username")
|
||||
|
||||
fieldsets = (
|
||||
(
|
||||
None,
|
||||
{
|
||||
"fields": ("user", "instrument", "position"),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Images"),
|
||||
{
|
||||
"fields": ("image", "small_image"),
|
||||
"classes": ("collapse",),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Contact Information"),
|
||||
{
|
||||
"fields": ("phone_home", "phone_mobile", "phone_work"),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Address"),
|
||||
{
|
||||
"fields": ("street", "city", "zip_code"),
|
||||
},
|
||||
),
|
||||
(
|
||||
_("Personal"),
|
||||
{
|
||||
"fields": ("birthday", "public_description"),
|
||||
"classes": ("collapse",),
|
||||
},
|
||||
),
|
||||
)
|
||||
|
||||
|
||||
# Re-register UserAdmin
|
||||
# Re-register UserAdmin with Musician inline
|
||||
admin.site.unregister(User)
|
||||
admin.site.register(User, UserAdmin)
|
||||
admin.site.register(Musician, MusicianAdmin)
|
||||
admin.site.register(User, CustomUserAdmin)
|
||||
|
||||
Reference in New Issue
Block a user