From 3a6d39a53d157485f4b647d23f001c53de9b9824 Mon Sep 17 00:00:00 2001 From: Alexandre Iooss Date: Wed, 17 Jul 2019 12:48:03 +0200 Subject: [PATCH] Note admin fully implemented --- note/admin.py | 47 ++++++++++++++++++++++++++++++------- note/models/transactions.py | 4 ++-- 2 files changed, 41 insertions(+), 10 deletions(-) diff --git a/note/admin.py b/note/admin.py index 8574142d..d51fb180 100644 --- a/note/admin.py +++ b/note/admin.py @@ -3,8 +3,9 @@ # SPDX-License-Identifier: GPL-3.0-or-later from django.contrib import admin -from polymorphic.admin import PolymorphicParentModelAdmin, \ - PolymorphicChildModelAdmin, PolymorphicChildModelFilter +from django.utils.translation import gettext_lazy as _ +from polymorphic.admin import PolymorphicChildModelAdmin, \ + PolymorphicChildModelFilter, PolymorphicParentModelAdmin from .models.notes import Alias, Note, NoteClub, NoteSpecial, NoteUser from .models.transactions import MembershipTransaction, Transaction, \ @@ -93,16 +94,46 @@ class NoteUserAdmin(PolymorphicChildModelAdmin): return False +@admin.register(Transaction) +class TransactionAdmin(admin.ModelAdmin): + """ + Admin customisation for Transaction + """ + list_display = ('created_at', 'poly_source', 'poly_destination', + 'quantity', 'amount', 'transaction_type', 'valid') + list_filter = ('transaction_type', 'valid') + autocomplete_fields = ('source', 'destination',) + + def poly_source(self, obj): + """ + Force source to resolve polymorphic object + """ + return str(obj.source) + + poly_source.short_description = _('source') + + def poly_destination(self, obj): + """ + Force destination to resolve polymorphic object + """ + return str(obj.destination) + + poly_destination.short_description = _('destination') + + @admin.register(TransactionTemplate) class TransactionTemplateAdmin(admin.ModelAdmin): """ Admin customisation for TransactionTemplate """ - list_display = ('name', 'destination', 'amount', 'template_type') - list_filter = ('destination', 'template_type',) - # autocomplete_fields = ('destination',) + list_display = ('name', 'poly_destination', 'amount', 'template_type') + list_filter = ('template_type',) + autocomplete_fields = ('destination',) + def poly_destination(self, obj): + """ + Force destination to resolve polymorphic object + """ + return str(obj.destination) -# Register other models here. -admin.site.register(MembershipTransaction) -admin.site.register(Transaction) + poly_destination.short_description = _('destination') diff --git a/note/models/transactions.py b/note/models/transactions.py index ce74fab7..dba5e4bd 100644 --- a/note/models/transactions.py +++ b/note/models/transactions.py @@ -51,8 +51,8 @@ class Transaction(models.Model): related_name='+', verbose_name=_('destination'), ) - datetime = models.DateTimeField( - verbose_name=_('destination'), + created_at = models.DateTimeField( + verbose_name=_('created at'), default=timezone.now, ) quantity = models.PositiveSmallIntegerField(