forked from DGNum/gestioCOF
Fix concurrency issues
Creating form fields in the class and modifiying them dynamically can cause concurrency issues because the form class is shared between tabs.
This commit is contained in:
parent
a30955fb75
commit
519ef9dc20
1 changed files with 38 additions and 45 deletions
65
bda/forms.py
65
bda/forms.py
|
@ -90,24 +90,20 @@ class ResellForm(forms.Form):
|
||||||
|
|
||||||
|
|
||||||
class AnnulForm(forms.Form):
|
class AnnulForm(forms.Form):
|
||||||
reventes = ReventeModelMultipleChoiceField(
|
|
||||||
own=True,
|
|
||||||
label="",
|
|
||||||
queryset=Attribution.objects.none(),
|
|
||||||
widget=forms.CheckboxSelectMultiple,
|
|
||||||
required=False,
|
|
||||||
)
|
|
||||||
|
|
||||||
def __init__(self, participant, *args, **kwargs):
|
def __init__(self, participant, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.fields["reventes"].queryset = (
|
self.fields["reventes"] = ReventeModelMultipleChoiceField(
|
||||||
participant.original_shows.filter(
|
own=True,
|
||||||
|
label="",
|
||||||
|
queryset=participant.original_shows.filter(
|
||||||
attribution__spectacle__date__gte=timezone.now(), soldTo__isnull=True
|
attribution__spectacle__date__gte=timezone.now(), soldTo__isnull=True
|
||||||
)
|
)
|
||||||
.select_related(
|
.select_related(
|
||||||
"attribution__spectacle", "attribution__spectacle__location"
|
"attribution__spectacle", "attribution__spectacle__location"
|
||||||
)
|
)
|
||||||
.order_by("-date")
|
.order_by("-date"),
|
||||||
|
widget=forms.CheckboxSelectMultiple,
|
||||||
|
required=False,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
@ -142,8 +138,12 @@ class TemplateLabelField(forms.ModelMultipleChoiceField):
|
||||||
|
|
||||||
|
|
||||||
class InscriptionReventeForm(forms.Form):
|
class InscriptionReventeForm(forms.Form):
|
||||||
spectacles = TemplateLabelField(
|
def __init__(self, tirage, *args, **kwargs):
|
||||||
queryset=Spectacle.objects.none(),
|
super().__init__(*args, **kwargs)
|
||||||
|
self.fields["spectacles"] = TemplateLabelField(
|
||||||
|
queryset=tirage.spectacle_set.select_related("location").filter(
|
||||||
|
date__gte=timezone.now()
|
||||||
|
),
|
||||||
widget=forms.CheckboxSelectMultiple,
|
widget=forms.CheckboxSelectMultiple,
|
||||||
required=False,
|
required=False,
|
||||||
label_template_name="bda/forms/spectacle_label_table.html",
|
label_template_name="bda/forms/spectacle_label_table.html",
|
||||||
|
@ -151,16 +151,14 @@ class InscriptionReventeForm(forms.Form):
|
||||||
context_object_name="spectacle",
|
context_object_name="spectacle",
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(self, tirage, *args, **kwargs):
|
|
||||||
super().__init__(*args, **kwargs)
|
|
||||||
self.fields["spectacles"].queryset = tirage.spectacle_set.select_related(
|
|
||||||
"location"
|
|
||||||
).filter(date__gte=timezone.now())
|
|
||||||
|
|
||||||
|
|
||||||
class ReventeTirageAnnulForm(forms.Form):
|
class ReventeTirageAnnulForm(forms.Form):
|
||||||
reventes = TemplateLabelField(
|
def __init__(self, participant, *args, **kwargs):
|
||||||
queryset=SpectacleRevente.objects.none(),
|
super().__init__(*args, **kwargs)
|
||||||
|
self.fields["reventes"] = TemplateLabelField(
|
||||||
|
queryset=participant.entered.filter(soldTo__isnull=True).select_related(
|
||||||
|
"attribution__spectacle", "seller__user"
|
||||||
|
),
|
||||||
widget=forms.CheckboxSelectMultiple,
|
widget=forms.CheckboxSelectMultiple,
|
||||||
required=False,
|
required=False,
|
||||||
label_template_name="bda/forms/revente_other_label_table.html",
|
label_template_name="bda/forms/revente_other_label_table.html",
|
||||||
|
@ -168,11 +166,9 @@ class ReventeTirageAnnulForm(forms.Form):
|
||||||
context_object_name="revente",
|
context_object_name="revente",
|
||||||
)
|
)
|
||||||
|
|
||||||
def __init__(self, participant, *args, **kwargs):
|
participant.entered.filter(soldTo__isnull=True).select_related(
|
||||||
super().__init__(*args, **kwargs)
|
"attribution__spectacle", "seller__user"
|
||||||
self.fields["reventes"].queryset = participant.entered.filter(
|
)
|
||||||
soldTo__isnull=True
|
|
||||||
).select_related("attribution__spectacle", "seller__user")
|
|
||||||
|
|
||||||
|
|
||||||
class ReventeTirageForm(forms.Form):
|
class ReventeTirageForm(forms.Form):
|
||||||
|
@ -196,19 +192,16 @@ class ReventeTirageForm(forms.Form):
|
||||||
|
|
||||||
|
|
||||||
class SoldForm(forms.Form):
|
class SoldForm(forms.Form):
|
||||||
reventes = ReventeModelMultipleChoiceField(
|
|
||||||
own=True,
|
|
||||||
label="",
|
|
||||||
queryset=Attribution.objects.none(),
|
|
||||||
widget=forms.CheckboxSelectMultiple,
|
|
||||||
)
|
|
||||||
|
|
||||||
def __init__(self, participant, *args, **kwargs):
|
def __init__(self, participant, *args, **kwargs):
|
||||||
super().__init__(*args, **kwargs)
|
super().__init__(*args, **kwargs)
|
||||||
self.fields["reventes"].queryset = (
|
self.fields["reventes"].queryset = ReventeModelMultipleChoiceField(
|
||||||
participant.original_shows.filter(soldTo__isnull=False)
|
own=True,
|
||||||
|
label="",
|
||||||
|
queryset=participant.original_shows.filter(soldTo__isnull=False)
|
||||||
.exclude(soldTo=participant)
|
.exclude(soldTo=participant)
|
||||||
.select_related(
|
.select_related(
|
||||||
"attribution__spectacle", "attribution__spectacle__location"
|
"attribution__spectacle", "attribution__spectacle__location"
|
||||||
|
),
|
||||||
|
widget=forms.CheckboxSelectMultiple,
|
||||||
)
|
)
|
||||||
)
|
|
||||||
|
|
Loading…
Reference in a new issue