Fix: Clean Home, Crear lineas de Venta
This commit is contained in:
parent
7b0bee8313
commit
7223c0c9a9
@ -7,6 +7,7 @@ from .models import Sale, SaleLine
|
||||
class ImportProductsForm(forms.Form):
|
||||
csv_file = forms.FileField()
|
||||
|
||||
|
||||
class PurchaseForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Sale
|
||||
@ -20,6 +21,7 @@ class PurchaseForm(forms.ModelForm):
|
||||
'date': DateInput(attrs={'type': 'date'})
|
||||
}
|
||||
|
||||
|
||||
class PurchaseLineForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = SaleLine
|
||||
|
@ -1,6 +1,7 @@
|
||||
from django.db import models
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
||||
|
||||
class Sale(models.Model):
|
||||
|
||||
customer = models.CharField(max_length=100)
|
||||
@ -23,15 +24,18 @@ class SaleLine(models.Model):
|
||||
def __str__(self):
|
||||
return f"{self.sale} - {self.product}"
|
||||
|
||||
|
||||
class MeasuringUnits(models.TextChoices):
|
||||
UNIT = 'UNIT', _('Unit')
|
||||
|
||||
|
||||
class ProductCategory(models.Model):
|
||||
name = models.CharField(max_length=100, unique=True)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
||||
|
||||
class Product(models.Model):
|
||||
name = models.CharField(max_length=100, unique=True)
|
||||
price = models.DecimalField(max_digits=9, decimal_places=2)
|
||||
|
1
tienda_ilusion/don_confiao/tests/__init__.py
Normal file
1
tienda_ilusion/don_confiao/tests/__init__.py
Normal file
@ -0,0 +1 @@
|
||||
#!/usr/bin/env python3
|
@ -1,13 +1,11 @@
|
||||
from django.test import Client, TestCase
|
||||
from django.contrib.auth.models import AnonymousUser, User
|
||||
from django.conf import settings
|
||||
|
||||
from .views import import_products, products
|
||||
from .models import ProductCategory, Product
|
||||
from ..models import ProductCategory, Product
|
||||
|
||||
import os
|
||||
import json
|
||||
|
||||
|
||||
class TestProducts(TestCase):
|
||||
def setUp(self):
|
||||
self.client = Client()
|
||||
@ -54,7 +52,8 @@ class TestProducts(TestCase):
|
||||
first_categories = {p["name"]: p["categories"] for p in first_products}
|
||||
self._import_csv('example_products2.csv')
|
||||
updated_products = self._get_products()
|
||||
updated_categories = {p["name"]: p["categories"] for p in updated_products}
|
||||
updated_categories = {
|
||||
p["name"]: p["categories"] for p in updated_products}
|
||||
|
||||
self.assertIn('Cafes', first_categories['Arroz'])
|
||||
self.assertNotIn('Granos', first_categories['Arroz'])
|
||||
@ -62,7 +61,6 @@ class TestProducts(TestCase):
|
||||
self.assertIn('Granos', updated_categories['Arroz'])
|
||||
self.assertNotIn('Cafes', updated_categories['Arroz'])
|
||||
|
||||
|
||||
def test_update_price(self):
|
||||
self._import_csv()
|
||||
first_products = self._get_products()
|
@ -1,5 +1,5 @@
|
||||
from django.test import TestCase
|
||||
from .models import Sale, SaleLine
|
||||
from ..models import Sale, SaleLine
|
||||
|
||||
|
||||
class ConfiaoTest(TestCase):
|
@ -1,6 +1,6 @@
|
||||
from django.shortcuts import render
|
||||
from django.http import HttpResponse, HttpResponseRedirect, JsonResponse
|
||||
from django.template import loader
|
||||
from django.http import HttpResponseRedirect, JsonResponse
|
||||
# from django.template import loader
|
||||
|
||||
from .models import Sale, Product, ProductCategory
|
||||
from .forms import ImportProductsForm, PurchaseForm, LineaFormSet
|
||||
@ -8,18 +8,22 @@ from .forms import ImportProductsForm, PurchaseForm, LineaFormSet
|
||||
import csv
|
||||
import io
|
||||
|
||||
|
||||
def index(request):
|
||||
return render(request, 'don_confiao/index.html')
|
||||
|
||||
|
||||
def buy(request):
|
||||
if request.method == "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")
|
||||
if sale_form.is_valid() and sale_linea_form.is_valid():
|
||||
sale = sale_form.save()
|
||||
lines = sale_linea_form.save(commit=False)
|
||||
for line in lines:
|
||||
line.sale = sale
|
||||
line.save()
|
||||
return HttpResponseRedirect("compras")
|
||||
else:
|
||||
sale_form = PurchaseForm()
|
||||
sale_linea_form = LineaFormSet()
|
||||
@ -32,6 +36,7 @@ def buy(request):
|
||||
}
|
||||
)
|
||||
|
||||
|
||||
def purchases(request):
|
||||
purchases = Sale.objects.all()
|
||||
context = {
|
||||
@ -69,14 +74,17 @@ def import_products(request):
|
||||
{'form': form}
|
||||
)
|
||||
|
||||
|
||||
def _categories_from_csv_string(categories_string, separator="&"):
|
||||
categories = categories_string.split(separator)
|
||||
clean_categories = [c.strip() for c in categories]
|
||||
return [_category_from_name(category) for category in clean_categories]
|
||||
|
||||
|
||||
def _category_from_name(name):
|
||||
return ProductCategory.objects.get_or_create(name=name)[0]
|
||||
|
||||
|
||||
def handle_import_products_file(csv_file):
|
||||
data = io.StringIO(csv_file.read().decode('utf-8'))
|
||||
reader = csv.DictReader(data, quotechar='"')
|
||||
|
Loading…
Reference in New Issue
Block a user