diff --git a/note/admin.py b/note/admin.py index e634e607..66623f58 100644 --- a/note/admin.py +++ b/note/admin.py @@ -4,7 +4,7 @@ from django.contrib import admin -from .models.notes import Alias, NoteClub, NoteSpecial, NoteUser +from .models.notes import Alias, Note, NoteClub, NoteSpecial, NoteUser from .models.transactions import MembershipTransaction, Transaction, \ TransactionTemplate @@ -26,8 +26,8 @@ class NoteClubAdmin(admin.ModelAdmin): list_filter = ('is_active',) search_fields = ['club__name'] - # We can't change club after creation - readonly_fields = ('club',) + # We can't change club after creation or the balance + readonly_fields = ('club', 'balance') def has_add_permission(self, request): """ @@ -62,8 +62,8 @@ class NoteUserAdmin(admin.ModelAdmin): date_hierarchy = 'user__date_joined' ordering = ['-user__date_joined'] - # We can't change user after creation - readonly_fields = ('user',) + # We can't change user after creation or the balance + readonly_fields = ('user', 'balance') def has_add_permission(self, request): """ diff --git a/note/models/notes.py b/note/models/notes.py index 499678d9..67965a7b 100644 --- a/note/models/notes.py +++ b/note/models/notes.py @@ -7,17 +7,16 @@ from django.db import models from django.db.models.signals import post_save from django.dispatch import receiver from django.utils.translation import gettext_lazy as _ +from polymorphic.models import PolymorphicModel """ Defines each note types """ -class Note(models.Model): +class Note(PolymorphicModel): """ An model, use to add transactions capabilities - - We do not use an abstract model to simplify the transfer between two notes. """ balance = models.IntegerField( verbose_name=_('account balance'), @@ -57,6 +56,9 @@ class NoteUser(Note): verbose_name = _("one's note") verbose_name_plural = _("users note") + def __str__(self): + return _("%(user)s's note") % {'user': str(self.user)} + class NoteClub(Note): """ diff --git a/note/models/transactions.py b/note/models/transactions.py index 753f4925..ce74fab7 100644 --- a/note/models/transactions.py +++ b/note/models/transactions.py @@ -26,6 +26,7 @@ class TransactionTemplate(models.Model): ) amount = models.PositiveIntegerField( verbose_name=_('amount'), + help_text=_('in centimes'), ) template_type = models.CharField( verbose_name=_('type'), diff --git a/note_kfet/settings.py b/note_kfet/settings.py index a4f837e9..65a69983 100644 --- a/note_kfet/settings.py +++ b/note_kfet/settings.py @@ -32,6 +32,11 @@ INSTALLED_APPS = [ # Theme overrides Django Admin templates 'theme', + # External apps + 'polymorphic', + 'guardian', + 'reversion', + # Django contrib 'django.contrib.admin', 'django.contrib.admindocs', @@ -42,10 +47,6 @@ INSTALLED_APPS = [ 'django.contrib.messages', 'django.contrib.staticfiles', - # External apps - 'guardian', - 'reversion', - # Note apps 'activity', 'member', @@ -120,6 +121,8 @@ AUTHENTICATION_BACKENDS = ( 'guardian.backends.ObjectPermissionBackend', ) +GUARDIAN_GET_CONTENT_TYPE = 'polymorphic.contrib.guardian.get_polymorphic_base_content_type' + # Internationalization # https://docs.djangoproject.com/en/2.2/topics/i18n/ diff --git a/requirements.txt b/requirements.txt index 6201c93e..79e89f20 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,4 +5,5 @@ Pillow==6.1.0 pytz==2019.1 six==1.12.0 sqlparse==0.3.0 -django-reversion==3.0.3 \ No newline at end of file +django-reversion==3.0.3 +django-polymorphic==2.0.3 \ No newline at end of file