kfet -- Stack errors of KPsulOperationForm

Delete an error never raised, and avoid duplicate messages.
This commit is contained in:
Aurélien Delobelle 2018-10-01 23:03:45 +02:00
parent 93d3c124fd
commit 0f688a8f1c

View file

@ -3,6 +3,7 @@ from decimal import Decimal
from django import forms from django import forms
from django.core.exceptions import ValidationError from django.core.exceptions import ValidationError
from django.core import validators
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.forms import modelformset_factory from django.forms import modelformset_factory
from django.utils import timezone from django.utils import timezone
@ -321,13 +322,18 @@ class KPsulOperationForm(forms.ModelForm):
queryset=Article.objects.select_related('category').all(), queryset=Article.objects.select_related('category').all(),
required=False, required=False,
widget = forms.HiddenInput()) widget = forms.HiddenInput())
article_nb = forms.IntegerField(
required=False,
initial=None,
validators=[validators.MinValueValidator(1)],
widget=forms.HiddenInput(),
)
class Meta: class Meta:
model = Operation model = Operation
fields = ['type', 'amount', 'article', 'article_nb'] fields = ['type', 'amount', 'article', 'article_nb']
widgets = { widgets = {
'type': forms.HiddenInput(), 'type': forms.HiddenInput(),
'amount': forms.HiddenInput(), 'amount': forms.HiddenInput(),
'article_nb': forms.HiddenInput(),
} }
def clean(self): def clean(self):
@ -336,22 +342,26 @@ class KPsulOperationForm(forms.ModelForm):
amount = self.cleaned_data.get('amount') amount = self.cleaned_data.get('amount')
article = self.cleaned_data.get('article') article = self.cleaned_data.get('article')
article_nb = self.cleaned_data.get('article_nb') article_nb = self.cleaned_data.get('article_nb')
errors = []
if type_ope and type_ope == Operation.PURCHASE: if type_ope and type_ope == Operation.PURCHASE:
if not article or not article_nb: if not article or article_nb is None or article_nb < 1:
raise ValidationError( errors.append(ValidationError(
"Un achat nécessite un article et une quantité") "Un achat nécessite un article et une quantité"))
if article_nb < 1:
raise ValidationError("Impossible d'acheter moins de 1 article")
elif type_ope and type_ope in [Operation.DEPOSIT, Operation.WITHDRAW]: elif type_ope and type_ope in [Operation.DEPOSIT, Operation.WITHDRAW]:
if not amount or article or article_nb: if not amount or article or article_nb:
raise ValidationError("Bad request") errors.append(ValidationError("Bad request"))
if type_ope == Operation.DEPOSIT and amount <= 0: else:
raise ValidationError("Charge non positive") if type_ope == Operation.DEPOSIT and amount <= 0:
if type_ope == Operation.WITHDRAW and amount >= 0: errors.append(ValidationError("Charge non positive"))
raise ValidationError("Retrait non négatif") elif type_ope == Operation.WITHDRAW and amount >= 0:
errors.append(ValidationError("Retrait non négatif"))
self.cleaned_data['article'] = None self.cleaned_data['article'] = None
self.cleaned_data['article_nb'] = None self.cleaned_data['article_nb'] = None
if errors:
raise ValidationError(errors)
KPsulOperationFormSet = modelformset_factory( KPsulOperationFormSet = modelformset_factory(
Operation, Operation,
form = KPsulOperationForm, form = KPsulOperationForm,