65 lines
2.1 KiB
Python
65 lines
2.1 KiB
Python
# -*- mode: python; coding: utf-8 -*-
|
|
# Copyright (C) 2017-2019 by BDE ENS Paris-Saclay
|
|
# SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
from django.urls import reverse
|
|
from django.utils.html import format_html
|
|
from django.utils.translation import ugettext_lazy as _
|
|
from reversion.admin import VersionAdmin
|
|
|
|
from med.admin import admin_site
|
|
from .models import Auteur, Emprunt, Jeu, Media
|
|
|
|
|
|
class AuteurAdmin(VersionAdmin):
|
|
list_display = ('nom',)
|
|
search_fields = ('nom',)
|
|
|
|
|
|
class MediaAdmin(VersionAdmin):
|
|
list_display = ('titre', 'authors', 'cote')
|
|
search_fields = ('titre', 'auteur__nom', 'cote')
|
|
autocomplete_fields = ('auteur',)
|
|
|
|
def authors(self, obj):
|
|
return ", ".join([a.nom for a in obj.auteur.all()])
|
|
|
|
|
|
class EmpruntAdmin(VersionAdmin):
|
|
list_display = ('media', 'user', 'date_emprunt', 'date_rendu',
|
|
'permanencier_emprunt', 'permanencier_rendu_custom')
|
|
search_fields = ('media__titre', 'media__cote', 'user__username',
|
|
'date_emprunt', 'date_rendu')
|
|
date_hierarchy = 'date_emprunt'
|
|
autocomplete_fields = ('media', 'user', 'permanencier_emprunt',
|
|
'permanencier_rendu')
|
|
|
|
def permanencier_rendu_custom(self, obj):
|
|
"""
|
|
Show a button if item has not been returned yet
|
|
"""
|
|
if obj.permanencier_rendu:
|
|
return obj.permanencier_rendu
|
|
else:
|
|
return format_html(
|
|
'<a class="button" href="{}">{}</a>',
|
|
reverse('media:retour-emprunt', args=[obj.pk]),
|
|
_('Turn back')
|
|
)
|
|
|
|
permanencier_rendu_custom.short_description = _('permanencier rendu')
|
|
permanencier_rendu_custom.allow_tags = True
|
|
|
|
|
|
class JeuAdmin(VersionAdmin):
|
|
list_display = ('nom', 'proprietaire', 'duree', 'nombre_joueurs_min',
|
|
'nombre_joueurs_max', 'comment')
|
|
search_fields = ('nom', 'proprietaire__username', 'duree', 'comment')
|
|
autocomplete_fields = ('proprietaire',)
|
|
|
|
|
|
admin_site.register(Auteur, AuteurAdmin)
|
|
admin_site.register(Media, MediaAdmin)
|
|
admin_site.register(Emprunt, EmpruntAdmin)
|
|
admin_site.register(Jeu, JeuAdmin)
|