Merge branch 'master' into 'turbolinks'

# Conflicts:
#   apps/note/views.py
This commit is contained in:
erdnaxe 2020-02-22 11:09:45 +01:00
commit ae90a957ce
4 changed files with 98 additions and 47 deletions

View File

@ -12,7 +12,6 @@ urlpatterns = [
path('buttons/create/', views.TransactionTemplateCreateView.as_view(), name='template_create'), path('buttons/create/', views.TransactionTemplateCreateView.as_view(), name='template_create'),
path('buttons/update/<int:pk>/', views.TransactionTemplateUpdateView.as_view(), name='template_update'), path('buttons/update/<int:pk>/', views.TransactionTemplateUpdateView.as_view(), name='template_update'),
path('buttons/', views.TransactionTemplateListView.as_view(), name='template_list'), path('buttons/', views.TransactionTemplateListView.as_view(), name='template_list'),
path('consos/<str:template_type>/', views.ConsoView.as_view(), name='consos'),
path('consos/', views.ConsoView.as_view(), name='consos'), path('consos/', views.ConsoView.as_view(), name='consos'),
# API for the note autocompleter # API for the note autocompleter

View File

@ -8,7 +8,7 @@ from django.urls import reverse
from django.utils.translation import gettext_lazy as _ from django.utils.translation import gettext_lazy as _
from django.views.generic import CreateView, ListView, UpdateView from django.views.generic import CreateView, ListView, UpdateView
from .models import Transaction, TransactionCategory, TransactionTemplate, Alias from .models import Transaction, TransactionTemplate, Alias
from .forms import TransactionForm, TransactionTemplateForm, ConsoForm from .forms import TransactionForm, TransactionTemplateForm, ConsoForm
@ -138,21 +138,17 @@ class ConsoView(LoginRequiredMixin, CreateView):
Add some context variables in template such as page title Add some context variables in template such as page title
""" """
context = super().get_context_data(**kwargs) context = super().get_context_data(**kwargs)
context['template_types'] = TransactionCategory.objects.all() context['transaction_templates'] = TransactionTemplate.objects.all() \
.order_by('template_type')
context['title'] = _("Consommations")
# select2 compatibility
context['no_cache'] = True context['no_cache'] = True
if 'template_type' not in self.kwargs.keys():
return context
template_type = TransactionCategory.objects.filter(
name=self.kwargs.get('template_type')).get()
context['buttons'] = TransactionTemplate.objects.filter(
template_type=template_type)
context['title'] = template_type
return context return context
def get_success_url(self): def get_success_url(self):
return reverse('note:consos', """
args=(self.kwargs.get('template_type'), )) When clicking a button, reload the same page
"""
return reverse('note:consos')

View File

@ -54,7 +54,7 @@
<i class="fa fa-users"></i> {% trans "View my memberships" %} <i class="fa fa-users"></i> {% trans "View my memberships" %}
</a> </a>
</div> </div>
<div id="clubListCollapse" class="collapse overflow-auto show" aria-labelledby="clubListHeading" data-parent="#accordionProfile"> <div id="clubListCollapse" class="collapse show" style="overflow:auto hidden" aria-labelledby="clubListHeading" data-parent="#accordionProfile">
{% render_table club_list %} {% render_table club_list %}
</div> </div>
</div> </div>
@ -67,7 +67,7 @@
<i class="fa fa-euro"></i> Historique des transactions <i class="fa fa-euro"></i> Historique des transactions
</a> </a>
</div> </div>
<div id="historyListCollapse" class="collapse overflow-auto" aria-labelledby="historyListHeading" data-parent="#accordionProfile"> <div id="historyListCollapse" class="collapse" style="overflow:auto hidden" aria-labelledby="historyListHeading" data-parent="#accordionProfile">
{% render_table history_list %} {% render_table history_list %}
</div> </div>
</div> </div>

View File

@ -2,40 +2,96 @@
{% load i18n static pretty_money %} {% load i18n static pretty_money %}
{# Remove page title #}
{% block contenttitle %}{% endblock %}
{% block content %} {% block content %}
<fieldset class="module aligned"> {# Regroup buttons under categories #}
{% for type in template_types %} {% regroup transaction_templates by template_type as template_types %}
<a href="{% url 'note:consos' template_type=type %}"><button>{{ type }}</button></a>
{% endfor %} <form method="post" onsubmit="window.onbeforeunload=null">
</fieldset> {% csrf_token %}
<form method="post" onsubmit="window.onbeforeunload=null">{% csrf_token %}
{% if form.non_field_errors %} <div class="row">
<p class="errornote"> <div class="col-sm-5 mb-4">
{% for error in form.non_field_errors %} {% if form.non_field_errors %}
{{ error }} <p class="errornote">
{% for error in form.non_field_errors %}
{{ error }}
{% endfor %}
</p>
{% endif %}
{% for field in form %}
<div class="form-row{% if field.errors %} errors{% endif %}">
{{ field.errors }}
<div>
{{ field.label_tag }}
{% if field.is_readonly %}
<div class="readonly">{{ field.contents }}</div>
{% else %}
{{ field }}
{% endif %}
{% if field.field.help_text %}
<div class="help">{{ field.field.help_text|safe }}</div>
{% endif %}
</div>
</div>
{% endfor %} {% endfor %}
</p> </div>
{% endif %}
<fieldset class="module aligned"> <div class="col-sm-7">
{% for field in form %} <div class="card text-center shadow">
<div class="form-row{% if field.errors %} errors{% endif %}"> {# Tabs for button categories #}
{{ field.errors }} <div class="card-header">
<div> <ul class="nav nav-tabs nav-fill card-header-tabs">
{{ field.label_tag }} {% for template_type in template_types %}
{% if field.is_readonly %} <li class="nav-item">
<div class="readonly">{{ field.contents }}</div> <a class="nav-link" data-toggle="tab" href="#{{ template_type.grouper|slugify }}">
{% else %} {{ template_type.grouper }}
{{ field }} </a>
{% endif %} </li>
{% if field.field.help_text %} {% endfor %}
<div class="help">{{ field.field.help_text|safe }}</div> </ul>
{% endif %} </div>
{# Tabs content #}
<div class="card-body">
<div class="tab-content">
{% for template_type in template_types %}
<div class="tab-pane" id="{{ template_type.grouper|slugify }}">
<div class="d-inline-flex flex-wrap justify-content-center">
{% for button in template_type.list %}
<button class="btn btn-outline-dark rounded-0 flex-fill"
name="button" value="{{ button.name }}">
{{ button.name }} ({{ button.amount | pretty_money }})
</button>
{% endfor %}
</div>
</div>
{% endfor %}
</div>
</div> </div>
</div> </div>
{% endfor %} </div>
{% for button in buttons %} </div>
<button name="button" value="{{ button.name }}">{{ button.name }} ({{ button.amount | pretty_money }})</button>
{% endfor %}
</fieldset>
</form> </form>
{% endblock %} {% endblock %}
{% block extrajavascript %}
<script type="text/javascript">
$(document).ready(function() {
// If hash of a category in the URL, then select this category
// else select the first one
if (location.hash) {
$("a[href='" + location.hash + "']").tab("show");
} else {
$("a[data-toggle='tab']").first().tab("show");
}
// When selecting a category, change URL
$(document.body).on("click", "a[data-toggle='tab']", function(event) {
location.hash = this.getAttribute("href");
});
});
</script>
{% endblock %}