feat: added users app
This commit is contained in:
+1
-1
@@ -11,7 +11,6 @@ class ProductAdmin(ModelAdmin):
|
||||
"id",
|
||||
"name",
|
||||
"stock",
|
||||
"unit",
|
||||
)
|
||||
|
||||
|
||||
@@ -24,6 +23,7 @@ class ProductPriceAdmin(ModelAdmin):
|
||||
"product",
|
||||
"price",
|
||||
"date",
|
||||
"tax",
|
||||
)
|
||||
|
||||
|
||||
|
||||
+26
-11
@@ -1,25 +1,49 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from files.api.v1.serializers import FileUploadSerializer
|
||||
from shop.models import Product, ProductPrice, Customer, Tax, OrderLine, Order
|
||||
|
||||
|
||||
class ProductSerializer(serializers.ModelSerializer):
|
||||
images = FileUploadSerializer(many=True, read_only=True)
|
||||
price = serializers.SerializerMethodField()
|
||||
|
||||
def get_price(self, product):
|
||||
last_price = product.prices.last()
|
||||
|
||||
return ProductPriceSerializer(last_price).data
|
||||
|
||||
class Meta:
|
||||
model = Product
|
||||
fields = (
|
||||
"name",
|
||||
"description",
|
||||
"stock",
|
||||
"unit",
|
||||
"is_digital_asset",
|
||||
"images",
|
||||
"price",
|
||||
)
|
||||
|
||||
|
||||
class TaxSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Tax
|
||||
fields = (
|
||||
"code",
|
||||
"value",
|
||||
)
|
||||
|
||||
|
||||
class ProductPriceSerializer(serializers.ModelSerializer):
|
||||
tax = TaxSerializer()
|
||||
|
||||
class Meta:
|
||||
model = ProductPrice
|
||||
fields = (
|
||||
"price",
|
||||
"date",
|
||||
"product",
|
||||
"tax",
|
||||
"price_with_tax",
|
||||
)
|
||||
|
||||
|
||||
@@ -39,15 +63,6 @@ class CustomerSerializer(serializers.ModelSerializer):
|
||||
)
|
||||
|
||||
|
||||
class TaxSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Tax
|
||||
fields = (
|
||||
"code",
|
||||
"value",
|
||||
)
|
||||
|
||||
|
||||
class OrderSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = Order
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
# Generated by Django 5.0.3 on 2024-05-04 22:12
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("files", "0001_initial"),
|
||||
("shop", "0001_initial"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(
|
||||
model_name="product",
|
||||
name="unit",
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="order",
|
||||
name="status",
|
||||
field=models.CharField(default="PEN", max_length=3, verbose_name="Estado"),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="product",
|
||||
name="images",
|
||||
field=models.ManyToManyField(
|
||||
blank=True, to="files.fileupload", verbose_name="Imágenes"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="product",
|
||||
name="is_digital_asset",
|
||||
field=models.BooleanField(default=False),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="product",
|
||||
name="url",
|
||||
field=models.URLField(blank=True, verbose_name="URL de descarga"),
|
||||
),
|
||||
]
|
||||
+5
-2
@@ -26,7 +26,10 @@ class Product(models.Model):
|
||||
verbose_name=_("Stock"),
|
||||
)
|
||||
is_digital_asset = models.BooleanField(default=False)
|
||||
url = models.URLField(blank=True, verbose_name=_('URL de descarga'))
|
||||
url = models.URLField(blank=True, verbose_name=_("URL de descarga"))
|
||||
images = models.ManyToManyField(
|
||||
"files.FileUpload", blank=True, verbose_name=_("Imágenes")
|
||||
)
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
@@ -58,7 +61,7 @@ class ProductPrice(models.Model):
|
||||
|
||||
@property
|
||||
def price_with_tax(self):
|
||||
tax_value = self.price * (self.tax.value / 100)
|
||||
tax_value = self.price * Decimal(self.tax.value / 100)
|
||||
return round(self.price + tax_value, 2)
|
||||
|
||||
class Meta:
|
||||
|
||||
@@ -16,17 +16,14 @@ class ShopModelsTest(TestCase):
|
||||
self.potatoes = Product.objects.create(
|
||||
name="Patatas",
|
||||
stock=Decimal("100.00"),
|
||||
unit=Product.UnitChoices.WEIGHT_KG,
|
||||
)
|
||||
self.gasoline = Product.objects.create(
|
||||
name="Gasolina",
|
||||
stock=Decimal("800.00"),
|
||||
unit=Product.UnitChoices.VOLUME_LITER,
|
||||
)
|
||||
self.usb_c = Product.objects.create(
|
||||
name="Cable USB-C",
|
||||
stock=Decimal("5.00"),
|
||||
unit=Product.UnitChoices.UNIT,
|
||||
)
|
||||
|
||||
ProductPrice.objects.create(
|
||||
|
||||
Reference in New Issue
Block a user