diff --git a/la_chariotte/order/forms.py b/la_chariotte/order/forms.py index fe50a71..9f5d950 100644 --- a/la_chariotte/order/forms.py +++ b/la_chariotte/order/forms.py @@ -1,29 +1,23 @@ +from django import forms 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 GroupedOrderForm(forms.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( + "name": forms.TextInput( + attrs={"placeholder": "ex : Des oranges pour Noël"} + ), + "deadline": forms.DateTimeInput(attrs={"placeholder": "JJ/MM/AAAA HH:MM"}), + "delivery_date": forms.DateInput(attrs={"placeholder": "JJ/MM/AAAA"}), + "place": forms.TextInput(attrs={"placeholder": "(facultatif)"}), + "description": forms.Textarea( attrs={ "placeholder": "Plus d'infos sur la commande groupée ? (facultatif)" } @@ -56,7 +50,7 @@ class GroupedOrderForm(ModelForm): return cleaned_data -class ItemCreateForm(ModelForm): +class ItemCreateForm(forms.ModelForm): class Meta: model = Item fields = ["name", "price", "max_limit"] diff --git a/la_chariotte/order/migrations/0017_orderauthor_alter_order_author.py b/la_chariotte/order/migrations/0017_orderauthor_alter_order_author.py new file mode 100644 index 0000000..4de8599 --- /dev/null +++ b/la_chariotte/order/migrations/0017_orderauthor_alter_order_author.py @@ -0,0 +1,49 @@ +# Generated by Django 4.2 on 2023-05-12 09:48 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + dependencies = [ + ("order", "0016_alter_groupedorder_description"), + ] + + operations = [ + migrations.CreateModel( + name="OrderAuthor", + fields=[ + ( + "id", + models.BigAutoField( + auto_created=True, + primary_key=True, + serialize=False, + verbose_name="ID", + ), + ), + ("first_name", models.CharField(verbose_name="Prénom")), + ("last_name", models.CharField(verbose_name="Nom")), + ( + "phone", + models.CharField( + help_text="Pour vous que l'organisateur·ice vous contacte en cas de besoin", + verbose_name="Numéro de téléphone", + ), + ), + ( + "email", + models.CharField( + verbose_name="Pour vous que l'organisateur·ice vous contacte en cas de besoin" + ), + ), + ], + ), + migrations.AlterField( + model_name="order", + name="author", + field=models.ForeignKey( + on_delete=django.db.models.deletion.CASCADE, to="order.orderauthor" + ), + ), + ] diff --git a/la_chariotte/order/models.py b/la_chariotte/order/models.py index 80e2c87..c3d7e77 100644 --- a/la_chariotte/order/models.py +++ b/la_chariotte/order/models.py @@ -9,7 +9,7 @@ from la_chariotte.settings import AUTH_USER_MODEL class GroupedOrder(models.Model): name = models.CharField( max_length=100, null=True, verbose_name="Titre de la commande" - ) # optionnal + ) orga = models.ForeignKey( AUTH_USER_MODEL, on_delete=models.CASCADE, verbose_name="Organisateur·ice" ) @@ -55,13 +55,29 @@ class GroupedOrder(models.Model): ) +class OrderAuthor(models.Model): + """Created when a user orders without having an account - or when a user creates an account""" + + # TODO faire le lien avec CustomUser (CustomUser hérite de OrderAuthor), pour ensuite préremplir quand on est connecté·e + first_name = models.CharField(verbose_name="Prénom") + last_name = models.CharField(verbose_name="Nom") + phone = models.CharField( + verbose_name="Numéro de téléphone", + help_text="Pour vous que l'organisateur·ice vous contacte en cas de besoin", + ) + email = models.CharField( + verbose_name="Pour vous que l'organisateur·ice vous contacte en cas de besoin" + ) + + def __str__(self): # pragma: no cover + return f"{self.first_name} {self.last_name}" + + class Order(models.Model): grouped_order = models.ForeignKey( GroupedOrder, on_delete=models.CASCADE, related_name="order_set" ) - author = models.CharField( - max_length=100, verbose_name="Personne qui passe la commande" - ) # a changer, utiliser ForeignKey de user + author = models.ForeignKey(OrderAuthor, on_delete=models.CASCADE) def __str__(self): # pragma: no cover return f"Commande de {self.author} pour la commande groupée {self.grouped_order.pk}" @@ -85,7 +101,7 @@ class Item(models.Model): class OrderedItem(models.Model): - """Item in one specific Order, and its number""" + """Item in one specific Order, and the number of articles""" nb = models.PositiveSmallIntegerField(default=0) # works up to 32767 order = models.ForeignKey( diff --git a/la_chariotte/order/templates/order/grouped_order_add_items.html b/la_chariotte/order/templates/order/grouped_order_add_items.html index 885d3e8..85b6813 100644 --- a/la_chariotte/order/templates/order/grouped_order_add_items.html +++ b/la_chariotte/order/templates/order/grouped_order_add_items.html @@ -26,15 +26,15 @@