mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-02 03:42:26 +02:00
70 lines
2.3 KiB
Python
70 lines
2.3 KiB
Python
from django.contrib.auth import get_user_model
|
|
from django.core.exceptions import NON_FIELD_ERRORS, ValidationError
|
|
from django.db import IntegrityError
|
|
|
|
from la_chariotte.order.models import GroupedOrder, Item
|
|
|
|
from django.forms import ( # isort:skip
|
|
CharField,
|
|
DateInput,
|
|
DateTimeInput,
|
|
ModelForm,
|
|
Textarea,
|
|
TextInput,
|
|
)
|
|
|
|
|
|
class GroupedOrderForm(ModelForm):
|
|
class Meta:
|
|
model = GroupedOrder
|
|
fields = ["name", "deadline", "delivery_date", "place", "description"]
|
|
widgets = {
|
|
"name": TextInput(attrs={"placeholder": "ex : Des oranges pour Noël"}),
|
|
"deadline": DateTimeInput(attrs={"placeholder": "JJ/MM/AAAA HH:MM"}),
|
|
"delivery_date": DateInput(attrs={"placeholder": "JJ/MM/AAAA"}),
|
|
"place": TextInput(attrs={"placeholder": "(facultatif)"}),
|
|
"description": Textarea(
|
|
attrs={
|
|
"placeholder": "Plus d'infos sur la commande groupée ? (facultatif)"
|
|
}
|
|
),
|
|
}
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
self.user = kwargs.pop("user")
|
|
super().__init__(*args, **kwargs)
|
|
|
|
def save(self, commit=True):
|
|
self.instance.orga = get_user_model().objects.get(id=self.user.pk)
|
|
return super().save(commit=commit)
|
|
|
|
def clean(self):
|
|
cleaned_data = self.cleaned_data
|
|
|
|
try:
|
|
GroupedOrder.objects.get(
|
|
name=cleaned_data["name"],
|
|
delivery_date=cleaned_data["delivery_date"],
|
|
orga=get_user_model().objects.get(id=self.user.pk),
|
|
)
|
|
except GroupedOrder.DoesNotExist:
|
|
pass
|
|
else:
|
|
raise ValidationError(
|
|
"Une commande groupée avec le même titre et la même date existe déjà"
|
|
)
|
|
return cleaned_data
|
|
|
|
|
|
class ItemCreateForm(ModelForm):
|
|
class Meta:
|
|
model = Item
|
|
fields = ["name", "price", "max_limit"]
|
|
|
|
def __init__(self, *args, **kwargs):
|
|
self.grouped_order = kwargs.pop("grouped_order") # type: GroupedOrder
|
|
super().__init__(*args, **kwargs)
|
|
|
|
def save(self, commit=True):
|
|
self.instance.grouped_order = GroupedOrder.objects.get(id=self.grouped_order.pk)
|
|
return super().save(commit=commit)
|