Prettify revente/subscribe

This commit is contained in:
Ludovic Stephan 2018-11-21 16:14:52 +01:00
parent ba21de683b
commit dbd017f680
5 changed files with 63 additions and 19 deletions

View file

@ -1,5 +1,6 @@
from django import forms
from django.forms.models import BaseInlineFormSet
from django.template import loader
from django.utils import timezone
from bda.models import Attribution, Spectacle, SpectacleRevente
@ -110,11 +111,32 @@ class AnnulForm(forms.Form):
)
class TemplateLabelField(forms.ModelMultipleChoiceField):
"""
Offers an option to render a label with Django template rendering
"""
def __init__(self, template_name=None, context_object_name="obj", *args, **kwargs):
super().__init__(*args, **kwargs)
self.template_name = template_name
self.context_object_name = context_object_name
def label_from_instance(self, obj):
if self.template_name is None:
return super().label_from_instance(obj)
else:
return loader.render_to_string(
self.template_name, context={self.context_object_name: obj}
)
class InscriptionReventeForm(forms.Form):
spectacles = forms.ModelMultipleChoiceField(
spectacles = TemplateLabelField(
queryset=Spectacle.objects.none(),
widget=forms.CheckboxSelectMultiple,
required=False,
template_name="bda/forms/spectacle_label_table.html",
context_object_name="spectacle",
)
def __init__(self, tirage, *args, **kwargs):
@ -122,6 +144,9 @@ class InscriptionReventeForm(forms.Form):
self.fields["spectacles"].queryset = tirage.spectacle_set.select_related(
"location"
).filter(date__gte=timezone.now())
self.fields[
"spectacles"
].widget.option_template_name = "bda/forms/spectacle_checkbox_table.html"
class ReventeTirageAnnulForm(forms.Form):