From ad78625351cc06c82dec3d9f6f9ee28ab4b47f03 Mon Sep 17 00:00:00 2001 From: Mono Mono Date: Sun, 30 Jun 2024 01:16:55 -0500 Subject: [PATCH 1/4] feat: generando vista de compra con formularios de django. --- tienda_ilusion/don_confiao/forms.py | 35 +++++++++++++++++++ .../don_confiao/django_purchase.html | 12 +++++++ tienda_ilusion/don_confiao/urls.py | 1 + tienda_ilusion/don_confiao/views.py | 18 ++++++++-- 4 files changed, 63 insertions(+), 3 deletions(-) create mode 100644 tienda_ilusion/don_confiao/templates/don_confiao/django_purchase.html diff --git a/tienda_ilusion/don_confiao/forms.py b/tienda_ilusion/don_confiao/forms.py index a9ef913..4db321a 100644 --- a/tienda_ilusion/don_confiao/forms.py +++ b/tienda_ilusion/don_confiao/forms.py @@ -1,4 +1,39 @@ from django import forms +from django.forms.widgets import DateInput + +from .models import Sale, SaleLine + class ImportProductsForm(forms.Form): csv_file = forms.FileField() + +class PurchaseForm(forms.ModelForm): + class Meta: + model = Sale + fields = [ + "customer", + "date", + "phone", + "description", + ] + widgets = { + 'date': DateInput(attrs={'type': 'date'}) + } + +class PurchaseLineForm(forms.ModelForm): + class Meta: + model = SaleLine + fields = [ + "product", + "quantity", + "unit_price", + "description", + ] + + +LineaFormSet = forms.models.inlineformset_factory( + Sale, + SaleLine, + extra=2, + fields='__all__' +) diff --git a/tienda_ilusion/don_confiao/templates/don_confiao/django_purchase.html b/tienda_ilusion/don_confiao/templates/don_confiao/django_purchase.html new file mode 100644 index 0000000..0d2c2f4 --- /dev/null +++ b/tienda_ilusion/don_confiao/templates/don_confiao/django_purchase.html @@ -0,0 +1,12 @@ + +
+ {% csrf_token %} + {{ sale_form}} + {{ linea_formset.management_form }} + {% for form in linea_formset %} + + {{ form.as_table }} +
+ {% endfor %} +
+
diff --git a/tienda_ilusion/don_confiao/urls.py b/tienda_ilusion/don_confiao/urls.py index a9b716f..27b7915 100644 --- a/tienda_ilusion/don_confiao/urls.py +++ b/tienda_ilusion/don_confiao/urls.py @@ -6,6 +6,7 @@ app_name = 'don_confiao' urlpatterns = [ path("", views.index, name="wellcome"), path("comprar", views.buy, name="buy"), + path("comprar_django", views.django_buy, name="django_buy"), path("compras", views.purchases, name="purchases"), path("productos", views.products, name="products"), path("importar_productos", views.import_products, name="import_products") diff --git a/tienda_ilusion/don_confiao/views.py b/tienda_ilusion/don_confiao/views.py index 671a934..434146b 100644 --- a/tienda_ilusion/don_confiao/views.py +++ b/tienda_ilusion/don_confiao/views.py @@ -3,7 +3,7 @@ from django.http import HttpResponse, HttpResponseRedirect, JsonResponse from django.template import loader from .models import Sale, Product, ProductCategory -from .forms import ImportProductsForm +from .forms import ImportProductsForm, PurchaseForm, LineaFormSet import csv import io @@ -16,11 +16,23 @@ def buy(request): context = {} if request.POST: raise Exception(request.POST) - else: - raise Exception(request.POST) return render( request, 'don_confiao/purchase.html', context) +def django_buy(request): + if request.method == "POST": + raise Exception(request.POST) + else: + sale_form = PurchaseForm() + sale_linea_form = LineaFormSet() + return render( + request, + 'don_confiao/django_purchase.html', + { + 'sale_form': sale_form, + 'linea_formset': sale_linea_form + } + ) def purchases(request): purchases = Sale.objects.all() From 619fa0fcf9e584f73d52b72a584f0bc63f610ae6 Mon Sep 17 00:00:00 2001 From: Mono Mono Date: Sun, 30 Jun 2024 01:33:52 -0500 Subject: [PATCH 2/4] feat: guardando ventas desde formulario. --- tienda_ilusion/don_confiao/views.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tienda_ilusion/don_confiao/views.py b/tienda_ilusion/don_confiao/views.py index 434146b..e2afc3c 100644 --- a/tienda_ilusion/don_confiao/views.py +++ b/tienda_ilusion/don_confiao/views.py @@ -21,7 +21,13 @@ def buy(request): def django_buy(request): if request.method == "POST": - raise Exception(request.POST) + sale_form = PurchaseForm(request.POST) + sale_linea_form = LineaFormSet(request.POST) + if sale_form.is_valid(): + sale_form.save() + if sale_linea_form.is_valid(): + sale_linea_form.save() + return HttpResponseRedirect("productos") else: sale_form = PurchaseForm() sale_linea_form = LineaFormSet() From 32b5a6ec3646f92308da49b9a47253c9cfe8b3a7 Mon Sep 17 00:00:00 2001 From: Mono Mono Date: Sat, 6 Jul 2024 09:26:26 -0500 Subject: [PATCH 3/4] feat: remplazando formulario compra manual por formulario django --- .../don_confiao/django_purchase.html | 12 ----- .../templates/don_confiao/purchase.html | 49 ++++--------------- tienda_ilusion/don_confiao/urls.py | 1 - tienda_ilusion/don_confiao/views.py | 10 +--- 4 files changed, 10 insertions(+), 62 deletions(-) delete mode 100644 tienda_ilusion/don_confiao/templates/don_confiao/django_purchase.html diff --git a/tienda_ilusion/don_confiao/templates/don_confiao/django_purchase.html b/tienda_ilusion/don_confiao/templates/don_confiao/django_purchase.html deleted file mode 100644 index 0d2c2f4..0000000 --- a/tienda_ilusion/don_confiao/templates/don_confiao/django_purchase.html +++ /dev/null @@ -1,12 +0,0 @@ - -
- {% csrf_token %} - {{ sale_form}} - {{ linea_formset.management_form }} - {% for form in linea_formset %} - - {{ form.as_table }} -
- {% endfor %} -
-
diff --git a/tienda_ilusion/don_confiao/templates/don_confiao/purchase.html b/tienda_ilusion/don_confiao/templates/don_confiao/purchase.html index 71b860f..0d2c2f4 100644 --- a/tienda_ilusion/don_confiao/templates/don_confiao/purchase.html +++ b/tienda_ilusion/don_confiao/templates/don_confiao/purchase.html @@ -1,43 +1,12 @@ -
+ {% csrf_token %} -
- Purchase - : - - - : - - - : - - -
- Purchase Line - : - - - : - - - : - - - : - -
-
-
- : - - - - -
-
- -
+ {{ sale_form}} + {{ linea_formset.management_form }} + {% for form in linea_formset %} + + {{ form.as_table }} +
+ {% endfor %} +
diff --git a/tienda_ilusion/don_confiao/urls.py b/tienda_ilusion/don_confiao/urls.py index 27b7915..a9b716f 100644 --- a/tienda_ilusion/don_confiao/urls.py +++ b/tienda_ilusion/don_confiao/urls.py @@ -6,7 +6,6 @@ app_name = 'don_confiao' urlpatterns = [ path("", views.index, name="wellcome"), path("comprar", views.buy, name="buy"), - path("comprar_django", views.django_buy, name="django_buy"), path("compras", views.purchases, name="purchases"), path("productos", views.products, name="products"), path("importar_productos", views.import_products, name="import_products") diff --git a/tienda_ilusion/don_confiao/views.py b/tienda_ilusion/don_confiao/views.py index e2afc3c..1904ab6 100644 --- a/tienda_ilusion/don_confiao/views.py +++ b/tienda_ilusion/don_confiao/views.py @@ -11,15 +11,7 @@ import io def index(request): return render(request, 'don_confiao/index.html') - def buy(request): - context = {} - if request.POST: - raise Exception(request.POST) - return render( - request, 'don_confiao/purchase.html', context) - -def django_buy(request): if request.method == "POST": sale_form = PurchaseForm(request.POST) sale_linea_form = LineaFormSet(request.POST) @@ -33,7 +25,7 @@ def django_buy(request): sale_linea_form = LineaFormSet() return render( request, - 'don_confiao/django_purchase.html', + 'don_confiao/purchase.html', { 'sale_form': sale_form, 'linea_formset': sale_linea_form From 2425ecc8112fa05f8b3dbbfdfaf97499e19110fb Mon Sep 17 00:00:00 2001 From: Mono Mono Date: Sat, 6 Jul 2024 09:30:35 -0500 Subject: [PATCH 4/4] =?UTF-8?q?style:=20agregando=20descripci=C3=B3n=20a?= =?UTF-8?q?=20los=20modelos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tienda_ilusion/don_confiao/models.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tienda_ilusion/don_confiao/models.py b/tienda_ilusion/don_confiao/models.py index 6d40cac..7d7ee0a 100644 --- a/tienda_ilusion/don_confiao/models.py +++ b/tienda_ilusion/don_confiao/models.py @@ -8,6 +8,9 @@ class Sale(models.Model): phone = models.CharField(max_length=13, null=True, blank=True) description = models.CharField(max_length=255, null=True, blank=True) + def __str__(self): + return f"{self.date} {self.customer}" + class SaleLine(models.Model): @@ -17,6 +20,9 @@ class SaleLine(models.Model): unit_price = models.DecimalField(max_digits=9, decimal_places=2) description = models.CharField(max_length=255, null=True, blank=True) + def __str__(self): + return f"{self.sale} - {self.product}" + class MeasuringUnits(models.TextChoices): UNIT = 'UNIT', _('Unit')