diff --git a/apps/note/forms.py b/apps/note/forms.py index 20804412..2e8e4456 100644 --- a/apps/note/forms.py +++ b/apps/note/forms.py @@ -6,7 +6,7 @@ from django import forms from django.utils.translation import gettext_lazy as _ from .models import Alias -from .models import Transaction, TransactionTemplate, TemplateTransaction +from .models import Transaction, TransactionTemplate class AliasForm(forms.ModelForm): @@ -99,33 +99,3 @@ class TransactionForm(forms.ModelForm): }, ), } - - -class ConsoForm(forms.ModelForm): - def save(self, commit=True): - button: TransactionTemplate = TransactionTemplate.objects.filter( - name=self.data['button']).get() - self.instance.destination = button.destination - self.instance.amount = button.amount - self.instance.reason = '{} ({})'.format(button.name, button.category) - self.instance.template = button - self.instance.category = button.category - super().save(commit) - - class Meta: - model = TemplateTransaction - fields = ('source',) - - # Le champ d'utilisateur est remplacé par un champ d'auto-complétion. - # Quand des lettres sont tapées, une requête est envoyée sur l'API d'auto-complétion - # et récupère les aliases de note valides - widgets = { - 'source': - autocomplete.ModelSelect2( - url='note:note_autocomplete', - attrs={ - 'data-placeholder': 'Note ...', - 'data-minimum-input-length': 1, - }, - ), - } diff --git a/apps/note/tables.py b/apps/note/tables.py index e85fcbae..d26ffedc 100644 --- a/apps/note/tables.py +++ b/apps/note/tables.py @@ -6,7 +6,7 @@ from django.db.models import F from django_tables2.utils import A from .models.notes import Alias -from .models.transactions import Transaction, TransactionTemplate +from .models.transactions import Transaction from .templatetags.pretty_money import pretty_money diff --git a/apps/note/views.py b/apps/note/views.py index 09846057..fb5e98c5 100644 --- a/apps/note/views.py +++ b/apps/note/views.py @@ -7,9 +7,11 @@ from django.db.models import Q from django.urls import reverse from django.utils.translation import gettext_lazy as _ from django.views.generic import CreateView, ListView, UpdateView +from django_tables2 import SingleTableView -from .forms import TransactionForm, TransactionTemplateForm, ConsoForm -from .models import Transaction, TransactionTemplate, Alias, TemplateTransaction +from .forms import TransactionForm, TransactionTemplateForm +from .models import Transaction, TransactionTemplate, Alias +from .tables import HistoryTable class TransactionCreate(LoginRequiredMixin, CreateView): @@ -121,13 +123,16 @@ class TransactionTemplateUpdateView(LoginRequiredMixin, UpdateView): form_class = TransactionTemplateForm -class ConsoView(LoginRequiredMixin, CreateView): +class ConsoView(LoginRequiredMixin, SingleTableView): """ Consume """ - model = TemplateTransaction + model = Transaction template_name = "note/conso_form.html" - form_class = ConsoForm + + # Transaction history table + table_class = HistoryTable + table_pagination = {"per_page": 10} def get_context_data(self, **kwargs): """ @@ -142,9 +147,3 @@ class ConsoView(LoginRequiredMixin, CreateView): context['no_cache'] = True return context - - def get_success_url(self): - """ - When clicking a button, reload the same page - """ - return reverse('note:consos') diff --git a/templates/base.html b/templates/base.html index 887bc970..dbe59c41 100644 --- a/templates/base.html +++ b/templates/base.html @@ -75,9 +75,6 @@ SPDX-License-Identifier: GPL-3.0-or-later - diff --git a/templates/note/conso_form.html b/templates/note/conso_form.html index 10b06589..2c2066e8 100644 --- a/templates/note/conso_form.html +++ b/templates/note/conso_form.html @@ -1,80 +1,134 @@ {% extends "base.html" %} -{% load i18n static pretty_money %} +{% load i18n static pretty_money django_tables2 %} {# Remove page title #} {% block contenttitle %}{% endblock %} {% block content %} - {# Regroup buttons under categories #} - {% regroup transaction_templates by category as categories %} - -
- {% csrf_token %} - -
-
- {% if form.non_field_errors %} -

- {% for error in form.non_field_errors %} - {{ error }} - {% endfor %} -

- {% endif %} - {% for field in form %} -
- {{ field.errors }} -
- {{ field.label_tag }} - {% if field.is_readonly %} -
{{ field.contents }}
- {% else %} - {{ field }} - {% endif %} - {% if field.field.help_text %} -
{{ field.field.help_text|safe }}
- {% endif %} +
+
+
+ {# User details column #} +
+
+ +
+ Paquito (aka. PAC) : -230 €
- {% endfor %} -
+
-
-
- {# Tabs for button categories #} -
-
- + + {# Buttons column #} +
+ {# Show last used buttons #} +
+
+

+ Les boutons les plus utilisés s'afficheront ici. +

+
+
+ + {# Regroup buttons under categories #} + {% regroup transaction_templates by template_type as template_types %} + +
+ {# Tabs for button categories #} +
+ +
+ + {# Tabs content #} +
+
+ {% for template_type in template_types %} +
+
+ {% for button in template_type.list %} + + {% endfor %} +
+
+ {% endfor %} +
+
+ + {# Mode switch #} + +
+
+
+ +
+
+

+ Historique des transactions récentes +

+
+ {% render_table table %} +
+{% endblock %} + +{% block extracss %} + {% endblock %} {% block extrajavascript %}